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

    Paginazione con ricerca!

    Buon giorno,ho il problema della paginazione dei risultati,dopo aver fatto una ricerca!
    Senza ricerca funziona alla perfezione,ma se nella select inserisco un valore tramite il quale farmi la paginazione mi va in errore,vi posto quello che ho:
    codice:
    //prima della query faccio una serie di controlli, dei campi di ricerca se sono stati valorizzati, se sono stati digitati caratteri speciali ect ect...
    $count = mysql_query("Select count(ID_ALLOGGI) from DatiLod_Mod where DL_OPID_LOG='$OPID'");
    $res_count = mysql_fetch_row($count) or die ("Impossibile eseguire la Select Count: " . mysql_error());
    //numero totale di records
    $tot_records = $res_count[0];
    //risultati per pagina(secondo parametro di LIMIT)
    $per_page = 2;
    //numero totale di pagine
    $tot_pages = ceil($tot_records/$per_page);
    //pagina corrente
    $current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
    //primo parametro di limit
    $primo = ($current_page -1) * $per_page;
    echo "<div align='center'>\n<table>\n";
    				
    $query_limit = mysql_query("select * from DatiLod_Mod where DL_OPID_LOG='$OPID' order by ID_ALLOGGI Desc LIMIT $primo,$per_page") or die ('Impossibile eseguire la Select: ' . mysql_error());
    
    while($row = mysql_fetch_array($query_limit)){
    	$MATRICOLA = trim($row['DL_MATRICOLA']);
            $OPID = trim($row['DL_OPID']);
            //qui costruisce la tabella
    }
    echo "</table></div>
    
    ";
    								
    $paginazione = $Afont . " Pagine totali: " . $tot_pages . "[";
    									for($i = 1; $i <= $tot_pages; $i++){
    		if($i == $current_page){
    			$paginazione .= $i . " ";
    		}
    		else{
    		$paginazione .= "<a href=\"?page=$i&da_data=$da_data&a_data=$a_data\" title=\"Vai alla Pagina $i\">$i</a>$Afont "; 
    		}
    	}
    	$paginazione .= "]";
    	echo (" " .$paginazione);
    Vedete voi ragazzi, sono in difficoltà, perchè nn riesco a capire, ditemi voi..Grazie

  2. #2
    ragazzi, ho dato un'occhiata a questo tutorial sulla paginazione ma.. nn mi aiuta

    http://freephp.html.it/articoli/view...sp?id=75&pag=1

    nn capisco come fare!!!Aiutatemi per favore...

  3. #3
    allora, ho capito che quello che mi genera errore è il tipo di controllo che faccio,prima di fare la paginazione, in quanto se eseguo questa select:
    codice:
    $count = mysql_query("SELECT COUNT(ID_ALLOGGI) FROM DatiLod_Mod where DL_DATA_LOG like'%$DATA%' order by DL_DATA_LOG asc");
    non ho errori, ma se faccio questi controlli prima di fare la select e quindi la paginazione mi va in errore, questo è quello che faccio in pratica:

    codice:
    //se nessun campo è valorizzato
    if($MATRICOLA=="" && $DATA_LOG=="" && $OPID==""){
    //...
    }
    //controllo valori dei campi dopo digitazione utente(clausola ||(OR))
    elseif(preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$MATRICOLA)
    || preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#\.@,;:]/i",$DATA_LOG)
    || preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$OPID)){
    //....
    }
    //controllo valori dei campi dopo digitazione utente(clausola &&(AND))
    elseif(preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$MATRICOLA)
    && preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#\.@,;:]/i",$DATA_LOG)
    && preg_match("/[§ç!°£$%&\|\/\(\)=\?\^\[\]\+\*#-\.@,;:]/i",$OPID)){
    //....
    }
    else{
    //se la ricerca è solo per Matricola
    if($MATRICOLA!=""){
    $select .= (" DL_MATRICOLA='$MATRICOLA'");
    }
    //se è solo per Data Log
    elseif($DATA_LOG!=""){
    $select .= (" DL_DATA_LOG like'$DATA_LOG%'");
    }
    //se è solo per Operatore(OPID)
    elseif($OPID!=""){
    $select .= (" DL_OPID_LOG='$OPID'");
    }
    //altrimenti se è per tutti i campi valorizzati per la ricerca
    elseif($MATRICOLA!="" && $DATA_LOG!="" && $OPID!=""){
    $select .= (" DL_MATRICOLA='$MATRICOLA' and DL_DATA_LOG like'$DATA_LOG%' and DL_OPID_LOG='$OPID'");
    }
    $count = mysql_query("SELECT COUNT(ID_ALLOGGI) FROM DatiLod_Mod where " . $select . " order by DL_DATA_LOG asc");
    
    $res_count = mysql_fetch_row($count);
    			
    // numero totale di records
    $tot_records = $res_count[0];
    		
    // risultati per pagina(secondo parametro di LIMIT)
    $per_page = 2;
    		
    // numero totale di pagine
    $tot_pages = ceil($tot_records / $per_page);
    		
    // pagina corrente
    $current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];
    			
    // primo parametro di LIMIT
    $primo = ($current_page - 1) * $per_page;
    			
    echo "<div align=\"center\">\n<table>\n";
    			
    // esecuzione seconda query con LIMIT
    $query_limit = mysql_query("SELECT * FROM DatiLod_Mod where DL_DATA_LOG like'%$DATA%' LIMIT $primo, $per_page");
    		
    while($results = mysql_fetch_array($query_limit)) {
    echo " <tr>\n <td>" . $results['DL_MATRICOLA'] . "</td>
    <td>" . $results['DL_DATA_LOG'] . "</td>
    <td>" . $results['DL_OPID_LOG'] . "</td>";
    echo "</td>\n </tr>\n";
    echo "</tr>\n";
    }
    			
    // includiamo uno dei files contenenti la paginazione, commentate l'altro ovviamente
    include("paginazione_1.php");
    			
    // in questa cella inseriamo la paginazione
    echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";
    			
    echo " </tr>\n</table>\n</div>";
    			
    mysql_close();
    ragazzi vi chiedo cortesemente una mano per capire come mai, con i controlli non funziona..sicuramente sbaglio a farli, ma ditemi per favore come ovviare a questo problema...Grazie mille

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 © 2024 vBulletin Solutions, Inc. All rights reserved.