Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    paginazione che perde dati provenienti da variabile

    ciao a tutti,

    alla fine ho optato per questo script che per la paginazione lo trovo ottimo. Unico problema ora e che se gli arriva una variabile da una pagina post la prima paginazione funziona mentre passando alla seconda pagina perde la variabile passata... non riesco in nessun modo a passargli la variabile anche nelle pagine successive.

    Codice PHP:
    include('connessione.php');

    $provincia$_POST['provincia'];

    // how many rows to show per page
    $rowsPerPage 5;

    // by default we show first page
    $pageNum 1;

    // if $_GET['page'] defined, use it as page number
    if(isset($_GET['page'])){
    $pageNum $_GET['page'];
    }


    // counting the offset
    $offset = ($pageNum 1) * $rowsPerPage;


    $query  "SELECT * FROM immobili WHERE provincia='$provincia' LIMIT $offset$rowsPerPage";
    $result mysql_query($query) or die('Error, query failed');

    //echo "<div id='' class='h9'>Trovati nella ricerca effettuata $numero_record_totali risultati.</div>";

    if (!$query) {
    echo 
    "Fallimento nell'esecuzione della query ($sql) dal DB: " mysql_error();
    }

    if (
    mysql_numrows(!$query)) {
    echo 
    "Nessun immobile trovato nel Database!";
    }


    // print the random numbers
    while($row mysql_fetch_array($result)){
    $provinciautf8_encode($row['provincia']);

    echo 
    "$provincia";
    }

    // how many rows we have in database
    $query  "SELECT COUNT(*) AS numrows FROM immobili WHERE provincia='$provincia'";
    $result  mysql_query($query) or die('Error, query failed');
    $row     mysql_fetch_array($resultMYSQL_ASSOC);
    $numrows $row['numrows'];

    // how many pages we have when using paging?
    $maxPage ceil($numrows/$rowsPerPage);


    // print the link to access each page
    $self $_SERVER['PHP_SELF'];
    $nav '';
    for(
    $page 1$page <= $maxPage$page++){

    if (
    $page == $pageNum){

    $nav .= $page ";   // no need to create a link to current page

    }else{
    $nav .= " <a href=\"$self?page=$page\">$page</a> ";
    }

    }


    // creating previous and next link
    // plus the link to go straight to
    // the first and last page


    if ($pageNum 1){
    $page $pageNum 1;
    $prev " <a href=\"$self?page=$page\">[Prev]</a> ";

    $first " <a href=\"$self?page=1\">[First Page]</a> ";
    }else{

    $prev  ''// we're on page one, don't print previous link
    $first ''// nor the first page link

    }

    if (
    $pageNum $maxPage){
    $page $pageNum 1;
    $next " <a href=\"$self?page=$page\">[Next]</a> ";

    $last " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
    }else{

    $next ''// we're on the last page, don't print next link
    $last ''// nor the last page link
    }


    // print the navigation link

    echo $first $prev $nav $next $last;

    // and close the database connection 

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Metti in sessione la varibile :
    Codice PHP:
    $provincia$_POST['provincia'];  // qulla che ho visto in testa
     
    $_SESSION['provincia'] = $_POST['provincia']; 
    In testa alla pagina prima di tutto ci va session_start();
    Fai prima dei controlli per vedere se già esistente.
    La vita e' uno switch();

  3. #3
    nulla da fare marco

    avevo già provato come hai detto tu, non riesco a portarmela dietro. Non vorrei che il problema fosse il GET presente nella paginazione.

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Cosa intendi di preciso dicendo che arriva da un'altra pagina via post? e' il numero di pagina che non riesci ad ottenere o altro?
    La vita e' uno switch();

  5. #5
    cerco di spiegarmi meglio,
    allora ho un form che si chiama pippo.php il quale punta alla pagina search.php sopra riportata. I dati vengono passati come post. Quando sn nella pagina search estrae i dati perfettamente dal db e vengono impaginati. Ora la prima pagina presentata dalla ricerca contiene i dati recuperati dal db quando passo alla pagina successiva si perdono i criteri della ricerca e la pagina 2, 3.... ecc. risultano vuote.

  6. #6
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Ma perche' in sessione non li puoi mettere? non vedo dove sta il problema della sessione.
    La vita e' uno switch();

  7. #7
    ma ho provato a metterli in sessione ma lo stesso non funziona e non so il perchè!

  8. #8
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    session_start(); deve essere presente in testa al file o cmq prima di ogni output che genera html.
    A meno che i file non vengano tutti inclusi dalla index , devi mettere session_start(); all'inizio di ogni file o non mantiene la sessione.
    Prova e vedi se la sessione persiste.

    session_start(); in testa
    $_SESSION['a'] = 1;

    var_dump($_SESSION);

    e vedi la sessione.

    Prova a far questo nella prima pagina che ti serve. Poi fai lo stesso var_dump(); nella pagina dove passi i dati e vedi se c'e'(sempre con session_start() in testa).
    La vita e' uno switch();

  9. #9
    posto quello che ho fatto togliendo l'html:

    pagina index.php

    <?php

    session_start();

    ?>

    <form method="post" action="search.php">
    <select class='slct1' name="provincia"">
    <option value="Ag">Agrigento</option>
    <option value="Aq">Aquila</option>
    </select>
    </form>

    pagina search.php

    <?php

    session_start();

    ?>

    HTML.....

    Codice PHP:
    include('connessione.php');

    $_SESSION['provincia'] = $_POST['provincia'];

    // how many rows to show per page
    $rowsPerPage 5;

    // by default we show first page
    $pageNum 1;

    // if $_GET['page'] defined, use it as page number
    if(isset($_GET['page'])){
    $pageNum $_GET['page'];
    }


    // counting the offset
    $offset = ($pageNum 1) * $rowsPerPage;


    $query  "SELECT * FROM immobili WHERE provincia='$provincia' LIMIT $offset$rowsPerPage";
    $result mysql_query($query) or die('Error, query failed');

    //echo "<div id='' class='h9'>Trovati nella ricerca effettuata $numero_record_totali risultati.</div>";

    if (!$query) {
    echo 
    "Fallimento nell'esecuzione della query ($sql) dal DB: " mysql_error();
    }

    if (
    mysql_numrows(!$query)) {
    echo 
    "Nessun immobile trovato nel Database!";
    }


    // print the random numbers
    while($row mysql_fetch_array($result)){
    $provinciautf8_encode($row['provincia']);

    echo 
    "$provincia";
    }

    // how many rows we have in database
    $query  "SELECT COUNT(*) AS numrows FROM immobili WHERE provincia='$provincia'";
    $result  mysql_query($query) or die('Error, query failed');
    $row     mysql_fetch_array($resultMYSQL_ASSOC);
    $numrows $row['numrows'];

    // how many pages we have when using paging?
    $maxPage ceil($numrows/$rowsPerPage);


    // print the link to access each page
    $self $_SERVER['PHP_SELF'];
    $nav '';
    for(
    $page 1$page <= $maxPage$page++){

    if (
    $page == $pageNum){

    $nav .= $page ";   // no need to create a link to current page

    }else{
    $nav .= " <a href=\"$self?page=$page\">$page</a> ";
    }

    }


    // creating previous and next link
    // plus the link to go straight to
    // the first and last page


    if ($pageNum 1){
    $page $pageNum 1;
    $prev " <a href=\"$self?page=$page\">[Prev]</a> ";

    $first " <a href=\"$self?page=1\">[First Page]</a> ";
    }else{

    $prev  ''// we're on page one, don't print previous link
    $first ''// nor the first page link

    }

    if (
    $pageNum $maxPage){
    $page $pageNum 1;
    $next " <a href=\"$self?page=$page\">[Next]</a> ";

    $last " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
    }else{

    $next ''// we're on the last page, don't print next link
    $last ''// nor the last page link

    Questo è quello che mi stampa il messaggio che mi hai fatto inserire
    nella prima pagina dei risultati
    codice:
    array(2) { ["provincia"]=>  &string(2) "Mi" ["a"]=>  ∫(1) }
    anche nelle altre pagine, solo che nelle successive non carica i dati della query

  10. #10
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    ok , assicurati di avere la sessione nelle pagine e usa i dati della sessione per la query al posto dei POST. Ovviamente se cambi i parametri di ricerca definisci nuovamente quelli in sessione coi nuovi valori.
    La vita e' uno switch();

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.