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

    Paginazione dentro una pagina che si richiama da un form

    Stufo di leggere sempre le stesse storie nelle guide faccio una domanda ben precisa: esiste un sistema per fare la paginazione di risultati da una pagina con form che richiama i risultati dentro se stessa?

    Spiego meglio: la pagina ha un form che una volta compilato ed inviati i dati di ricerca si ricarica con i dati da db mysql.
    Codice PHP:
        //intestazioni pagina HTML

    <?php
        $ABIUser 
    $_GET['ABIUser'];
    ?>
    <body>
        
        //qui c'è il form HTML

        <?php
        
    if(isset($_POST['seriale_da']) || isset($_POST['abi_da']) || isset($_POST['cab_da']) || isset($_POST['importo_da']) || isset($_POST['data_lavorazione_da']) || isset($_POST['trattamento'])){
            if (
    trim(htmlentities($_POST['seriale_da'])) != "" || trim(htmlentities($_POST['abi_da'])) != "" || trim(htmlentities($_POST['cab_da'])) != "" || trim(htmlentities($_POST['importo_da'])) != "" || 
                    
    trim(htmlentities($_POST['data_lavorazione_da'])) != "" || trim(htmlentities($_POST['trattamento']) != "")) {
                
                
    $connect apriDb(""); //funzione mia che si collega al db
                
                
    $condizione "";

                
    //qui ci sono vari passaggi che controllano e settano la $condizione a seconda dei parametri inseriti nel form, questa condizione andrà ad essere eseguita con la query sottostante
                
                
    $sql "SELECT * FROM u".$ABIUser."
                        WHERE "
    .$condizione;
                
    //echo "$sql 
    ";
                
    $result = interrogaDb(); //funzione mia che effettua la select sul db

                
    $tot_record = mysql_num_rows($result);
                echo '<span style="
    font-familysans-seriffont-size:14pxmargin-left200px;">Risultati trovati: '.$tot_record.'
    ';

                //impostazione parametri per paginazione
                
    $per_pagina = 100;
                
    $tot_pagine = ceil($tot_record / $per_pagina);
                
    $pagina_corrente = (!isset($_GET['pag'])) ? 1 : (int)$_GET['pag'];
                
    $primo_record_pagina = ($pagina_corrente - 1) * $per_pagina;
                
                
    $sql_limit = "SELECT FROM u".$ABIUser."
                              
    WHERE ".$condizione."
                              
    LIMIT ".$primo_record_pagina."".$per_pagina;
                
    $result_limit = interrogaDb($connect$sql_limit$Log);
                
                if (
    $tot_record != 0) {
                    echo '  <table style="
    margin-left200px" border="1">';

                          //intestazione righe tabella risultati
                    
                    
    $i = 0;
                    while(
    $dati = mysql_fetch_array($result_limit)) {
                       
                           //tabella con i risultati

                        
    $i++;
                    }
                    echo '  </table>
                            
    ';
                   //paginazione a video
                   echo '<div id="
    paginazione">
                            <div style="
    font-familysans-seriffont-size:14pxmargin-left200px;">Pagine totali: '.$tot_pagine.'</div>';

                    
    $paginazione = '<div style="floatleft;  font-familysans-seriffont-size:14pxmargin-left100px;">';
                    
    $n = 2;
                    if(
    $pagina_corrente == 1) //caso prima pagina
                        
    $paginazione .= '';
                    else{
                        
    $pag_precedente = ($pagina_corrente - 1);
                        
    $paginazione .= '[url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag=1"]|< prima[/url]';
                        
    $paginazione .= ' [url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$pag_precedente.'"]<< precedente[/url]';
                    }
                    
    $paginazione .= '</div>
                                    <div style="
    floatleftfont-familysans-seriffont-size:14pxmargin-left200px;">';
                    for(
    $i=1; $i<=$tot_pagine$i++) { //pagine intermedie
                        if(
    $i == $pagina_corrente)
                            
    $paginazione .= $i;
                        else
                            
    $paginazione .= ' - [url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$i.'"]'.$i.'[/url]';
                    }
                    
    $paginazione .= '</div>
                                    <div style="
    floatleftfont-familysans-seriffont-size:14pxmargin-left200px;">';
                    if(
    $pagina_corrente == $tot_pagine) //caso ultima pagina
                        
    $paginazione .= '';
                    else{
                        
    $pag_successiva = ($pagina_corrente + 1);
                        
    $paginazione .= '[url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$pag_successiva.'"]successiva >>[/url]';
                        
    $paginazione .= ' [url="'.$_SERVER['PHP_SELF'].'?ABIUser='.$ABIUser.'&pag='.$tot_pagine.'"]ultima >|[/url]';
                    }
                    echo 
    $paginazione.'</div>';

                    echo '</div></br>
    ';
                }else{
                    echo '<span style="
    font-familysans-seriffont-size:14pxmargin-left200px;">Nessun dato disponibile</span>';
                }
                echo '

    ';
                chiudiDb(); //mia funzione che chiude la connessione
            }else{
                echo '<span style="
    font-style:italiccolor#FF0000; font-size:16px; margin-left: 200px;"> Inserire almeno un campo per eseguire la ricerca </span>

    ';
            }
        }else if (isset($_GET['
    DataLav']) && isset($_GET['CodLav'])) { 
            if (htmlentities($_GET['
    DataLav']) != "" && htmlentities($_GET['CodLav']) != "") {
                require_once("Comune.php");

                  //questo è un altro caso da cui si arriva tramite ricerca da un'
    altro form di ricerca presente in un'altra pagina e del quale vorrei per anch'esso funzionasse la paginazione


        
    }
        
        
    //funzioni varie di controllo della $condizione
    Provando a fare una semplice paginazione, come quella qui mostrata (e che ho costruito tramite guide e svariati forum), chiaramente non funziona perchè la paginazione è presente e viene eseguita solo se sono settati i campi del form essendo dentro il cicli degli isset.

    Ho provato a spostare la paginazione fuori e fare un altro else if con il $_GET che mi prenda un altro caso (oltre a quello già evidenziato a codice) dove mi passo la pagina ed altri dati che mi servono, ma il problema è che dovrei passarmi anche la $condizione (perchè altrimenti a pagina 2 non riuscirei a rieseguire la query) che è una stringa che tra le altre cose può essere anche piuttosto lunga, e che quindi non mi viene accettata.

    Quindi la domanda nuovamente: esiste un sistema per fare la paginazione dentro una pagina che ha un form che già si autorichiama?

  2. #2
    non sono sicuro di aver compreso bene quello che vuoi, ma in sostanza mi sembra una classica lista di elementi con la possibilità di filtrarli tramite un form, e mantenere l'impaginazione.

    Non puoi semplicemente scegliere di fare un tipo di query in base all'arrivo o meno delle condizioni?

    nel senso

    Codice PHP:
    if(!isset(condizioni)) { ... } //la query prende tutti gli elementi

    else { ... } //la query ha una o più clausole where 
    si può fare anche meglio, è giusto un esempio di logica di base.
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    La $condizione si crea nel momento in cui il form viene inviato la prima volta a seconda di quello che l'utente ricerca.

    I risultati sono mostrati sulla stessa pagina.

    Quello che a me serve è la paginazione cioè avere la possibilità di navigare tra le pagine dei risultati della query.
    Quello che io ho mostrato è il problema che mi si presenta in quanto non riesco a paginarla seguendo le varie guide trovate in rete.

  4. #4
    Dunque ho risolto con l'aiuto dell'array $_SESSION, dove mi sono memorizzato la $condizione e tutti i parametri che mi servono per la paginazione.

    Dopodichè ho implementato un nuovo caso che mi mostra a video la tabella risultante solo se è settato $_GET['pag'] quindi con parziale ripetizione del codice: non è molto fine, ma funziona :P

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.