Paginazione, ordine alfabetico e array

RedWolf

Nuovo Utente
7 Mag 2009
22
0
0
Roma
www.antrocom.org
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

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:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
c'è una cosa che non ho capito, se concateni:
PHP:
$paginazione .= "<a href=\"?page=$i&ordercampo=";
a
PHP:
$paginazione .= "&order=".$_GET['order']."\" title=\"Vai alla pagina $i\">$i</a> ";

quale parametro dovresti passare a "ordercampo"?
 

RedWolf

Nuovo Utente
7 Mag 2009
22
0
0
Roma
www.antrocom.org
Giusta domanda! ;) Dovrei passare il nome del campo/colonna, cioè quello che nel codice dei link è indicato come $campo[0], $campo[1] ecc., ovvero gli elementi dell'array "$campo".
In origine i nomi delle colonne erano "in chiaro" (nome, cognome, username...), ma poi ho capito che dovevo passare una variabile: come si fa a sapere a priori, infatti, quale colonna ha usato un utente per ordinare i dati?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
non so se ho capito bene la meccanica del tuo script, però da quello che scrivi prima dovrebbe essere (dalla seconda pagina in poi):
PHP:
$paginazione .= "<a href=\"?page=$i&ordercampo=".$_GET['ordercampo'];
nella prima, a priori, dovrebbe essere:
PHP:
$paginazione .= "<a href=\"?page=$i&ordercampo=utenti.id";
 
Ultima modifica:

RedWolf

Nuovo Utente
7 Mag 2009
22
0
0
Roma
www.antrocom.org
Dopo aver letto la tua risposta, ho avuto la tentazione di telefonare al mio medico, esporre il problema e chiedere se ero grave... :p Va bene perdersi in un bicchier d'acqua, ma dimenticare così una variabile settata apposta e incaponirsi sugli elementi di un array...
Grazie Eliox, soprattutto per la pazienza! :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Errore 80040220 nella newsletter con paginazione Classic ASP 0
motleyrulez Paginazione Tabella Bootstrap Javascript 2
B [Java] Paginazione in risposta HTTP Java 0
L [PHP] paginazione con classi vendor PHP 2
K [PHP] Paginazione Wordpress: passare variabile PHP 6
A [PHP] If e Else paginazione ok ci sono risultati no ma avanti lo stesso PHP 15
paloppa [PHP] paginazione con ajax PHP 1
O paginazione php mysql PHP 10
A [PHP] limitare counter paginazione PHP 7
V [ASP] paginazione-risultati-query-grandi-dimensioni Classic ASP 8
A [PHP] Problema paginazione motore di ricerca PHP 48
A [PHP] inserire paginazione su script php/mysql PHP 6
Marcello.Fiore Paginazione jQuery - PHP jQuery 2
elpirata [PHP] Paginazione dati estratti da una query con più condizioni PHP 17
X come modificare paginazione del tutorial PHP 0
MarcoGrazia Problema con bootstrap, saltata tutta la paginazione in IE8 HTML e CSS 1
F paginazione record di una query Classic ASP 5
Luca13 ASP Easy-News paginazione Classic ASP 2
G Problema di Indice e Paginazione PHP 5
L articolo: Paginazione dei dati presenti in un file di testo - informazioni PHP 2
M Paginazione di risultati query mysql PHP 2
D Paginazione dati PDO PHP 8
zorro Help paginazione PHP 10
M Problema su numerazione paginazione php PHP 6
D [risolto] Problemi di paginazione dei risultati con una determinata query Classic ASP 4
L paginazione testo senza troncare le parole PHP 3
L testare una paginazione "Creazione di 1000 dati random in una tabella" PHP 7
L problema paginazione con valori -1 -2 -3 -4 PHP 0
N Paginazione con invio modulo PHP 0
L Paginazione file di testo PHP 3
N Script paginazione PHP 0
N Paginazione PHP 2
felino Pagina di ricerca: la paginazione non funziona WordPress 0
xone Evitare Meta Tag duplicati su paginazione php PHP 2
filippino Paginazione file txt con PHP? PHP 1
felino PHP e Paginazione Jquey PHP 2
H [RISOLTO] paginazione PHP + mysql PHP 15
M Problema Paginazione con Mod_rewrite .htaccess PHP 0
J Paginazione PHP in jQuery UI Tabs jQuery 13
ste80 interazione PHP Access con paginazione PHP 7
W Problema eliminazione ultimo record da ultima pagina di crud con paginazione PHP 2
L Paginazione con pdo. PHP 8
G Paginazione php utilizzando le api di careerjet PHP 0
G Paginazione php utilizzando le api di careerjet WordPress 1
S paginazione PHP 2
L Paginazione file evitare di inserire questi \ o altro nella get PHP 1
K problemi con paginazione tabella PHP 7
L Creare paginazione numerica PHP 3
L Problema paginazione che ripete i dati doppi PHP 1
L Paginazione elenco File da una cartella PHP 11

Discussioni simili