Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Impaginazione

  1. #1

    Impaginazione

    Salve ragazzi,
    uso spesso uno script per impaginare risultati estratti da una query, oggi ho notato un bug, ovvero finchè la query estrae tutti i record, funziona benissimo, se invece , tipo attraverso un form, faccio dei filtri , la query funziona perfettamente , mi mostra solo quelli ricercati, ma sotto i numeri di pagina, tipo metto limite a 20, faccio cerca, mi trova solo 4 risultate io effettivamente vedo solo i quattro risultati, ma numero di pagine invece rimangono quelli di tutti i record, e se si clicca sulla seconda pagine escono record della query generale.

    Lo script è questo
    Codice PHP:
          
    // esecuzione prima query
      
    if (! $db->Query("SELECT * FROM annunci WHERE attivo ='0'")) echo $db->Kill();
        
    $tot_records $db->RowCount();
    // risultati per pagina(secondo parametro di LIMIT)
        
    $per_page 20;
    // numero totale di pagine
        
    $tot_pages ceil($tot_records $per_page);
    // pagina corrente
    $current_page = (!$_GET['pagi']) ? : (int)$_GET['pagi'];
    // primo parametro di LIMIT
    $primo =($current_page 1) * $per_page;

          if(
    $_POST['ordina']!=''){
                                    
    $order=$_POST['ordina'];
                                    }else{
                                     
    $order='DESC';   
                                    }
                                     
    $price=$_POST['prezzo'];
                                     
    $sqlSearch " WHERE 1=1 ";
                                      if(
    $_REQUEST['id'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND idCategoria = '{$_REQUEST['id']}'";
                                  
                                  }
                                    if(
    $_REQUEST['id_reg'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND id_reg = '{$_REQUEST['id_reg']}'";
                                  
                                  }
                                    if(
    $_REQUEST['id_provincia'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND id_provincia = '{$_REQUEST['id_provincia']}'";
                                  
                                  }
                                    if(
    $_REQUEST['idComune'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND idComune = '{$_REQUEST['idComune']}'";
                                  
                                  }
                                   if(
    $_REQUEST['annuncio'] != ""){ 
                                
                                   
    $sqlSearch .= " AND (annuncio LIKE '%".$_REQUEST['annuncio']."%')";
                                   }
                                    
    $sqlSearch .= " AND attivo='0' "
                                    
    $select_from_clauses "SELECT  * FROM annunci ";
                                 
                                      if(
    $_REQUEST['annuncio'] !='' || $_REQUEST['id']!='' || $_REQUEST['id_reg']!='' || $_REQUEST['id_provincia']!='' || $_REQUEST['idComune']!='' ){

                                
    $imp" ORDER BY idAnnuncio {$order} LIMIT $primo$per_page";
                                echo 
    $per_page;
                                          
    $ricerca =$db2->Query$select_from_clauses.$sqlSearch.$imp);
                                  
                                  
                                  }else{
                                    
                                 
                                        
    $ricerca =$db2->Query($select_from_clauses."  ORDER BY idAnnuncio {$order} LIMIT $primo$per_page");
                                  } 
    Non riesco a capire dov'è il problema?
    Grazie per le risposte

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    A parte che manca dove crei i link alle pagine, cmq mi pare che usi $tot_pages per farlo.
    Ora tu lo calcoli con la prima query, dove non metti le condizioni. invece devi calcolarlo con la query completa di condizioni.
    Inoltre, devi trovare il modo di portarti dietro i filtri selezionati. Se uno clicca sul link della seconda pagina ti perdi le variabili del $_POST.
    forse, però, lo fai già ma non si vede dal codice

  3. #3
    Quote Originariamente inviata da boots Visualizza il messaggio
    A parte che manca dove crei i link alle pagine, cmq mi pare che usi $tot_pages per farlo.
    Ora tu lo calcoli con la prima query, dove non metti le condizioni. invece devi calcolarlo con la query completa di condizioni.
    Inoltre, devi trovare il modo di portarti dietro i filtri selezionati. Se uno clicca sul link della seconda pagina ti perdi le variabili del $_POST.
    forse, però, lo fai già ma non si vede dal codice
    Ciao e grazie per la risposta, avevo già provato a portare tutto dopo i filtri ma impazzisce lo script

    Codice PHP:
                              $order=$_POST['ordina'];
                                    }else{
                                     
    $order='DESC';   
                                    }
                                     
    $price=$_POST['prezzo'];
                                     
    $sqlSearch " WHERE 1=1 ";
                                      if(
    $_REQUEST['id'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND idCategoria = '{$_REQUEST['id']}'";
                                  
                                  }
                                    if(
    $_REQUEST['id_reg'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND id_reg = '{$_REQUEST['id_reg']}'";
                                  
                                  }
                                    if(
    $_REQUEST['id_provincia'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND id_provincia = '{$_REQUEST['id_provincia']}'";
                                  
                                  }
                                    if(
    $_REQUEST['idComune'] != ""){ 
                                 
                                  
    $sqlSearch .= " AND idComune = '{$_REQUEST['idComune']}'";
                                  
                                  }
                                   if(
    $_REQUEST['annuncio'] != ""){ 
                                
                                   
    $sqlSearch .= " AND (annuncio LIKE '%".$_REQUEST['annuncio']."%')";
                                   }
                                    
    $sqlSearch .= " AND attivo='0' "
                                    
    $select_from_clauses "SELECT  * FROM annunci ";
                                 
                                      if(
    $_REQUEST['annuncio'] !='' || $_REQUEST['id']!='' || $_REQUEST['id_reg']!='' || $_REQUEST['id_provincia']!='' || $_REQUEST['idComune']!='' ){

                                
    $imp" ORDER BY idAnnuncio {$order}";
                                echo 
    $per_page;
                                          
    $ricerca =$db2->Query$select_from_clauses.$sqlSearch.$imp);
                                  
                                  
                                  }else{
                                    
                                 
                                        
    $ricerca =$db2->Query($select_from_clauses."  ORDER BY idAnnuncio {$order}");
                                  }  

     
    $tot_records $db->RowCount();
    // risultati per pagina(secondo parametro di LIMIT)
        
    $per_page 20;
    // numero totale di pagine
        
    $tot_pages ceil($tot_records $per_page);
    // pagina corrente
    $current_page = (!$_GET['pagi']) ? : (int)$_GET['pagi'];
    // primo parametro di LIMIT
    $primo =($current_page 1) * $per_page;
      if (! 
    $db->Query("SELECT * FROM annunci LIMIT $primo$per_page")) echo $db->Kill(); 
    Non funziona più nulla

    Le pagine le faccio così :

    Codice PHP:
    <?php
    for($i 1$i <= $tot_pages$i++) {if($i == $current_page) {                              $paginazione .=  "<li class=\"current\"><a href=''>" .$i ."</a></li>";} else {$paginazione .= "<li><a href=\"index.php?page=2&pagi=$i\">$i</a></li>";}}

    ?>

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ma non dovrebbe essere
    $tot_pages = $db2->RowCount() ?

    e perchè ripeti quel if (l'ultimo del primo blocco di script)?

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.