Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Impaginazione e Inoltro dati presi con il POST

    Ciao a tutti,
    chiarisco il criptico titolo del post cercando di spiegare al meglio il mio problema.

    In una pagina php ho la visualizzazione di tutti gli elementi di una tabella con una semplice query.
    Nella stessa pagina, oltre a visualizzare tutti i risultati, è presente un form di ricerca per filtare tali risultati in base a determinate preferenze.
    Utilizzando tale form viene richiamanta la stessa pagina php ma in tal caso ho diverse variabili POST settate e quindi anzichè eseguire la query di cui sopra che prende tutti i risultati, ne eseguo una con i parametri passati dal form (faccio la discriminazione tra le due query cn un semplice if sul settaggio o meno delle variabili post).
    Fin qui tutto ok.

    Si è presentata però poi la necessità di impaginare i risultati.
    Il metodo che ho adottato in genere è quello suggerito nelle guide di html.it.
    Ovvero contare il numero di risultati della query, dividerli per il numero di pagine ed effettuare le query con LIMIT.

    Ora il problema è che, finchè non si usa la ricerca ma si visualizzano tutti i risultati, l'impaginazione è semplice (perchè i link alle pagine successive richiamano la stessa pagina php passando come parametro GET il numero di pagina poi utilizzato nel LIMIT delle query).
    Nel caso in cui invece l'utente ha effettuato una ricerca dovrei fare in modo che tutti i parametri presi con il POST siano reinviati anche quando si passa alle pagine successive.

    Per capirci meglio, se non ci fosse la possibilità di ricerca, i link per passare alle pagine successive sarebbero semplicemente:
    codice:
     $i
    In altro casi in cui i valori da inoltare erano ricevuti col GET mi bastava semplicemente aggiungere tali valori ai link delle pagine per reindirizzarli, quindi:
    codice:
    $i
    Ora che invece i valori sono inviati col POST, come posso inoltrarli quando passo da una pagina all'altra?
    Qualche idea m'era venuta ma mi sembrava abbastanza contorta e speravo ci fosse qualcosa di più semplice.
    Un grazie anticipato a tutti.

  2. #2
    Usa un form nascosto
    codice:
    <form name="filtro" id="filtro" method="post">
    <input type="hidden" id="nome_filtro1" name="nome_filtro1" value="valore_filtro1">
    <input type="hidden" id="nome_filtro2" name="nome_filtro2" value="valore_filtro2">
    <input type="hidden" id="nome_filtro3" name="nome_filtro3" value="valore_filtro3">
    <input type="hidden" id="limit" name="limt" value="">
    </form>
    1
    2
    3
    Ovviamente il form lo costruisci con PHP, facendo dei cicli sui valori $_POST, mettendo gli appositi valori al posto di "nome_filtrox" e "valore_filtrox".
    Quando costruisci i link per le pagine successive, modifichi il "limite" mettendoci il valore di $i
    Nella pagina pagina.php verifichi la presenza dei $_POST e se presenti fai la query usando quei "filtri" e quel "limite"
    (ps: javascript è scritto attaccato, senza il -!!)

  3. #3
    Grazie Mille!
    Ho risolto con la tua soluzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.