Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Paginazione e querystring %

    Ciao, malgrado abbia letto diversi post sull'argomento paginazione, mi è rimasto un problema.
    Ho una pagina 'ricerca.php' con una select di questo tipo

    Codice PHP:
        <select id="tipologia" name="tipologia" class="field">
          <
    option value="%" selected="selected">Tutte le tipologie</option>
          <
    option value="Strumento">Strumento</option>
          <
    option value="Accessorio">Accessorio</option>
          <
    option value="Consumabile">Consumabile</option>
        </
    select
    Ho poi la pagina che esegue l'estrazione dei dati dal DB 'risultato.php' che filtra i risultati a seconda che sia stato selezionato 'Strumento', 'Accessorio' o 'Consumabile' e ne visualizza 20 per pagina; ho infine inserito il link di navigazione "AVANTI" che mi permette di vedere i 20 record successivi (passando la query string $tipologia = $_REQUEST['tipologia'])

    Funziona tutto bene, tranne nel caso in cui si scelga come opzione "Tutte le tipologie": in questo caso la variabile $tipologia assume il valore % e cliccando su AVANTI per vedere i 20 record succesivi, ottengo un messaggio d'errore.

    Sto impazzendo...

  2. #2
    dovresti postare il codice di errore...
    tuttavia ad intuito l'errore dovrebbe essere perchè nel rifare la query con i nuovi valori di limit ci sarà qualche request che non riceve le giuste variabili...ma senza vedere il codice è un pò difficile da capire.


    ciao Ginko
    Il progresso scientifico ? www.cartagodelendaest.it

  3. #3
    Ciao Ginko, hai ragione.
    Codice PHP:
    <?php require_once('../../Connections/products.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }

    $tipologia $_REQUEST['tipologia'];

    $currentPage $_SERVER["PHP_SELF"];

    $maxRows_rs_risultato 20;
    $pageNum_rs_risultato 0;
    if (isset(
    $_REQUEST['pageNum_rs_risultato'])) {
      
    $pageNum_rs_risultato $_REQUEST['pageNum_rs_risultato'];
    }
    $startRow_rs_risultato $pageNum_rs_risultato $maxRows_rs_risultato;

    $colname_rs_risultato "%";
    if (isset(
    $_REQUEST['tipologia'])) {
      
    $colname_rs_risultato = (get_magic_quotes_gpc()) ? $_REQUEST['tipologia'] : addslashes($_REQUEST['tipologia']);
    }
    mysql_select_db($database_products$products);
    $query_rs_risultato sprintf("SELECT codice, descrizione FROM a_prodotti_generale WHERE tipologia LIKE %s"GetSQLValueString($colname_rs_risultato"text"));
    $query_limit_rs_risultato sprintf("%s LIMIT %d, %d"$query_rs_risultato$startRow_rs_risultato$maxRows_rs_risultato);
    $rs_risultato mysql_query($query_limit_rs_risultato$products) or die(mysql_error());
    $row_rs_risultato mysql_fetch_assoc($rs_risultato);

    if (isset(
    $_GET['totalRows_rs_risultato'])) {
      
    $totalRows_rs_risultato $_GET['totalRows_rs_risultato'];
    } else {
      
    $all_rs_risultato mysql_query($query_rs_risultato);
      
    $totalRows_rs_risultato mysql_num_rows($all_rs_risultato);
    }
    $totalPages_rs_risultato ceil($totalRows_rs_risultato/$maxRows_rs_risultato)-1;

    $queryString_rs_risultato "";
    if (!empty(
    $_SERVER['QUERY_STRING'])) {
      
    $params explode("&"$_SERVER['QUERY_STRING']);
      
    $newParams = array();
      foreach (
    $params as $param) {
        if (
    stristr($param"pageNum_rs_risultato") == false && 
            
    stristr($param"totalRows_rs_risultato") == false) {
          
    array_push($newParams$param);
        }
      }
      if (
    count($newParams) != 0) {
        
    $queryString_rs_risultato "&" htmlentities(implode("&"$newParams));
      }
    }
    $queryString_rs_risultato sprintf("&totalRows_rs_risultato=%d%s"$totalRows_rs_risultato$queryString_rs_risultato);
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    </head>

    <body>
    <table width="100%" border="1">
      <tr>
        <td>Codice</td>
        <td>Descrizione</td>
      </tr>
      <?php do { ?>
        <tr>
          <td><?php echo $row_rs_risultato['codice']; ?></td>
          <td><?php echo $row_rs_risultato['descrizione']; ?></td>
        </tr>
        <?php } while ($row_rs_risultato mysql_fetch_assoc($rs_risultato)); ?>
    </table>


    [url="<?php printf("]">Avanti[/url]</p>
    </
    body>
    </
    html>
    <?
    php
    mysql_free_result
    ($rs_risultato);
    ?>

  4. #4
    per semplicare io fare così
    if ($tipologia == "%"):
    $sql = "SELECT .......(senza condizione WHERE)";
    else
    $sql = "SELECT ....WHERE tipologia ='$tipologia' ";
    endif;


    che dici ?
    Il progresso scientifico ? www.cartagodelendaest.it

  5. #5
    Grazie per il suggerimento: ho provato, ma nel codice
    Codice PHP:
    [url="<?php printf("]">Avanti[/url]
    viene comunque passato %, ed è proprio questo che crea l'errore se voglio vedere i 20 record successivi...

  6. #6
    Originariamente inviato da ginko75
    per semplicare io fare così
    if ($tipologia == "%"):
    $sql = "SELECT .......(senza condizione WHERE)";
    else
    $sql = "SELECT ....WHERE tipologia ='$tipologia' ";
    endif;


    che dici ?
    nella pagina che riceve questo link il contenuto della variabile $tipologia qual'è ? sempre "%" ?
    Il progresso scientifico ? www.cartagodelendaest.it

  7. #7
    Se nella pagina 'ricerca.php' seleziono la voce "Tutte le tipologie" (che ha come valore %), nella pagina 'risultato.php' vedo correttamente i primi 20 risultati.
    Cliccando sul link "Avanti"

    Codice PHP:
    [url="<?php printf("]">Avanti[/url]
    inizio a passare la variabile $tipologia che ha chiaramente il valore %...e da qui non funziona più....

  8. #8
    domanda stupida...
    se invece di usare il carattete % per tutte le tipologie usi la stringa tutte che succede ? magari quel carattere lo usa il parser lo usa per controlli particolori e di non va bene.
    Puoi postare il codice dell'errore ? grazie
    La cosia mi interessa molto perchè anche io sto facendo uno script di paginazione.
    Ciao

    Ginko
    Il progresso scientifico ? www.cartagodelendaest.it

  9. #9
    Bene, così non mi sento troppo sola....
    In che senso "usare la stringa tutte"?
    L'errore che ottengo è

    Forbidden
    You don't have permission to access /progetto/ita/products/
    Warning: printf() [function.printf]: Too few arguments in C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/progetto/ita/products/risultato.php on line 96
    on this server.

  10. #10
    Originariamente inviato da Elisa_73
    Bene, così non mi sento troppo sola....
    In che senso "usare la stringa tutte"?
    L'errore che ottengo è

    Forbidden
    You don't have permission to access /progetto/ita/products/
    Warning: printf() [function.printf]: Too few arguments in C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/progetto/ita/products/risultato.php on line 96
    on this server.
    nella form al posto del carattere "%" usa "tutte" per indicare che si tratta di tutte le tipologie.
    L'errore non è sulla query, ma sull'uso errato della funzione printf;


    ciao Ginko
    Il progresso scientifico ? www.cartagodelendaest.it

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.