• User

    Problemi con paginazione records.

    Buon giorno, avrei un problemi da sottoporvi.
    Ho creato uno script per la paginazione che riceve la condizine da un form.
    Tutto bene se nel form no digito nessun criterio di ricerca, ma se do un criterio (es. %udi) lo script mi filtra perfettamente la prima pagina e il totale dei record viene calcolato giusto in base alla condizione, mentre quando passo alla pagina successiva perde la condizione e mi conteggia e fa vedere tutti i record come se non avessi specificato nessun criterio di ricerca.
    In quale punto del seguente script sbaglio...? Grazie per la collaborazione.
    Ecco lo script:
    [php]<?php
    session_start();

    //Verifico che l'utente sia autorizzato ad aprire la pagina
    if (!isset($_SESSION['utente'])){
    include ('errore.php');
    exit();
    }

    //includo il file di connessione al db personale
    include("config.php");

    $citta=$_POST['citta'];
    $citta.="%";

    $elems_per_page = 10; // Elementi per ogni pagina
    $page = $_GET[page];
    if(!($page)) {
    $page = 1;
    }
    $primo = ($page-1) * $elems_per_page ;
    /*
    $sql = "";
    if($filtro && $filtro != "any") {
    $sql = " AND citta = '$filtro'";
    }*/
    $query = "SELECT * FROM rubrica WHERE citta LIKE '$citta'";
    $result = mysql_query($query) or die("Select last failed $query");
    $num_rows = mysql_num_rows($result);

    $tot_pagine = ceil($num_rows / $elems_per_page);
    $prev_page = $page - 1;
    $next_page = $page + 1;

    $query .= " ORDER BY nome LIMIT $primo, $elems_per_page";
    $result = mysql_query($query) or die("Select last failed $query");
    $num_rows = mysql_num_rows($result);

    $query = "SELECT * FROM rubrica WHERE citta LIKE '$citta' ORDER BY nome";
    $elenco = mysql_query($query, $connessione) or die(mysql_error());
    $row = mysql_fetch_assoc($elenco);
    $totalRows = mysql_num_rows($elenco);

    ?>

          <!-- Inizio tabella contenitore -->
    

    <table width="900" border="0" align="center" cellpadding="0" cellspacing="0" class="contenitore">
    <tr>
    <td width="100%" align="left" valign="top" bgcolor="#FFFFFF">

          <!-- Inizio tabella vuota per spaziatura verticale -->
    

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td height="10" bgcolor="#FFFFFF"> </td>
    </tr>
    </table>
    <!-- Fine tabella vuota per spaziatura verticale -->

          <!-- Inizio tabella testata sopra -->
    

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td align="center" valign="middle" bgcolor="#FFFFFF">
    <?php include('logo.php');?></td>
    </tr>
    </table>
    <!-- Fine tabella testata sopra -->

          <!-- Inizio tabella vuota per spaziatura verticale -->
    

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td height="10" bgcolor="#FFFFFF"> </td>
    </tr>
    </table>
    <!-- Fine tabella vuota per spaziatura verticale -->

          <!-- Inizio tabella menu orizzontale -->
    

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td align="left" valign="middle" bgcolor="#000000"><?php include('menu_rubrica.php');?></td>
    </tr>
    </table>
    <!-- Fine tabella menu orizzontale -->

                <!-- ************Inizio tabella contenuti************ -->
    

    <table width="100%" height="400" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td align="center" valign="top" bgcolor="#FFFFFF" class="col_sx">

          <!-- Inizio tabella vuota per spaziatura verticale -->
    

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td height="30" bgcolor="#FFFFFF"> </td>
    </tr>
    </table>
    <!-- Fine tabella vuota per spaziatura verticale -->

                <!-- ************Inizio RUBRICA cerca************ -->
    
      <div id="contenuto_rubrica">
      <br />
    

    <br />
    <?php echo "Trovati n. ".$totalRows." nominativi." ?>
    <br />
    <br />

    <table width="880" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td width="40" align="center" ><strong>Id</strong></td>
    <td width="300" align="center" ><strong>Nome</strong></td>
    <td width="120" align="center" ><strong>Tipo</strong></td>
    <td width="180" align="center"><strong>Indirizzo</strong></td>
    <td width="200" align="center"><strong>Città</strong></td>
    <td width="40" align="center"> </td>
    </tr>
    </table>
    <?php // do {

    // ora è possibile utilizzare $result per listare solo gli elementi della pagina corrente

    while ($line = mysql_fetch_assoc($result)) { ?>

    <table width="880" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td width="40" align="center"><?php echo $line['id']; ?></td>
    <td width="300" align="left"><?php echo $line['nome']; ?></td>
    <td width="120" align="left"><?php echo $line['tipo']; ?></td>
    <td width="180" align="left"><?php echo $line['indirizzo']; ?></td>
    <td width="200" align="center"><?php echo $line['citta']; ?></td>
    <td width="40" align="center"><a href="rubrica_visualizza.php?id=<?php echo $line['id']; ?>" title="Clicca qui per visualizzare" target="_blank"><img src="icone/cerca_16x16.gif" width="16" height="16" border="0" /></a></td>
    </tr>
    </table>
    <?php }
    echo "<br>";
    if($prev_page > 0)
    echo "<a href='?filtro=$filtro&page=$prev_page'>pagina precedente</a> ";
    if($tot_pagine > 0)
    echo "pagina $page di $tot_pagine ";
    if($next_page <= $tot_pagine)
    echo "<a href='?filtro=$filtro&page=$next_page'> pagina successiva</a>";
    echo "<br>";
    echo "<br>";

    ?>
    </div>
    <!-- fine contenuto_rubrica -->
    </td>
    </tr>
    </table>
    <!-- Fine tabella contenuti -->[/php]


  • Consiglio Direttivo

    Ciao Loris3000.
    Così com'è lo script è normale che perda il criterio di ricerca dato che nel GET non lo indichi ($filtro) e soprattutto neanche lo recuperi ($filtro= ??).
    Intanto apporterei questa modifica poi vediamo come operare per la paginazione. 🙂


  • User

    [...]

    Grazie per la risposta, ma come faccio ad indicarlo nel GET e poi a recuperarlo. Lo script l'ho trovato in rete e l'ho adattato alle mie esigenze, visto che non mi serviva un filtro ma solo la paginazione andava bene. Ora però ho un cliente che fuole filtrare i dati e quindi ho provato ad attivare il pezzo di codice che avevo escluso (mettendolo come commento), ma non funziona....


  • User

    ...nessuna risposta.....


  • Consiglio Direttivo

    Prova ad inserire invece di:
    [php]$citta=$_POST['citta'];
    $citta.="%";[/php]
    Questo:
    [php]if ($_POST['citta'])
    {
    $filtro=$_POST['citta'];
    }
    else
    {
    $filtro=$_GET['filtro'];
    }
    $citta=$filtro."%";[/php]Vediamo se riusciamo a riprenderlo. 🙂


  • User

    Funziona!!!!!
    Grazie 1000... sei grande Samyorn.
    Ciao e alla prossima


  • Consiglio Direttivo

    Ohibò... e mica me lo aspettavo che funzionasse a prima prova. 😄

    Bene così, alla prossima. 😉