Visualizzazione risultati 1 fino 4 di 4

Discussione: paginazione dati con problema

  1. #1
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito paginazione dati con problema

    Ciao
    In un mio progetto precedente (che qualcuno di voi già conosce) ho dimenticato di inserire codice php per impaginare i dati.

    Ho questo codice:

    Codice PHP:
    ......


    elseif (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']!=""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['secondinput']);
    $datafin = mktime(23,59,59,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where data <= '".$datafin."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']!="")&&($_REQUEST['secondinput']!=""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['firstinput']);
    $datain = mktime(0,0,0,$mese,$giorno,$anno);

    list($giorno,$mese,$anno) = split("/",$_REQUEST['secondinput']);
    $datafin = mktime(23,59,59,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where data >= '".$datain."'and data <= '".$datafin."' ORDER BY data";
    }

    $query = mysql_query ($tutto,$link)
    or die ("Non riesco ad eseguire la richiesta $tutto");
    $totr=mysql_num_rows($query);
    echo "<b>Numero fatture trovate: <font color=\"#FF0000\" size=\"5\"> ".$totr." </font></b> <a href=\"ricerca.php\">Ritorna al modulo</a><br><br>

    <table border=1 width=\"600\" cellspacing=\"0\" cellpadding=\"5\"><tr>
    <td width='80' align='center'><b>Fattura N°</b></td>
    <td width='150' align='center'><b>Data</b></td>
    <td width='250' align='center'><b>Cliente</b></td>
    <td width='120'align='center'><b>Dettagli</b></td></tr></table><br>";

    while( $row = mysql_fetch_array($query) )
    {
    $cust = $row["id_fattura"];

    $querycust = mysql_query("SELECT * FROM clientidb JOIN fatture ON clientidb.id_user=fatture.id_cliente
    WHERE fatture.id_fattura = $cust",$link);

    while( $rowcust = mysql_fetch_array($querycust) )
    {
    $cognome_cliente = $rowcust["cognome"];
    $nome_cliente = $rowcust["nome"];
    }
    ?>
    ......
    <?
    echo "
    <table border=0 width=\"600\" cellspacing=\"3\"><tr>
    <td width='80' align='right'><b>
    $row[numero_fatt]</b></td>
    <td width='150' align='center'><b>"
    .date("d/m/y", $row['data'])."</b></td>
    <td width='125' align='left'><b>&nbsp;
    $cognome_cliente</b></td>
    <td width='125' align='left'><b>&nbsp;
    $nome_cliente</b></td>
    <td width='120'align='center'><b><a href=\"#\" onClick=\"PopupCentrata('filmato.php?variabile=
    $cust')\">Visualizza</a></b></td>
    </tr>
    </table>"
    ;
    }
    echo
    $_REQUEST['id_user'];
    }

    .....
    In pratica a secondo di una condizione di ricerca da me scelta
    interrogo il db che inserisce i dati nella variabile "$tutto"

    usata successivamente per la query e per la visualizzazione dei dati in righe.

    Mi sono accorto però che finché i record trovati sono poco numerosi va anche bene così ma se
    i record e quindi le righe stampate a video sono numerosi è meglio paginarli.

    Il problema è che adesso non so come usare il comando LIMIT.
    Dovrei ripetere le query con Limit ma i dati sono già stati estratti nelle vari condizioni (id elseif...) e questa
    query:

    $query = mysql_query ($tutto,$link)

    non fa altro che richiamarli.
    C'è un modo per inserire il Limit nella query sopra?

    Non vorrei stravolgere il codice.

    Grazie

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Codice PHP:
    $tutto.=" LIMIT x,y";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    Citazione Originalmente inviato da funcool
    Codice PHP:
    $tutto.=" LIMIT x,y";


    si adesso funziona, ma ho un altro problema con i link della pagina.

    Ho riciclato il codice di paginazione che crea anche i link. quest'ultima parte
    (quella dei link) non va.
    In pratica quando clicco sul numero pagina (1 e 2 in questo caso visto che i record sono 10)
    mi "apre" la pagina relativo al codice (che ho omesso) dopo else (l'ultimo che vedete in basso) e non la seconda pagina con i restanti 5 record.
    Come mai?

    Codice PHP:
    $scelta = $_POST['button'];
    if ($scelta == "lista"){

    include("dati.php");
    $link=mysql_connect("$db_host","$db_login","$db_pass")
    or die ("Non riesco a connettermi a <b>$db_host");

    mysql_select_db ($database, $link)
    or die ("Non riesco a selezionare il db $database<br>");

    if (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']==""))
    {
    $tutto = "SELECT * FROM fatture ORDER BY data";
    }

    elseif (($_REQUEST['clie']!="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']==""))
    {
    $tutto = "SELECT * FROM fatture where id_cliente = '".$_REQUEST['clie']."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']!="")&&($_REQUEST['firstinput']!="")&&($_REQUEST['secondinput']==""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['firstinput']);
    $datain = mktime(0,0,0,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where id_cliente = '".$_REQUEST['clie']."' and data >= '".$datain."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']!="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']!=""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['secondinput']);
    $datafin = mktime(23,59,59,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where id_cliente = '".$_REQUEST['clie']."' and data <= '".$datafin."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']!="")&&($_REQUEST['firstinput']!="")&&($_REQUEST['secondinput']!=""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['firstinput']);
    $datain = mktime(0,0,0,$mese,$giorno,$anno);

    list($giorno,$mese,$anno) = split("/",$_REQUEST['secondinput']);
    $datafin = mktime(23,59,59,$mese,$giorno,$anno);

    $tutto = "SELECT * FROM fatture where id_cliente = '".$_REQUEST['clie']."' and data >= '".$datain."' and data <= '".$datafin."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']!="")&&($_REQUEST['secondinput']==""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['firstinput']);
    $datain = mktime(0,0,0,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where data >= '".$datain."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']=="")&&($_REQUEST['secondinput']!=""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['secondinput']);
    $datafin = mktime(23,59,59,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where data <= '".$datafin."' ORDER BY data";
    }

    elseif (($_REQUEST['clie']=="")&&($_REQUEST['firstinput']!="")&&($_REQUEST['secondinput']!=""))
    {
    list($giorno,$mese,$anno) = split("/",$_REQUEST['firstinput']);
    $datain = mktime(0,0,0,$mese,$giorno,$anno);

    list($giorno,$mese,$anno) = split("/",$_REQUEST['secondinput']);
    $datafin = mktime(23,59,59,$mese,$giorno,$anno);
    $tutto = "SELECT * FROM fatture where data >= '".$datain."'and data <= '".$datafin."' ORDER BY data";
    }

    $righe_per_pagina = 5;
    if (!isset($_REQUEST['pagina'])) $pagina = 1;
    else {
    if ($_REQUEST['pagina'] <= 0) $pagina = 1;
    else $pagina = $_REQUEST['pagina'];
    }



    global $pagina, $righe_per_pagina;

    $query = mysql_query ($tutto,$link)
    or die ("Non riesco ad eseguire la richiesta $tutto");
    $totr=mysql_num_rows($query);

    // arrotonda al numero intero + alto
    $numero_pagine = ceil($totr/$righe_per_pagina);

    // calcola il numero della pagina corrente
    $pagina_corrente= ceil($pagina-1/$righe_per_pagina);


    echo " <div align=center><b>Pagina $pagina_corrente di $numero_pagine</b></div><br>
    <b>Numero fatture trovate: <font color=\"#FF0000\" size=\"5\"> ".$totr." </font></b> <a href=\"ricerca.php\">Ritorna al modulo</a><br><br>

    <table border=1 width=\"600\" cellspacing=\"0\" cellpadding=\"5\"><tr>
    <td width='80' align='center'><b>Fattura N°</b></td>
    <td width='150' align='center'><b>Data</b></td>
    <td width='250' align='center'><b>Cliente</b></td>
    <td width='120'align='center'><b>Dettagli</b></td></tr></table><br>";

    $tutto.=" LIMIT ".(($pagina-1)*$righe_per_pagina).", ".$righe_per_pagina;
    $querylim = mysql_query ($tutto,$link)
    or die ("Non riesco ad eseguire la richiesta $tutto");

    while( $row = mysql_fetch_array($querylim) )
    {
    $cust = $row["id_fattura"];

    $querycust = mysql_query("SELECT * FROM clientidb JOIN fatture ON clientidb.id_user=fatture.id_cliente
    WHERE fatture.id_fattura = $cust",$link);

    while( $rowcust = mysql_fetch_array($querycust) )
    {
    $cognome_cliente = $rowcust["cognome"];
    $nome_cliente = $rowcust["nome"];
    }
    ?>
    <html>
    <script type="text/javascript">
    function PopupCentrata(dest_url) {
    var w = 600;
    var h = 800;
    var l = Math.floor((screen.width-w)/2);
    var t = Math.floor((screen.height-h)/2);
    window.open(dest_url, "nome_finestra", "width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
    }
    </script>
    </html>
    <?
    echo "
    <table border=0 width=\"600\" cellspacing=\"3\"><tr>
    <td width='80' align='right'><b>
    $row[numero_fatt]</b></td>
    <td width='150' align='center'><b>"
    .date("d/m/y", $row['data'])."</b></td>
    <td width='125' align='left'><b>&nbsp;
    $cognome_cliente</b></td>
    <td width='125' align='left'><b>&nbsp;
    $nome_cliente</b></td>
    <td width='120'align='center'><b><a href=\"#\" onClick=\"PopupCentrata('filmato.php?variabile=
    $cust')\">Visualizza</a></b></td>
    </tr>
    </table>"
    ;
    }

    echo
    $_REQUEST['id_user'];

    echo
    "<center><br>";
    if (
    $numero_pagine > 1) {
    //inizio della condizione per creare l'elenco delle pagine
    for ($pag = 1; $pag <= $numero_pagine; $pag++) {
    echo
    "[&nbsp<a href=?";
    echo
    "pagina=".($pag).
    " title=\"Vai a pagina $pag\">".$pag."</a>&nbsp]&nbsp";
    }
    }
    // fine "elenco"

    echo "</center>";
    }


    else {

    .............................

    Grazie.

  4. #4
    gianlucaweb non è connesso Utente attivo
    Data registrazione
    01-01-2003
    Messaggi
    470

    Predefinito

    l'ultimo problema di cui sopra sembra che lo abbia risolto specificando
    la seconda condizione if con
    if ($scelta == "stat"){

    però ho adesso un altro problema
    In pratica appena apro la pagina visualizzo i primi 5 record, ma se clicco sui link 1 o 2 (in questo caso per visualizzare i restanti 5 record visto che nel db ce ne sono 10 o per tornare indietro) mi ritrovo con una pagina bianca.

    Potete aiutarmi a capire dove sbaglio?
    Grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •