Salve a tutti.
Ho 2 tabelle:
- noleggi (id, data, gioco, socio);
- giochi (di cui mi interessa solo il campo nome e numscaff per metterlo in relazione con l'altra tabella).
Ciò che vorrei visualizzare da queste due tabelle è, in pratica, una tabella html con la classifica settimanale dei giochi più noleggiati.
Il problema nasce nel momento in cui vado a inserire nei <th></th> della tabella due link che modifichino l'ordine dei risultati.
Per essere più chiaro posto il codice che ho realizzato finora:
Chiedo scusa se non lo spezzetto, ma credo che visto nel suo insieme risulti più chiaro.
Richiamando la pagina 'statsett.php' la tabella viene visualizzata correttamente, in ordine decrescente per 'class' (ovvero il conteggio), ma se clicco sui link dei <th></th> non succede nulla, eccezion fatta per il <th>NOLEGGI</th> che me lo riordina in maniera crescente (ma non in decrescente).
Qualche anima pia che mi aiuta a capire dove sto sbagliando?
Ho 2 tabelle:
- noleggi (id, data, gioco, socio);
- giochi (di cui mi interessa solo il campo nome e numscaff per metterlo in relazione con l'altra tabella).
Ciò che vorrei visualizzare da queste due tabelle è, in pratica, una tabella html con la classifica settimanale dei giochi più noleggiati.
Il problema nasce nel momento in cui vado a inserire nei <th></th> della tabella due link che modifichino l'ordine dei risultati.
Per essere più chiaro posto il codice che ho realizzato finora:
Codice:
<body>
<?php
include_once('conn.php');
$order = $_GET['order'] != "" ? $_GET['order'] : "class";
$az = $_GET['az'] != "" ? $az : "DESC";
?>
<h2>CLASSIFICA SETTIMANALE</h2>
</div>
<table>
<tr>
<th>N°</th>
<th><a href="statsett.php?order=ns">Numero Scaffale</a><br /><a href="statsett.php?order=ns&az=ASC"><img src="img/up.png" alt="ASC"/></a> <a href="statsett.php?order=ns&az=DESC"><img src="img/down.png" alt="DESC"/></a></th>
<th><a href="statsett.php?order=gioco">Gioco</a><br /><a href="statsett.php?order=gioco&az=ASC"><img src="img/up.png" alt="ASC"/></a> <a href="statsett.php?order=gioco&az=DESC"><img src="img/down.png" alt="DESC"/></a></th>
<th><a href="statsett.php?order=class">Noleggi</a><br /><a href="statsett.php?order=class&az=ASC"><img src="img/up.png" alt="ASC"/></a> <a href="statsett.php?order=class&az=DESC"><img src="img/down.png" alt="DESC"/></a></th>
</tr>
<?php
$x_pag = 25;
// Recupero il numero di pagina corrente.
// Generalmente si utilizza una querystring
$pag = isset($_GET['pag']) ? $_GET['pag'] : 1;
// Controllo se $pag è valorizzato e se è numerico
// ...in caso contrario gli assegno valore 1
if (!$pag || !is_numeric($pag)) $pag = 1;
// Uso mysql_num_rows per contare il totale delle righe presenti all'interno della tabella
$all_rows = mysql_num_rows(mysql_query("SELECT noleggi.gioco AS ns, COUNT(*) AS class, giochi.nome AS gioco FROM noleggi INNER JOIN giochi ON giochi.numscaff = noleggi.gioco WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= data GROUP BY gioco ORDER BY $order $az"));
// Tramite una semplice operazione matematica definisco il numero totale di pagine
$all_pages = ceil($all_rows / $x_pag);
// Calcolo da quale record iniziare
$first = ($pag - 1) * $x_pag;
// Recupero i record per la pagina corrente...
// utilizzando LIMIT per partire da $first e contare fino a $x_pag
$rs = mysql_query("SELECT noleggi.gioco AS ns, COUNT(*) AS class, giochi.nome AS gioco FROM noleggi INNER JOIN giochi ON giochi.numscaff = noleggi.gioco WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= data GROUP BY gioco ORDER BY $order $az LIMIT $first, $x_pag");
$nr = mysql_num_rows($rs);
if ($nr != 0){
for($x = 0; $x < $nr; $x++){
$row = mysql_fetch_assoc($rs);
$id=$row['id'];
$nr = mysql_num_rows($rs);
?>
<tr>
<td><??></td>
<td><?=$row['ns'];?></td>
<td><?=$row['gioco']; ?></td>
<td><?=$row['class']; ?></td>
</tr>
<?php
}
}
?>
</table>
<div id="pgs">
<?php
if ($all_pages > 1){
if ($pag > 1){
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?id=".$id."&pag=" . ($pag - 1) . "\">";
echo "<img src='img/left.png' alt=''></a> ";
}
// faccio un ciclo di tutte le pagine
for ($p=1; $p<=$all_pages; $p++) {
// per la pagina corrente non mostro nessun link ma la evidenzio in blod
// all'interno della sequenza delle pagine
if ($p == $pag) echo "<b>" . $p . "</b> ";
// per tutte le altre pagine stampo il link
else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?id=".$id."&pag=". $p . "\">";
echo $p . "</a> ";
}
}
if ($all_pages > $pag){
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?id=".$id."&pag=" . ($pag + 1) . "\">";
echo "<img src='img/right.png' alt=''></a>";
}
}
?>
</body>
Chiedo scusa se non lo spezzetto, ma credo che visto nel suo insieme risulti più chiaro.
Richiamando la pagina 'statsett.php' la tabella viene visualizzata correttamente, in ordine decrescente per 'class' (ovvero il conteggio), ma se clicco sui link dei <th></th> non succede nulla, eccezion fatta per il <th>NOLEGGI</th> che me lo riordina in maniera crescente (ma non in decrescente).
Qualche anima pia che mi aiuta a capire dove sto sbagliando?
Ultima modifica: