- Home
- Categorie
- Coding e Sistemistica
- PHP
- Paginazione continuativa ordinata per ID, per Data, per Altro
-
Paginazione continuativa ordinata per ID, per Data, per Altro
Usando il classico esempio di paginazione in php riportato su html.it sono riuscito a paginare circa 10500 record ordinandoli per il loro ID.
Ora vorrei passare oltre.
Supponiamo che per i record io abbia:
ID
DATA
TITOLOEcco cosa vorrei fare:
con un'unica pagina vorrei che quando l'utente vi accede essa di default mi ordini i record per ID partendo dall'ultimo ed andando verso il primo.In tale pagina vorrei fare una specie di form oppure dei links che mi dicano:
ordina i record per data (e magari di fianco un select Asc oppure desc).Ecco che la stessa pagina mi ordina i record nel modod scelto.
PEROOOOOOOOO... devo fare in modo che cliccando sui link alle pagine 2, 3, 48, 49, ultima la pagina mi visualizzasse i record secondo il criterio stabilito.
Mi spiego con un esempio.
Entro e le vedo ordinate per ID. Vado a pagina 48 e sono ordinate per ID.In fondo pagina scelgo: ORDINA PER DATA, ASCENTENDENTE e clicco ok. Dai ora i record sono ordinati per data. Se ora clicco al link di pagina 48 mi ritrovo in essa i record ordinati per data.
E così via.
Avete idea di come potrei agire?
-
passi tramite $_GET nell'URL i valori voluti (es: www.pippo.it/pag.php?limite=10&ord='data"&asc='y';)
gestisci i valori [mi raccomando, sii paranoico nel farlo che potrebbero inc****i facilmente] e li passi alla query:
$q="select * from 'tabella' WHERE clausola LIMIT ".$limite." ORDER By ".$ordine." ".$asc.";
spero di essermi spiegato in qualche modo
-
Ahhhh ecco una buona idea.
Allora io controllo che se, per esempio
tipopaginazione =='' allora come parametro per l'ORDER uso ID
mentre se è diverso da vuoto uso data (tipopaginazione=data) oppure l'altro.Ho 2 problemi: dalla pagina 10 alla pagina 11 deve restare lo stesso parametro per la scelta della paginazione quindi OGNI link alla pagina successiva ha nell'url tipopaginazione=.... e non potendo usare mod_rewrite ciò mi allunga troppo gli url
Cosa intendi con
gestisci i valori [mi raccomando, sii paranoico nel farlo che potrebbero inc****i facilmente] e li passi alla query:
Ti stai riferendo al fatto che potrebbero risalire alle password del database? Cioè fare una mi sembra si chiama sql injection?
Grazie, MAssy, illuminante come sempre
-
per i parametri, li gestisci con i get, no?
avrai un'url del tipo:
www.pippo.it/pag.php?limite=10&ord='data'&asc='y' ?$lim=(isset($_GET['limite'] && is_numeric($_GET['limite']) && $_GET['limite']>=0)?$_GET['lim']:0;
in tal modo passi il vecchio valore se esiste, se non esiste parti da 0
stessa cosa ad esempio per $asc =>
$asc=(isset($_GET['asc']) && $_GET['asc']=='y')?"y":"n";e così via.
Cioè fare una mi sembra si chiama sql injection?
Sì.
-
Sai cosa... per evitare il pericolo di sql inj una volta che il sistema va bene per l'ordinazione tramite ID creo delle pagine con ordinazione tramite data e tramite altri parametri.
Per ogni parametro mi si creeranno 2 nuove pagine... se il sistema non necessita di variazioni mi sembra un buon metodo per evitare da zero la sql inj... l'unico parametro passat osarà il numero della pagina.