• User Attivo

    pag. successiva e precedente

    Ho un problema in merito ai link per passare alla pagina successiva o precedente. Mi spiego meglio.
    Ho un file mod_clienti.php con la lista dei clienti (anticipo che anche in questo file ho la stessa paginazione che stò per spiegare e funziona benissimo).
    Per ogni cliente sono posti due bottoni: "MODIFICA" e "LISTA MACCHINE".
    Quando premo "LISTA MACCHINE" si apre il file vis_mac_cliente.php e si visualizzano tutte le macchine relative al cliente**.**
    Fin qua OK.
    Il problema sorge nel momento in cui, nella pagina vis_mac_cliente.php, imposto il numero di record per ogni pagina. La prima pagina la vedo, quando premo sul link "successiva" non mi fa vedere più niente. Il motivo potrebbe essere che il FORM del file **mod_clienti.php **passa le variabili tramite POST, mentre nel premere il link "successiva" dovrebbe mandare la variabile tramite GET.

    Ecco il codice del file vis_mac_cliente.php:

    <?php
    /* Mi calcolo le variabili per la paginazione /
    $id_cliente = strip_tags($_POST["id_cliente"]);
    $queryTot="SELECT COUNT(
    ) FROM macchina WHERE cliente_id='$id_cliente'";
    // query di tipo count()
    $ris_totale = mysql_query($queryTot);
    $arr_totale = mysql_fetch_row($ris_totale);
    $totale = $arr_totale[0];
    // qui ho il totale dei record
    $pagina = ($_GET["pag"] != "") ? (int)$_GET["pag"] : 1;
    // qui ho la pagina corrente
    $pageSize = 8;
    // quanti records per pagina?
    $begin = ($pagina-1)*$pageSize;
    // da che record iniziare a prendere i valori
    $countPages=ceil($totale/$pageSize);
    // quante pagine?
    //$ord= $HTTP_GET_VARS["ord"];
    //$id_cliente = strip_tags($_POST["id_cliente"]);
    $select = "SELECT * FROM macchina WHERE cliente_id='$id_cliente' LIMIT $begin, $pageSize";
    $risultato = mysql_query ($select,$conn);
    $PHPSESSID=session_id();
    echo "<ol start='" . ($begin+1) ."'>\n";
    // creo un elenco numerato per ogni record
    while (($form=mysql_fetch_object($risultato)))
    {
    ?>
    <tr>
    <td height="29" valign="top" class="nomi_liste_php_1"><?php echo strip_tags($form->n_macchina) ?></td>
    <td align="center" valign="middle" class="nomi_liste_php_2_3"><form name="form1" method="post" action="update_macchina_da_cliente.php?PHPSESSID=<?php echo $PHPSESSID; ?>">
    <input name="Submit" type="submit" class="campo_form_php" value="macchina">
    <input name="id_macchina" type="hidden" id="id_macchina" value="<?php echo strip_tags($form->n_macchina); ?>">
    </form></td>
    <td align="center" valign="middle" class="nomi_liste_php_2_3">
    <form name="form_up_mac" method="post" action="in_totali_cliente.php?PHPSESSID=<?php echo $PHPSESSID; ?>" target="_parent">
    <input name="Submit" type="submit" class="campo_form_php" value="parziale">
    <input name="id_macchina" type="hidden" id="id_macchina" value="<?php echo strip_tags($form->n_macchina); ?>">
    <input name="azienda_cli" type="hidden" id="azienda_cli" value="<?php echo $id_cliente; ?>">
    </form></td>
    <td valign="top"><!--DWLayoutEmptyCell--> </td>
    </tr>
    <?php
    }
    echo "</table>";
    echo $indietro_vis_macchine_cliente;
    }
    echo "</ol>";
    // chiudo l'elenco numerato
    echo "<table width='568' border='0' cellpadding='0' cellspacing='0'>";
    echo "<tr>";
    echo "<td width='264' height='22' align='right' valign='middle' class='pag_succ_pre'>";
    $PHPSESSID=session_id();
    if ($totale > $pageSize && $countPages > $pagina) {
    echo "Pag. <a href='?pag=" . ($pagina+1) . "&PHPSESSID=$PHPSESSID' class='paginazione'>successiva</a> -->";
    }
    echo "</td>";
    echo "<td width='40'></td>";
    echo "<td width='264' height='22' align='left' valign='middle' class='pag_succ_pre'>";
    if ($pagina > 1) {
    echo "<-- Pag. <a href='?pag=" . ($pagina-1) . "&PHPSESSID=$PHPSESSID' class='paginazione'>precedente</a></td>";
    echo "</tr>";
    echo "</table><br>";
    }
    // Se ci fossero pagine precedenti, vado indietro
    mysql_close($conn);
    // chiudo la connessione
    ?>


  • User Attivo

    Il problema è che le variabili in post non le passi più, invece, per come hai fatto il codice, dovresti ripassarle alla pagina "successiva".
    Puoi risolvere in più modi diversi:
    1)
    Nella riga del link

    
    echo "&lt;-- Pag. <a href='?pag=" . ($pagina-1) . "&PHPSESSID=$PHPSESSID' class='paginazione'>**precedente**</a></td>";
    
    

    Aggiungi tutte le variabili che ti servono ad inizio pagina, che poi le leggi con $_REQUEST.
    2) Se NON sei nella prima pagina usi direttamente le variabili di sessione (che mi sembra hai già messo) e non usi le variabili in POST

    La seconda opzione è migliore se non ti interessa indicizzare le pagine (per esempio se sei in una intranet). Altrimenti devi usare qualcosa più simile alla prima.

    Ricorda, in generale, che le variabili del form arrivano solo alla prima pagina, poi devi trovare il modo di passarle alle pagine successive!


  • User Attivo

    Grazie Senamion per la risposta.
    Quel che affermi è giusto. Il problema è che prima di calcolare la paginazione ci stà un codice, html, in cui prendo i valori del cliente, che mi interessano, dal DB quindi faccio vedere di chi cliente si tratta.
    Es.: AZIENDA - NomeAzienda NOME - TitolareAzienda
    Ho provato a fare ciò che mi stai suggerendo ma le variabili del cliente si perdono quando premo "successiva" (però le macchine le visualizzo) mentre quando premo "precedente" perdo tutto.

    Ecco tutto il codice:

    <?php
    include("../voci.php");
    include("../../config.php");
    $id_cliente = strip_tags($_POST["id_cliente"]);
    // genero la selezione dei dati tabella CLIENTE
    $tbl_cliente = "SELECT * FROM cliente WHERE azienda='$id_cliente'";
    //racchiudi il risultato in una variabile tabella CLIENTE
    $result_c = mysql_query($tbl_cliente,$conn);
    $campo = mysql_fetch_object($result_c);
    $id_clienteb = strip_tags($campo->id_cliente);
    //seleziono le macchine riferite al cliente
    $cli_da_mac = "SELECT * FROM macchina WHERE cliente_id='$id_cliente'";
    $query_mac = mysql_query($cli_da_mac,$conn);
    while (($campo_mac = mysql_fetch_object($query_mac)))
    {
    $lista_cli = strip_tags($campo_mac->cliente_id);
    }
    if ($lista_cli!=$id_cliente)
    {
    echo "<p class='titolo_form'>CLIENTE</p>";
    echo "<table width='568' border='0' cellpadding='4' cellspacing='0'>";
    echo "<tr><td height='27' colspan='3' valign='top' class='nomi_liste'>" . strip_tags($campo->azienda) . " " . "di " . strip_tags($campo->cognome) . " " . strip_tags($campo->nome) . "</td>";
    echo "<td width='103' valign='top' class='nomi_liste'></td></tr>";
    echo "<tr><td height='30' valign='middle' align='center'>" . $nessuna_macchina_assegnata_a_cliente . "</td></tr></table>";
    }
    else
    {
    ?>
    <p class="titolo_form">CLIENTE</p>
    <table width="568" border="0" cellpadding="4" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
    <td height="27" colspan="3" valign="top" class="nomi_liste"><?php echo strip_tags($campo->azienda) . " " . "di " . strip_tags($campo->cognome) . " " . strip_tags($campo->nome); ?></td>
    <td width="103" valign="top" class="nomi_liste"><!--DWLayoutEmptyCell--> </td>
    </tr>
    <tr>
    <td height="25" colspan="4" valign="top" class="titolo_form">LISTA MACCHINE CLIENTE - <?php echo "<font class='imola'>IMOLA NUM.: " . strip_tags($campo->imola_1) . " " . "-" . " " . strip_tags($campo->imola_2) . "</font>"; ?></td>
    </tr>
    <tr>
    <td width="188" height="27" valign="top" class="nomi_form">NUMERO MACCHINA </td>
    <td width="132" align="center" valign="top" class="nomi_form">MODIFICA</td>
    <td width="113" align="center" valign="top" class="nomi_form">INSERISCI</td>
    <td valign="top"><!--DWLayoutEmptyCell--> </td>
    </tr>
    <?php
    /* Mi calcolo le variabili per la paginazione /
    $id_cliente = strip_tags($_POST["id_cliente"]);
    $queryTot="SELECT COUNT(
    ) FROM macchina WHERE cliente_id='$id_cliente'";
    // query di tipo count()
    $ris_totale = mysql_query($queryTot);
    $arr_totale = mysql_fetch_row($ris_totale);
    $totale = $arr_totale[0];
    // qui ho il totale dei record
    $pagina = ($_GET["pag"] != "") ? (int)$_GET["pag"] : 1;
    // qui ho la pagina corrente
    $pageSize = 8;
    // quanti records per pagina?
    $begin = ($pagina-1)*$pageSize;
    // da che record iniziare a prendere i valori
    $countPages=ceil($totale/$pageSize);
    // quante pagine?
    //$ord= $HTTP_GET_VARS["ord"];
    //$id_cliente = strip_tags($_POST["id_cliente"]);
    $select = "SELECT * FROM macchina WHERE cliente_id='$id_cliente' LIMIT $begin, $pageSize";
    $risultato = mysql_query ($select,$conn);
    echo "<ol start='" . ($begin+1) ."'>\n";
    // creo un elenco numerato per ogni record
    while (($form=mysql_fetch_object($risultato)))
    {
    ?>
    <tr>
    <td height="29" valign="top" class="nomi_liste_php_1"><?php echo strip_tags($form->n_macchina) ?></td>
    <td align="center" valign="middle" class="nomi_liste_php_2_3"><form name="form1" method="post" action="update_macchina_da_cliente.php">
    <input name="Submit" type="submit" class="campo_form_php" value="macchina">
    <input name="id_macchina" type="hidden" id="id_macchina" value="<?php echo strip_tags($form->n_macchina); ?>">
    </form></td>
    <td align="center" valign="middle" class="nomi_liste_php_2_3">
    <form name="form_up_mac" method="post" action="in_totali_cliente.php" target="_parent">
    <input name="Submit" type="submit" class="campo_form_php" value="parziale">
    <input name="id_macchina" type="hidden" id="id_macchina" value="<?php echo strip_tags($form->n_macchina); ?>">
    <input name="azienda_cli" type="hidden" id="azienda_cli" value="<?php echo $id_cliente; ?>">
    </form></td>
    <td valign="top"><!--DWLayoutEmptyCell--> </td>
    </tr>
    <?php
    }
    echo "</table>";
    echo $indietro_vis_macchine_cliente;
    }
    echo "</ol>";
    // chiudo l'elenco numerato
    echo "<table width='568' border='0' cellpadding='0' cellspacing='0'>";
    echo "<tr>";
    echo "<td width='264' height='22' align='right' valign='middle' class='pag_succ_pre'>";
    if ($totale > $pageSize && $countPages > $pagina) {
    echo "Pag. <a href='?pag=" . ($pagina+1) . "' class='paginazione'>successiva</a> -->";
    }
    echo "</td>";
    echo "<td width='40'></td>";
    echo "<td width='264' height='22' align='left' valign='middle' class='pag_succ_pre'>";
    if ($pagina > 1) {
    echo "<-- Pag. <a href='?pag=" . ($pagina-1) . "' class='paginazione'>precedente</a></td>";
    echo "</tr>";
    echo "</table><br>";
    }
    // Se ci fossero pagine precedenti, vado indietro
    mysql_close($conn);
    // chiudo la connessione
    ?>


  • User Attivo

    Non ho capito che modifiche hai fatto, ma ricapitolando:

    Qui:

    $id_cliente = strip_tags($_POST["id_cliente"]);

    Prendi una variabile in post, dove gliela passi quando clicchi su successiva o precedente???
    Allora ripeto:
    SOLUZIONE 1) togli il post, metti _REQUEST (che becca post e get) e aggiungi al link questa e le altre variabili, ad esempio:

    echo "<-- Pag. <a href='?pag=" . ($pagina-1) . "&id_cliente=$id_cliente' class='paginazione'>precedente</a></td>";

    SOLUZIONE 2) metti tutti i valori in variabili di sessione, ossia $_SESSION e se non sei in prima pagina usi quelli.


  • User Attivo

    Scusami non ho capito bene mi fai un piccolo esempio?
    Ho provato con $_REQUEST prende le variabili ma non funziona.