Ciao a tutti!
Quando si parla di perdersi in un bicchiere d'acqua sono un campione. Sto facendo una pagina php in cui vengono listati e paginati i risultati di una query verso un database mySQL.
Visto che la lista è molto lunga, ho pensato di dare la possibilità di ordinare in ordine alfabetico i dati, cliccando sul nome della colonna corrispondente.
Ho preso due script trovati a suo tempo in rete e li ho uniti alla bisogna. Separatamente funzionano, ma non riesco a far passare, nel link della paginazione, l'elemento dell'array che corrisponde proprio al nome della colonna. Come potrei fare?
Ho provato anche una querystring, prendendo spunto da http://forum.mrwebmaster.it/php/7101-passare-vettore-querystring.html, ma si vede che stasera non ci sto priprio dentro! :|
Di seguito posto il codice PHP con le parti salienti, se volete dare un'occhiata sto lavorando su: http://www.antrocom.org/annuario/list.php
Quando si parla di perdersi in un bicchiere d'acqua sono un campione. Sto facendo una pagina php in cui vengono listati e paginati i risultati di una query verso un database mySQL.
Visto che la lista è molto lunga, ho pensato di dare la possibilità di ordinare in ordine alfabetico i dati, cliccando sul nome della colonna corrispondente.
Ho preso due script trovati a suo tempo in rete e li ho uniti alla bisogna. Separatamente funzionano, ma non riesco a far passare, nel link della paginazione, l'elemento dell'array che corrisponde proprio al nome della colonna. Come potrei fare?
Ho provato anche una querystring, prendendo spunto da http://forum.mrwebmaster.it/php/7101-passare-vettore-querystring.html, ma si vede che stasera non ci sto priprio dentro! :|
Di seguito posto il codice PHP con le parti salienti, se volete dare un'occhiata sto lavorando su: http://www.antrocom.org/annuario/list.php
PHP:
<?
//PAGINAZIONE
// esecuzione prima query
$count = mysql_query("SELECT COUNT(id) FROM utenti");
$res_count = mysql_fetch_row($count);
// numero totale di records
$tot_records = $res_count[0];
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 10;
// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);
// pagina corrente
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;
//FINE PRIMA PARTE PAGINAZIONE
// definisco le variabili per mettere in ordine alfabetico i record: al primo click sul nome della colonna, OrdinaVerso sarà ASC, al secondo click DESC
if(empty($_GET['ordercampo']))
$_GET['ordercampo'] = "utenti.id";
if(empty($_GET['order']))
$_GET['order'] = "asc";
if($_GET['order']=="asc") {$ordinaVerso = "desc";}
if($_GET['order']=="desc") {$ordinaVerso = "asc";}
// i nomi dei campi sono posti in un array per essere listati in HTML
$campo= array ("cognome","nome","username");
//query principale database con il LIMIT di paginazione
$result=mysql_query("SELECT * FROM utenti ORDER BY $_GET[ordercampo] $ordinaVerso LIMIT $primo, $per_page");
// ora listo i nomi delle colonne come link: se ci clicco ordino ASC o DESC.
?>
<td><a href="list.php?ordercampo=<?echo"$campo[0]";?>&order=<? echo"$ordinaVerso";?>">Cognome</a></td>
<td><a href="list.php?ordercampo=<?echo"$campo[1]";?>&order=<? echo"$ordinaVerso";?>">Nome</a></td>
<td><a href="list.php?ordercampo=<?echo"$campo[2]";?>&order=<? echo"$ordinaVerso";?>">Cognome</a></td>
<?
// Ora faccio la lista dei risultati in un ciclo while
while ($row = mysql_fetch_array($result))
{
echo"
<td>$row[cognome]</font></td>
<td>$row[nome]</font></td>
<td>$row[username]</font></td>
";
}
// RICOMINCIA LA PAGINAZIONE
// scrivo le pagine totali
$paginazione = "Pagine totali: " . $tot_pages . "
[";
for($i = 1; $i <= $tot_pages; $i++) {
if($i == $current_page) {
$paginazione .= $i . " ";
} else {
// inserisco nel link il numero di pagina
$paginazione .= "<a href=\"?page=$i&ordercampo=";
// QUI DOVREI INSERIRE IL NOME DELLA COLONNA TRATTA DALL'ARRAY $campo
// inserisco nel link se ordinare ASC o DESC
$paginazione .= "&order=".$_GET['order']."\" title=\"Vai alla pagina $i\">$i</a> ";
}
}
$paginazione .= "]";
// scrivo i numeri delle pagine
echo $paginazione;
?>
Ultima modifica: