Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    26

    Problemi nel gestire la pagina dei risultati

    Ciao, grazie in anticipo.
    Questo codice ha come finalità quella di ricercare dati nel DB e visualizzarli uno alla volta, il listato funziona quasi bene ad eccezione del fatto che, effettuata la ricerca, e recuperati i dati relativi al numero di pagine da visualizzare, e ovviamente recuperati i dati lui visualizza solo la prima pagina del risultato, poi le successive o la successiva pagina che dovrebbe visualizzare è semplicemente il record successivo non della ricerca effettuata con i relativi criteri, ma della query in se senza criteri adottati, come se il risultato della query fosse andato perso.
    Quindi ricapitolando e andando per le spicciole, se cerco un elenco di persone che si chiamano Alessandro e sono di Milano ottengo come risultato della query 50 record, che ridistribuiti 10 per pagina ottengo 5 pagine in totale da visualizzare, quindi nel visualizzare i primi 10 record della prima pagina non ci sono problemi, mentre nel visualizzare i successivi 10 della seconda pagina, visualizzo l’intera query di 1800 utenti ridistribuiti in 180 pagine.
    Il tutto è gestito ovviamente da quattro pagine PHP una di connessione al DB, una di navigazione, una di ricerca ed in fine quella di risultato che mi sta uccidendo.
    Spero che mi possiate aiutare, grazie nuovamente.

    1. Navigazione.php
    ---------------------------------------------------------------------
    <?php

    //Sistema di navigazione tra le pagine
    if ($pag_visualizzata > 1)
    {
    $n_pagina = $pag_visualizzata - 1;
    $precedente = " <a href=\"$s?n_pagina=$n_pagina\">| < Precedente |</a> ";
    $ultima_pag = " <a href=\"$s?n_pagina=$pagine_totali\">| << Ultima |</a> ";
    }
    else
    {
    //il link "Precedente" non verrà visualizzato se siamo a pag.1
    $precedente = '';
    // il link "Prima pagina" non verrà visualizzato se siamo a pag.1
    $prima_pag = '';
    }

    if ($pag_visualizzata < $pagine_totali)
    {
    $n_pagina = $pag_visualizzata + 1;
    $successivo = " <a href=\"$s?n_pagina=$n_pagina\">| Prossima > |</a> ";
    $prima_pag = " <a href=\"$s?n_pagina=1\">| Prima >> |</a> ";
    }
    else
    {
    //il link "Successiva" non verrà visualizzato se siamo all'ultima pagina
    $successivo = '';
    //il link "Ultima pagina" non verrà visualizzato se siamo all'ultima pagina
    $ultima_pag = '';
    }

    //navigazione
    echo $ultima_pag . $precedente . $successivo . $prima_pag ."

    \n";

    if ($pagine_totali < 2)
    {
    echo "<div align=center><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\" color=black>Pagina $pag_visualizzata " . "di $pagine_totali sola pagina." . "</font></div>
    \n";
    }
    else
    {
    echo "<div align=center><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\" color=black>Pagina $pag_visualizzata " . "di $pagine_totali pagine in totale." . "</font></div>
    \n";
    }
    ?>



    2. Risultato_Index_A.php
    ---------------------------------------------------------------------
    <?php

    include ("Elementi/Connessione.php");

    $searchtext_nr = $_POST['searchtext_nr'];
    $searchtext_cognome = $_POST['searchtext_cognome'];
    $searchtext_nome = $_POST['searchtext_nome'];
    $IDCOMMISSIONE1 = $_POST['IDCOMMISSIONE1'];
    $IDCOMMISSIONE2 = $_POST['IDCOMMISSIONE2'];
    $IDCOMMISSIONE3 = $_POST['IDCOMMISSIONE3'];
    $IDCOMMISSIONE4 = $_POST['IDCOMMISSIONE4'];
    $IDCOMMISSIONE5 = $_POST['IDCOMMISSIONE5'];
    $IDCOMMISSIONE6 = $_POST['IDCOMMISSIONE6'];
    $IDCOMMISSIONE7 = $_POST['IDCOMMISSIONE7'];
    $IDCOMMISSIONE8 = $_POST['IDCOMMISSIONE8'];
    $IDCOMMISSIONE9 = $_POST['IDCOMMISSIONE9'];
    $IDCOMMISSIONE10 = $_POST['IDCOMMISSIONE10'];
    $IDCOMMISSIONE11 = $_POST['IDCOMMISSIONE11'];
    $IDCOMMISSIONE12 = $_POST['IDCOMMISSIONE12'];

    $contatore = @mysql_query("SELECT COUNT(*) FROM $tabella2
    WHERE NR LIKE '$searchtext_nr%'
    AND COGNOME LIKE '$searchtext_cognome%'
    AND NOME LIKE '$searchtext_nome%'
    AND IDCOMMISSIONE1 LIKE '$IDCOMMISSIONE1%'
    AND IDCOMMISSIONE2 LIKE '$IDCOMMISSIONE2%'
    AND IDCOMMISSIONE3 LIKE '$IDCOMMISSIONE3%'
    AND IDCOMMISSIONE4 LIKE '$IDCOMMISSIONE4%'
    AND IDCOMMISSIONE5 LIKE '$IDCOMMISSIONE5%'
    AND IDCOMMISSIONE6 LIKE '$IDCOMMISSIONE6%'
    AND IDCOMMISSIONE7 LIKE '$IDCOMMISSIONE7%'
    AND IDCOMMISSIONE8 LIKE '$IDCOMMISSIONE8%'
    AND IDCOMMISSIONE9 LIKE '$IDCOMMISSIONE9%'
    AND IDCOMMISSIONE10 LIKE '$IDCOMMISSIONE10%'
    AND IDCOMMISSIONE11 LIKE '$IDCOMMISSIONE11%'
    AND IDCOMMISSIONE12 LIKE '$IDCOMMISSIONE12%'");

    if (!$contatore) print ("Database o Tabella mancante - Errore Interno 001");

    $n_row = @mysql_fetch_array($contatore) or die ("Record vuoti - Errore Interno 002");
    if ($n_row[0] == FALSE)
    { echo "Non sono stati ancora inseriti dati nel db " . "". $db . ".
    ";}
    else
    {
    $pagine_totali = ceil($n_row[0]/$max_row);
    $pag_visualizzata = (!$_GET[n_pagina])?1: $_GET[n_pagina];
    $show = ($pag_visualizzata - 1) * $max_row;
    }

    $query = mysql_query("SELECT * FROM $tabella2
    WHERE ID LIKE '$ID%'
    AND NR LIKE '$searchtext_nr%'
    AND COGNOME LIKE '$searchtext_cognome%'
    AND NOME LIKE '$searchtext_nome%'
    AND IDCOMMISSIONE1 LIKE '$IDCOMMISSIONE1%'
    AND IDCOMMISSIONE2 LIKE '$IDCOMMISSIONE2%'
    AND IDCOMMISSIONE3 LIKE '$IDCOMMISSIONE3%'
    AND IDCOMMISSIONE4 LIKE '$IDCOMMISSIONE4%'
    AND IDCOMMISSIONE5 LIKE '$IDCOMMISSIONE5%'
    AND IDCOMMISSIONE6 LIKE '$IDCOMMISSIONE6%'
    AND IDCOMMISSIONE7 LIKE '$IDCOMMISSIONE7%'
    AND IDCOMMISSIONE8 LIKE '$IDCOMMISSIONE8%'
    AND IDCOMMISSIONE9 LIKE '$IDCOMMISSIONE9%'
    AND IDCOMMISSIONE10 LIKE '$IDCOMMISSIONE10%'
    AND IDCOMMISSIONE11 LIKE '$IDCOMMISSIONE11%'
    AND IDCOMMISSIONE12 LIKE '$IDCOMMISSIONE12%'
    ORDER BY ID ASC
    LIMIT $show, $max_row");

    if (!$query) print ("Errore Interno 003");

    for ($i=0; $i<mysql_num_rows($query); $i++)
    {
    mysql_data_seek($query, $i);

    $result = mysql_fetch_row($query);

    print "<div>

    DATI



    NR: ".$result[1].
    "
    DATA DI ISCRIZIONE: ".$result[2].
    "
    COGNOME: ".$result[3].
    "
    NOME: ".$result[4].
    "
    COMMISSIONI: ".$result[14].
    "
    ------------ -------".$result[15].
    "
    ------------ -------".$result[16].
    "
    ------------ -------".$result[17].
    "
    ------------ -------".$result[18].
    "
    ------------ -------".$result[19].
    "
    ------------ -------".$result[20].
    "
    ------------ -------".$result[21].
    "
    ------------ -------".$result[22].
    "
    ------------ -------".$result[23].
    "
    ------------ -------".$result[24].
    "
    ------------ -------".$result[25].
    "
    NUMERO TEL: ".$result[10]."-".$result[11].
    "
    CELLULARE: ".$result[12].
    "
    E_MAIL: ".$result[13].
    "


    DATI DI RESIDENZA



    CITTA' DI RESIDENZA: ".$result[7]." (".$result[9].")

    CAP: ".$result[8].
    "
    INDIRIZZO: " .$result[5].", ".$result[6].
    "


    <center>|||<a href=Strumenti/Sez_A/Modi_COMM_A.php?ID=$result[0]> Modifica |</center>
    </div>";
    }
    include("Elementi/Navigazione.php");
    ?>

  2. #2
    è evidente che il tuo problema sta nel definire correttamente il LIMIT delle variabili che passi nella query.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    26

    RE

    Ciao,
    GRAZIE per aver accolto positivamente la mia richiesta di aiuto, dopo il tuo messaggio, ad essere sincero sono due le cose che mi hanno fatto pensare, ma prima di tutto è necessario farti presente che sono state tante le modifiche che ho apportato al codice per poter risolvere questo problema, infatti anch’io inizialmente ho supposto che ci fosse un errore, un imperfezione nella stesura della query.
    Infatti nel listato che ho postato manca volontariamente il file Connessione.php, ma mi rendo conto che, più che esplicare il contenuto, sia necessario far presente che il file contiene una costante definita $max_row fissata ad 1, mentre la variabile $show è direttamente calcolata tra il file Navigazione.php e Risultato_COMM_A.php.
    Quindi, quando nel file Navigazione.php, $n_pagina = 2, perché formalmente il codice dice $n_pagina = $pag_visualizzata + 1, in Risultato_COMM_A.php $pag_visualizzata = 2 perché $pag_visualizzata = (!$_GET[n_pagina])?1: $_GET[n_pagina] , quindi $show = 1 ovviamente perché nella stessa pagina $show = ($pag_visualizzata - 1) * $max_row.
    Allora dico, in una query, in cui formalmente la sua stesura sarà:

    SELECT * FROM $tabella2
    WHERE id LIKE “$id%”,
    AND nr LIKE “$NR%”,

    ORDER BY id ASC
    LIMIT $show, $max_row

    Quando $show sarà uguale a 0 e $max_row a 1 (limite delle pagine da visualizzare) lui ovviamente mi mostrerà il primo record, andando avanti avremo $show a 1 e $max_row a 1 quindi dovrebbe mostrare il secondo record, andando ancora avanti avremo $show a 2 e $max_row ancora a 1 e dovrebbe visualizzare il terzo record della ricerca, ma tutto questo non avviene perché è come se nel passare alla pagina successiva la query (anche se non dovrebbe perché carica la stessa pagina) perdesse i dati inviati dalla pagina Ricerca.php.

    Ora l’idea che grazie alla tua risposta ho elaborato, è definire con un ciclo più corretto $show e $max_row in Navigazione.php, ma fondamentalmente al momento non so come impostarlo (ma si risolve), e poi vorrei chiederti di analizzare più correttamente il listato, e ciò che ti ho scritto, per recuperare altri errori nel codice o nel ragionamento che fatto sopra.

    Grazie ancora, attendo tue notizie.

  4. #4
    ti rispondo perchè il tuo problema (se l'ho capito.. ho letto alla svelta) è di immediata soluzione con una mia funzioncina stupida....

    http://forum.guidoz.it/viewtopic.php?t=451

    ..ma sappi che non gradisco molto le sollecitazioni in pvt, e non dovrei essere l'unico ^_^

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.