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.
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>
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.
Con PHP 5.4 funziona perfettamente.
La porzione di codice incriminata è la seguente.
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);
Mi spiegate come ovviare al problema ?
Grazie per l'aiuto.