• User

    Visualizzare dati MYSQL in diverse tabelle

    Ciao ragazzi,
    ho scritto uno script che mi permette di visualizzare i dati che ho inserito nel database in una tabella. Funziona tutto alla perfezione.
    Un campo del mio database si chiama "sezione";
    siccome risulta poco comodo ottenere un'unica tabella con tutti i dati, vorrei creare una tabella diversa per ogni sezione, in modo da avere una videata più semplice.

    Il codice che mi genera la tabella è questo:
    [PHP]$query = "SELECT * from ordini";
    $dbResult = mysql_query($query, $db);
    $AffectedRows = mysql_affected_rows($db);

    print "<table border= "1" >\n";

    for ($index = 0; $index<$AffectedRows ; $index++)
    {
    $row = mysql_fetch_row ($dbResult);

    if ($index==0)
    {print "<tr>\n";
    foreach ($row as $k => $v)
    	{
    	$myfield = mysql_fetch_field ($dbResult, $k);
    	print ("<td><b>" . $myfield->name . "</b></td>");
    	}
    	print "</tr>\n";
    }
    
    foreach ($row as $k => $v)
    {
    	if ($k!=1) {print ("<td>$v&nbsp;");};
    	if ($k==0)
    	{
    		print "<br>";
    		print "<a href=\"cancella.php?id=$v\">Cancella</a>";
    		print "<br>";
    		print "<a href=\"modifica.php?id=$v\">Modifica</a>";
    	}
    	print ("</td>\n");
    
    	if ($k==1)
    	{
    	print "<td><img class=prodotti src=img/prodotti/past_fresca/".$v." />";	
    	}
    }
    		print ("</tr>\n");
    }
    
    
    print "</table>\n";
    
    mysql_free_result ($dbResult);
    mysql_close ($db);[/PHP]
    

    Ho provato ad aggiungere la clausola WHERE sezione = ___ nella SELECT, ma ottengo questo errore:

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\gocce_di_cioccolato\lista_prodotti.php on line 45

    e la tabella comunque rimane vuota, nonostante i dati siano presenti.

    Attendo un vostro aiuto!
    Vi ringrazio della disponibilità, Lorenzo


  • ModSenior

    Ciao lurex89,
    aggiungi un or die(mysql_error()); alla funzione mysql_query per ottenere l'errore.
    Comunque se il where lo hai aggiunto esattamente come hai scritto qui, mancano gli apici per la stringa.


  • User

    ok, funziona, mi ero effettivamente dimenticato gli apici...
    detto questo, è possibile creare con un ciclo che crea una tabella per ogni sezione, anzichè copiare e incollare cambiando solamente il nome della sezione nella query?


  • User

    ok, ci sono riuscito, si può chiudere!

    <?php

    $nomesezione = array ("past_fresca", "past_secca", "salatini");
    foreach ($nomesezione as $numero => $nome)
    {
    $query = "SELECT * from ordini WHERE sezione = '$nome'";
    $dbResult = mysql_query($query, $db) or die (mysql_error());
    $AffectedRows = mysql_affected_rows($db);

    print "<h2>$nome</h2>";
    print "<table border= "1" >\n";

    for ($index = 0; $index<$AffectedRows ; $index++)
    {
    $row = mysql_fetch_row ($dbResult);

    if ($index==0)
    {print "<tr>\n";
    foreach ($row as $k => $v)
    	{
    	$myfield = mysql_fetch_field ($dbResult, $k);
    	print ("<td><b>" . $myfield->name . "</b></td>");
    	}
    	print "</tr>\n";
    }
    
    foreach ($row as $k => $v)
    {
    	if ($k!=1) {print ("<td>$v&nbsp;");};
    	if ($k==0)
    	{
    		print "<br>";
    		print "<a href=\"cancella.php?id=$v\">Cancella</a>";
    		print "<br>";
    		print "<a href=\"modifica.php?id=$v\">Modifica</a>";
    	}
    	print ("</td>\n");
    
    	if ($k==1)
    	{
    	print "<td><img class=prodotti src=img/prodotti/".$nome."/".$v." />";	
    	}
    }
    		print ("</tr>\n");
    }
    
    
    print "</table>\n";
    

    };

    mysql_free_result ($dbResult);
    mysql_close ($db);
    ?>