Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema con paginazione

    Salve a tutti!
    Sto cercando di fare un search che restituisca dei record impagginati 3 per pagina.
    Ora il codice funzione fino ad un certo punto.
    Effettua correttamente sia la prima che la seconda query.
    Solo che quando vado a cliccare su successiva >> (ovvero la pagina successiva),
    la variabile $ word perde giustamente il suo valore (mi ritorna l'errore:Notice : Undefined index: parola in c:\programmi\easyphp1-8\www\portale3\ricerca3.php on line 6 ) e quello che ho che nelle pagine successive è tutto il resto del database indistintamente.

    Come posso fare perchè funzioni correttamente questa ricerca con paginazione?

    Il codice è il seguente:

    cerco.php
    Codice PHP:

    <link href="stile.css" rel="stylesheet" type="text/css"> 
    <?

    REQUIRE('connessione.php');
    $word=trim($_GET['parola']); 
    echo
    "$word"// Stringa di DEBUG per la variabile $word
    echo"
    "
    ;

    #PRIMA SELECT
    $query "SELECT * from news where news1 like \"%$word%\""

    $risultato_query=mysql_query($query,$connessione);
    $res_count=mysql_num_rows($risultato_query);

    // numero totale di records
    $tot_records $res_count;
    echo
    "Numero Totale di record della prima query $tot_records"
    // Stringa di DEBUG per la variabile $tot_records
    echo"
    "
    ;

    // risultati per pagina (secondo parametro di LIMIT)
    $per_page 3;

    // numero totale di pagine
    $tot_pages ceil($tot_records $per_page);
    echo
    "Numero Totale pagine contenenti i risultati è tot_page=  $tot_pages";
    // Stringa di DEBUG per la variabile $tot_pages
    echo"
    "
    ;

    // pagina corrente
    $current_page = (!$_GET['page']) ? : (int)$_GET['page'];
    echo
    "Il valore di current page è $current_page"
    // Stringa di DEBUG per la variabile $current_page
    echo"
    "
    ;

    // primo parametro per LIMIT
    $primo = ($current_page 1) * $per_page;
    echo
    "Primo valore di LIMIT  $primo";
    // Stringa di DEBUG per la variabile  $primo

    echo"
    "
    ;


    #SECONDA SELECT 
    $query2="SELECT * from news where news1 like \"%$word%\" LIMIT $primo$per_page";
    $risultato_query2=mysql_query($query2)or die("Query fallita !");
    $res_count2=mysql_num_rows($risultato_query2);
    $tot_records2 $res_count2;
    echo
    "Numero Totale di record della seconda query $tot_records";
    // Stringa di DEBUG per la variabile $tot_records
    echo"
    "
    ;


    while (
    $result mysql_fetch_array($risultato_query2) ) { 
     
    $idn1=$result['idn1'];
    $notizia=$result['news1']; 
    $titolo2=$result['titolo1'];

    echo
    "<p class=\"news\"><a href=\"notizie2.php?idn1=$idn1\">$titolo2</a>";





    include(
    "paginazione_1.php");
     echo
    "
    "
    ;
     echo
    "
    "
    ;
     
    // qua inseriamo la paginazione

    echo "$paginazione";
    mysql_close();
    ?>
    pagina_1.php
    Codice PHP:
    <?php



    if($current_page == 1) { // se siamo nella prima pagina
    $precedente "<< precedente";
    } else { 
    // altrimenti
    $previous_page = ($current_page 1);
    $precedente "<a href=\"?page=$previous_page\" title=\"Vai alla pagina precedente\"><< precedente</a>";
    }

    if(
    $current_page == $tot_pages) { // se siamo nell'ultima pagina
    $successiva "successiva >>";
    } else { 
    // altrimenti
    $next_page = ($current_page 1);
    $successiva "<a href=\"?page=$next_page\" title=\"Vai alla pagina successiva\">successiva >></a>";
    }
    $paginazione "$precedente   $successiva";

    ?>

  2. #2
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    e che cosa sarebbe $_GET['parola']?

  3. #3
    sarebbe il valore immesso nella casella di testo da cercare all'interno del database.
    Il fatto è che lo trova, funziona tutto, ma mi impaggina solo una pagina.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    <form name="form1" method="get" action="cerco.php">
      
    
    </p>
      
    
    
        <input name="parola " type="text" id="parola ">
      </p>
      
    
    
        <input type="submit" name="Submit" value="Invia">
      </p>
      
    
    </p>
    </form>
    </body>
    </html>

  4. #4
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    ma chiaramente cambiando pagina la variabile perde il suo valore... metti un controllo isset... oppure nei link delle pagine inserisci anche il valore di word in questo modo:

    Codice PHP:
    $successiva "<a href=\"?page=$next_page&parola=$word\" title=\"Vai alla pagina successiva\">successiva >></a>"

  5. #5
    GRAZIE!
    Funziona.

    Ecco il cambiamento a pagina_1.php
    Codice PHP:
    <?php



    if($current_page == 1) { // se siamo nella prima pagina
    $precedente "<< precedente";
    } else { 
    // altrimenti
    $previous_page = ($current_page 1);
    $precedente "<a href=\"?page=$previous_page&parola=$word\" title=\"Vai alla pagina precedente\"><< precedente</a>";
    }

    if(
    $current_page == $tot_pages) { // se siamo nell'ultima pagina
    $successiva "successiva >>";
    } else { 
    // altrimenti
    $next_page = ($current_page 1);
    $successiva "<a href=\"?page=$next_page&parola=$word\" title=\"Vai alla pagina successiva\">successiva >></a>";

    }
    $paginazione "$precedente   $successiva";

    ?>

  6. #6
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031

  7. #7
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    ah, per evitare errori io consiglierei anche una cosa di questo tipo:

    Codice PHP:
    // pagina corrente
    $current_page = (!$_GET['page']) ? : (int)$_GET['page']; 
    if (
    $current_page>$tot_pages || $current_page<1)
       
    $current_page=1
    Questo perchè la gente solitamente, invece di usare quello che viene dato loro attraverso i link, tende a pasticciare con i parmaetri che vede nella barra degli indirizzi.
    Così facendo, se qualcuno inserisce page=250, invece di un errore o di zero record, verrà reindirizzato a pagina 1.


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.