• Bannato User Attivo

    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
    TITOLO

    Ecco 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?


  • Moderatore

    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 🙂


  • Bannato User Attivo

    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 😄


  • Moderatore

    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ì. 🙂


  • Bannato User Attivo

    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.