Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13

    paginazione dei risultati

    Ciao a tutti,
    qualcuno potrebbe indirizzarmi sulla paginazione dei dati con la condizione where nella select sql. Se cancello la condizione where i risultati delle select vengono paginati correttamente, al contrario con il filtro where viene estratto solo il primo recordset corrispondente ai criteri di selezione .
    Grazie.

  2. #2
    prova a postare la query che utilizzi

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13
    Grazie mille per la celerità della risposta. La logica delle struture di controllo può risultare fuorviante ma ho cancellato gran parte del codice inutile alla mia domanda.
    come puoi vedere ci sono delle $clausola_where che vanno a filtrare i recordset della query.
    L'unico problema, come ti dicevo, è che mi estre solo i primi 30 record e non riesce a filtrare i restanti (mi sembra che la query funzioni solo la prima volta e non trova le condizioni di where le successive volte in cui viene rivchiamata). Sono un neofita in php per cui ti ringrazio in anticipo dell'aiuto.

    Codice PHP:
    <?php 

    $currentPage 
    $_SERVER["PHP_SELF"];
    $maxRows_Recordset1 30;
    $pageNum_Recordset1 0;
    if (isset(
    $_GET['pageNum_Recordset1'])) {
      
    $pageNum_Recordset1 $_GET['pageNum_Recordset1'];
    }
    $startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;

    mysql_select_db($database_data_connetion_db1$data_connetion_db1);

    $clausola_where "";


    if (
    $annodefault == "..."){
    $clausola_where .= (isset($_POST['anno']) && $_POST['anno'] !='')? "anno BETWEEN 1960 AND 2010" ." ":"";;
    }
    elseif(
    $annodefault != "..."){
    $clausola_where .= (isset($_POST['anno']) && $_POST['anno'] !='')? "anno='".mysql_escape_string($_POST['anno'])."' ":"";
    }
    if (
    $operatore == ">"){
    $senz split (">"$senzaoperatore2);
    $clausola_where .= (isset($senz[1]) && $senz[1] !='')? "AND protocollo_iva >'".mysql_escape_string($senz[1])."' ":""
    }
    elseif (
    $operatore == "<"){
    $senzs split ("<"$senzaoperatoremeno2);
    $clausola_where .= (isset($senzs[1]) && $senzs !='')? "AND protocollo_iva <'".mysql_escape_string($senzs[1])."' ":"";
    }

    if(
    $contastringa == 10){
    $clausola_where .= (isset($_POST['data_doc']) && $_POST['data_doc'] !='')? "AND data_doc='".$datasearch."' ":"";
    }
    elseif(
    eregi("\<"$inputdate)){
    $clausola_where .= (isset($_POST['data_doc']) && $_POST['data_doc'] !='')? "AND data_doc <'".mysql_escape_string($sumdatapulita)."' ":"";
    }
    elseif(
    eregi("\>"$inputdate)){
    $clausola_where .= (isset($_POST['data_doc']) && $_POST['data_doc'] !='')? "AND data_doc >'".mysql_escape_string($sumdatapulitamax)."' ":"";
    }
    elseif(
    $contastringa 10){
    $clausola_where .= (isset($_POST['data_doc']) && $_POST['data_doc'] !='')? "AND data_doc BETWEEN $sumdatauno AND $sumdatadue." ":"";;
    }
    if (
    $operatorenumdoc == ">"){
    $senzdoc split (">"$senzaoperatorenumdoc2);
    $clausola_where .= (isset($senzdoc[1]) && $senzdoc[1] !='')? "AND numero_doc >'".mysql_escape_string($senzdoc[1])."' ":""
    }
    elseif (
    $operatorenumdoc == "<"){
    $senzsdocs split ("<"$senzaoperatoremenodoc2);
    $clausola_where .= (isset($senzsdocs[1]) && $senzsdocs !='')? "AND numero_doc <'".mysql_escape_string($senzsdocs[1])."' ":"";
    }
    elseif(
    eregi("\..."$_POST['numero_doc'])){
    $splitnum split("\."$_POST['numero_doc'], 2);
    $numdocmenopunto substr($splitnum[1], 2);
    $clausola_where .= (isset($_POST['numero_doc']) && $_POST['numero_doc'] !='')? "AND numero_doc BETWEEN $splitnum[0] AND $numdocmenopunto." ":"";;
    }
    elseif (
    $operatorenumdoc != "<"){
    $clausola_where .= (isset($_POST['numero_doc']) && $_POST['numero_doc'] !='')? "AND numero_doc='".mysql_escape_string($_POST['numero_doc'])."' ":"";
    }
    elseif (
    $operatorenumdoc != ">"){
    $clausola_where .= (isset($_POST['numero_doc']) && $_POST['numero_doc'] !='')? "AND numero_doc='".mysql_escape_string($_POST['numero_doc'])."' ":"";
    }
    //..................................... 


    $query_Record "SELECT * FROM intrauserfatture WHERE $clausola_where ";
    $query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Record$startRow_Recordset1$maxRows_Recordset1);
    $Recordset1 mysql_query($query_limit_Recordset1$data_connetion_db1) or die(mysql_error());
    $row_Recordset1 mysql_fetch_assoc($Recordset1);



    if (isset(
    $_GET['totalRows_Recordset1'])) {
      
    $totalRows_Recordset1 $_GET['totalRows_Recordset1'];
    } else {
      
    $all_Recordset1 mysql_query($query_Record);
      
    $totalRows_Recordset1 mysql_num_rows($all_Recordset1);
    }
    $totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;

    $queryString_Recordset1 "";
    if (!empty(
    $_SERVER['QUERY_STRING'])) {
      
    $params explode("&"$_SERVER['QUERY_STRING']);
      
    $newParams = array();
      foreach (
    $params as $param) {
        if (
    stristr($param"pageNum_Recordset1") == false && 
            
    stristr($param"totalRows_Recordset1") == false) {
          
    array_push($newParams$param);
        }
      }
      if (
    count($newParams) != 0) {
        
    $queryString_Recordset1 "&" htmlentities(implode("&"$newParams));
      }
    }
    $queryString_Recordset1 sprintf("&totalRows_Recordset1=%d%s"$totalRows_Recordset1$queryString_Recordset1);
    ?>

  4. #4
    $query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Record, $startRow_Recordset1, $maxRows_Recordset1);
    quello che limita il numero di record che deve prendere è LIMIT. prova a fare una copia della query senza il limit.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13
    scusami ma come ti ho scritto sono un neofita e il risultato di questo listato e la somma di alcuni pezzi di codice riadattati ai miei bisogni, per cui gentilmente potresti indicarmi dove replicare la query senza il LIMIT?
    Grazie ancora

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13
    ............

  7. #7
    nel form ometti se possibile i limiti della query

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    13
    ....mah, nn mi sembra molto chiara come risposta ma credo tu non possa fare diversamente! ti ringarzio ma sarà meglio chieda altrove.

  9. #9
    Codice PHP:
    $query_Record "SELECT * FROM intrauserfatture WHERE $clausola_where "
    $query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Record$startRow_Recordset1$maxRows_Recordset1); 
    $Recordset1 mysql_query($query_limit_Recordset1$data_connetion_db1) or die(mysql_error()); 
    $row_Recordset1 mysql_fetch_assoc($Recordset1); 
    questa sopra è la tua query attuale.

    Codice PHP:
    $query_Record "SELECT * FROM intrauserfatture WHERE $clausola_where "
    //$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Record, $startRow_Recordset1, $maxRows_Recordset1); 
    $Recordset mysql_query($query_Record$data_connetion_db1) or die(mysql_error()); 
    In questo modo è stato omesso il "limit" e devi ciclare il risultato .

  10. #10
    Originariamente inviato da luckyphp
    ....mah, nn mi sembra molto chiara come risposta ma credo tu non possa fare diversamente! ti ringarzio ma sarà meglio chieda altrove.
    il form che manda a quel codice php da te postato probabilmente accetta che te non imposti i limiti della query, in quanto è previsto nel codice PhP che un tale campo possa non avere un valore (campo 'totalRows_Recordset1' che è di tipo GET)

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.