Ciao a tutti, ho una pagina di un mio sito che funziona perfettamente con PHP 5.4 ma smette di funzionare con PHP 5.6 ed il problema è nella clausola GROUP BY.
La pagina è la seguente.
Il problema è che io devo estrarre una foto per ogni anno in modo da generare i link ai vari anni per richiamare tutte le foto di un anno scelto dall'utente.codice:<?PHP $linguetta = "Gianluca Verna - Foto Rally"; include ("header.php"); echo "<div id=\"box-grande\">"; include ("link_orizzontali.php"); echo "<div id=\"colonna_sx\">"; echo "<br><br><br>"; include ("link_verticali_rally.php"); echo "</div>"; echo "<div id=\"colonna_dx\">"; echo "<br><br><br>"; require_once 'ycpager/anni.class.ycpager.php'; //Connessione al database $mysqli = new mysqli("$dbhost", "$dbuser", "$dbpass"); $mysqli->select_db("$dbname"); //Ottengo il numero delle pagine totali. $total = mysqli_query ($mysqli,"SELECT * FROM fotografie_rally GROUP BY anno ORDER BY orientamento, anno DESC"); $numero_anni = mysqli_num_rows ($total); if($numero_anni > 0) { $limite = 20; //Pagina attuale $p = !empty($_GET['p']) ? $_GET['p'] : 1; $redirect_to = "foto_rally.php"; //Inizializzo YCPager $pager = new YCPager( $p, $numero_anni, $limite, $redirect_to ); //Ottengo l'Offset da usare nella query successiva $offset = $pager->getQueryOffset(); mysqli_close($mysqli); echo "<table style=\"width: 800px\" class=\"style9\" align=\"center\">"; echo "<tr>"; echo "<td align=\"center\" style=\"height: 35px\">"; echo "<strong>"; echo "LE FOTOGRAFIE DEI RALLY"; echo "</strong>"; echo "</td>"; echo "</tr>"; echo "</table>"; echo "<br>"; echo "<Table Width=\"90%\" align=\"center\">"; $mysqli = new mysqli("$dbhost", "$dbuser", "$dbpass"); $mysqli->select_db("$dbname"); $result = mysqli_query ($mysqli,"SELECT * FROM fotografie_rally GROUP BY anno ORDER BY orientamento ASC,anno DESC LIMIT $limite OFFSET $offset"); $num = mysqli_num_rows ($result); $end=1; $i=1; // contatore while($row = mysqli_fetch_assoc($result)) { $file = $row['nome_file']; $anno = $row['anno']; $title = $row['anno']; $subtitle = "ANNO $anno"; if ($anno == 2004) { $title = "PRIMA DEL 2005"; $subtitle = "PRIMA DEL 2005"; } list($width, $height) = getimagesize("fotografie_rally/miniature/$file"); if (($width) <= ($height)) { $visualizza = "<Img Src=\"fotografie_rally/miniature/$file\" Height=$height Border=\"1\" alt=\"$title\" title=\"$title\">"; } if (($height) <= ($width)) { $visualizza = "<Img Src=\"fotografie_rally/miniature/$file\" Width=$width Border=\"1\" alt=\"$title\" title=\"$title\">"; } if ($i==1) { echo "<tr>"; } //Apro una nuova riga echo "<Td>"; echo "<Table align=\"center\" Cellpadding=\"0\" Cellspacing=\"3\">"; echo "<Tr>"; echo "<Td Valign=bottom style=\"height: 120px\">"; echo "<center><a href=\"dettaglio_foto_rally.php?anno=$anno\" class=\"border\">"; echo "$visualizza</a></center>"; echo "</Td>"; echo "</Tr>"; echo "<Tr>"; echo "<Td Valign=Top class=\"style_denominazione\">"; echo "<center><a href=\"dettaglio_foto_rally.php?anno=$anno\" class=\"border\">"; echo "<b>$subtitle</b></a></center>"; echo "</Td>"; echo "</Tr>"; echo "</Table>"; echo "</Td>"; if ($end == $num) break; else { if($i==4) { echo "</tr>"; $i=1; $end++; } //ho finito di inserire gli elementi della riga e la chiudo else { $i++; $end++; } } } //fine while echo "</Tr>"; echo "</Table>"; echo "<br>"; if($numero_anni > 20) { $limite = 20; //Stampo la paginazione $pager->getPager(); } mysqli_close($mysqli); } else { echo "<br><br><br> <table Width=\"90%\" class=\"style9\" align=\"left\"> <tr> <td> <p align=\"left\"><b> <br> <br> <br> NESSUNA FOTO IN ARCHIVIO</b></p> </td> </tr> </table> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>"; } echo "</div>"; echo "</div>"; echo "<br><br>"; include ("footer.php"); ?> </body> </html>
Con PHP 5.4 funziona perfettamente.
La porzione di codice incriminata è la seguente.
Mi spiegate come ovviare al problema ?codice://Connessione al database$mysqli = new mysqli("$dbhost", "$dbuser", "$dbpass"); $mysqli->select_db("$dbname"); //Ottengo il numero delle pagine totali. $total = mysqli_query ($mysqli,"SELECT * FROM fotografie_rally GROUP BY anno ORDER BY orientamento, anno DESC"); $numero_anni = mysqli_num_rows ($total);
Grazie per l'aiuto.

Rispondi quotando

