Newsgroup: it.comp.www.php
Titolo: [HELP] Printare record in una tabella

Se volessi printare tutti i record di una tabella del mio database 
indipendentemente dal loro numero (che naturalmente crescerà col tempo) in 
una tabella composta da x righe e 3 colonne come si può fare?
Naturalmente le colonne resteranno sempre tre ma le righe saranno in 
proporzione del numero dei record
Php-mysql
Grazie :-) 



tipo.
$q="SELECT campo_1, campo_2, campo_3  from miatab";
$r=mysql_query($q,$db) or die(mysql_error());
while($ris=mysql_fetch_assoc($r))
	{
$m[]=$ris;
	}
echo "<table>";
for($i=0;$i<count($m); $i++)
	{
echo "<tr>";
echo "<td>".$m[$i]['campo_1']."</td>";
echo "<td>".$m[$i]['campo_2']."</td>";
echo "<td>".$m[$i]['campo_3']."</td>";
echo "</tr>";
	}
echo "</table>";

No... io intendevo estrarre ad esempio il campo "nome" dalla tabella 
"prodotti"
e printarli in una tabella di 3 colonne e x righe
Quindi potrei avere ad esempio 16 record e finirei quindi
per avere, in automatico, printandola, una tabella di 6 righe e tre colonne, 
le ultime
due dell'ultima riga ovviamente vuote.
Se avessi invece 38 record printerei in automatico una tabella di 13 righe e 
3 colonne,
l'ultima colonna dell'ultima riga vuota.
E cosě via.
Spero di essere stato piů chiaro ora :-) 

Spero di essere stato più chiaro ora :-) 
Ah, ecco.
Beh, una volta che hai il tuo array $m come creato sopra:
echo "<table><tr>";
//righe
for($i=0; $i<(count($m_m)/$num_col); $i++)
	{
	//colonne
	for($j=0; $j<$num_col; $j++)
		{
		//se c'è scrivi il nome altrimenti una cella vuota
		if(isset($m_m[$i*$num_col+$j]['nome']))
		echo "<td>".$m_m[$i*$num_col+$j]['nome']."</td>";
		else
		echo "<td>&nbsp;</td>";
 
		//se è l'ultima cella scrivo il </tr>
		if($j==($num_col-1))
			{
			echo "</tr>";
			//se è l'ultima riga 
			if((count($m_m)-($i*$num_col))>$num_col)
			echo "<tr>";
			}
		}
 
	}
echo "</table>";
...ottimizzabile sicuramente.

 e printarli in una tabella di 3 colonne e x righe
Non so cosa stai facendo, ma secondo me è utile anche estrarre dal 
database l'id/campo univoco dei prodotti, in modo che volendo lo puoi 
utilizzare per linkare la pagina descrittiva del prodotto o qualcosa di 
simile.
Una volta eseguita la query potresti utilizzare un codice simile a questo:
//--------
while ($ris = mysql_fetch_assoc($r)) {
     $prodotti[$ris['id']] = $ris['nome'];
}
$colonne = 3; // Numero di colonne desiderate
$count = 0;
$totale = 0; // Conterrà il totale delle celle scritte
echo '<table>';
foreach ($prodotti as $id => $nome) {
     $count++;
     $totale++;
     $cella = "<td><a href=\"./index.php?prodotto=$id\">$nome</a></td>";
     switch ($count) {
         case 1:
             echo '<tr>' . $cella;
             break;
         case $colonne:
	    echo $cella . '</tr>';
	    $count = 0;
	    break;
         default:
	    echo $cella;
	    break;
     }
}
// serve per riempire l'ultima riga con le celle mancanti e chiuderla
if ($modulo = $totale % $colonne) {
     for ($i=1; $i<=($colonne - $modulo); $i++) {
       echo '<td>&nbsp;</td>';
     }
     echo '</tr>';
}
echo '</table>';
//----------
Naturalmente è soltanto un esempio e ci potrebbero essere metodi molto 
più eleganti per scriverlo, ma è la prima cosa che mi è venuta in mente :-P
foreach -> 
http://it.php.net/manual/it/control-structures.foreach.php
switch -> 
http://it.php.net/manual/it/control-structures.switch.php