Visualizzazione risultati 1 fino 2 di 2

Discussione: Paginazione risultato query si modifica coi tasti di scorrimento

  1. #1
    trovalibro non è connesso Neofita
    Data registrazione
    01-10-2020
    Messaggi
    4

    Predefinito Paginazione risultato query si modifica coi tasti di scorrimento

    Ciao a tutti,
    dalla pagina Index.html inserisco le variabili riguardanti AUTORE e TITOLO per eseguire una query sul mio database. Con il seguente codice PHP eseguo la query ed il risultato mi viene correttamente filtrato e stampato con il corretto numero di pagine ed il corretto contenuto (ho trovato questo codice già suggerito e collaudato).

    IL PROBLEMA inizia quando utilizzo i link di navigazione "numeri" oppure "avanti" perchè premendoli mi viene ricaricato l' intero database. Esempio se la query iniziale mi stampa 2 pagine, premendo i link ne vengono stampati 25.


    <SCRIPT LANGUAGE="php">

    //Recupero il numero di pagina corrente.
    $pag = isset($_GET['pag']) ? $_GET['pag'] : 1;

    // Controllo se $pag è valorizzato e se è numerico
    // ...in caso contrario gli assegno valore 1
    if (!$pag || !is_numeric($pag))

    $pag = 1;

    $autore=$_POST[AUTORE];
    $titolo=$_POST[TITOLO];
    $db=mysql_connect("localhost","root","root");
    if(!$db)
    echo "no connection";

    mysql_select_db("my_trovalibro");
    // Uso mysql_num_rows per contare il totale delle righe presenti all'interno della tabella agenda
    $all_rows = mysql_num_rows(mysql_query("select * from libri where AUTORE like '%".$autore."%' and TITOLO like '%".$titolo."%'"));
    // Creo una variabile dove imposto il numero di record
    // da mostrare in ogni pagina
    $x_pag = 12;
    // Tramite una semplice operazione matematica definisco il numero totale di pagine
    $all_pages = ceil($all_rows / $x_pag);
    // Calcolo da quale record iniziare
    $first = ($pag - 1) * $x_pag;

    $query = "select * from libri where AUTORE like '%".$autore."%' and TITOLO like '%".$titolo."%' LIMIT $first, $x_pag";
    $result = mysql_query($query);
    $num_results = mysql_num_rows($result);

    for ($i=0; $i < $num_results; $i++)
    {
    $row = mysql_fetch_array($result);
    echo "<p font-size: 20pt> ".$row[TITOLO].". . . . . . . . ".$row[AUTORE];
    echo "</p>";
    echo "<br>";
    }

    I


    if ($all_pages > 1){
    if ($pag > 1){
    echo "<a href="" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "">";
    echo "<img src=frecciaindietro.png style=width:42px; height:43px>";
    echo "</a>";
    }
    // faccio un ciclo di tutte le pagine
    for ($p=1; $p<=$all_pages; $p++) {

    // NEL MOMENTO IN CUI UTILIZZO IL LINK PER SCORRERE PAGINA (numeri o con tasto avanti), VIENE CARICATO//
    // L INTERO DATABASE E LE PAGINE CHE PRIMA ERANO SOLO 2 DIVNETANO 25 //
    [/COLOR]
    echo "<a href="" . $_SERVER['PHP_SELF'] . "?pag=" . $p . "">";
    echo $p . "</a>&nbsp;";
    }
    if ($all_pages > $pag){
    echo "<a href='" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "'>";
    echo "<img src=frecciaavanti.png style=width:42px; height:43px>";
    echo "</a>";
    }
    }

    mysql_close($db);

    </SCRIPT>

    per favore mi date una mano?
    GRAZIE

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Codice PHP:
    $pag = 1;

    if(isset(
    $_GET['pag']) && is_numeric($_GET['pag'])
    $pag = (int) $_GET['pag']; // Intero 2147483647 su 32-bit system o 9223372036854775807 su 64-bit system
    Qui è la sezione del CMS PhpBB devi scrivere il codice tra tag [php]// primo commento php[/php] e nella sezione php.
    Comunque se non usi le parentesi graffe l'espressione può solo essere alla riga successiva e non dopo.
    Poi noto molta confusione, tieni presente che vorrei filtrare $x_pag = 20; risultati per volta ma $pag mi indica il risultato su cui arrivare se vale 1 voglio andare al risultato 1 non 1-1=0.
    Comunque dopo aver risolto usa la libreria mysqli invece di mysql, il tag script language non è più supportato.
    Inoltre la tua form su index.html non invia una query ?pag=1 ma più che altro invia semplicemente AUTORE e TITOLO via POST.
    Ultima modifica di darbula : 21-10-2020 alle ore 13.09.34

Regole di scrittura

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