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

    Paginazione doppia di una query MySQL

    Carissimi, buona sera.

    Da due gg. sto' impazzendo tra righe di codice e post sui form senza risultato

    Il mio problema e' il seguente: ho una pagina che, di default, carica tutti i dati da MySQL e li pagina a step di 8. Tutto funziona alla perfezione.

    A questa parte ho aggiunto del listato per limitare ulteriormente la query (a seconda della citta' scelta).

    Ovvero di default carico tutti i dati suddivisi a pagine di 8, pero' posso scegliere una citta' e far caricare al db soltanto i dati relativi ad essa.

    In questa seconda parte ho utilizzato lo stesso metodo di paginazione della prima parte. Ora se i dati per citta' sono < 8 (il mio limite) tutto funziona, se sono piu' di 8 appaiono le due pagine ma...cliccando su di esse...ENTRAMBE rimandano alla pagina di default, ovvero caricano tutti i dati

    Come se la seconda variabile $_GET["scelta"] non venga presa in consderazione

    Spero di essere stato chiaro, in caso contrario vi posto il codice

    Grazie in anticpo,

    Paolo

  2. #2
    Posta il codice, perchè così "ad occhio" è poco quello che possiamo fare

  3. #3
    Immaginavo

    Eccovi il codice:

    <?php

    $citta_scelta = $_POST['scelta_citta'];

    //se non e' stata scelta nessuna citta' oppure tutte le citta', carico tutti i dati
    if ($citta_scelta =="" OR $citta_scelta == 'tutte')
    {
    $connessione = (mysql_connect("localhost","root",""));

    $db =mysql_select_db("db",$connessione);

    $query = mysql_query ("select * from tabella");

    $risultato = mysql_fetch_array($query);

    // impongo una visualizzazione di 8 immagini per pagina
    $numero_record = 8;
    if(!isset($_GET["inizio"])){
    $inizio = 0;
    }else{
    $inizio = $_GET["inizio"];
    }

    $strsql = "select * from tabella limit $inizio,$numero_record";
    $query = mysql_query($strsql);

    $strsql2 = "select * from tabella";
    $query2 = mysql_query($strsql2);

    $numero_record_totali = mysql_numrows($query2);

    //visualizzo i risultati della query
    while($scatola_temporanea=mysql_fetch_array($query )){

    $thumb=$scatola_temporanea['id']."thumb.jpg";
    $name="disegno_0".$scatola_temporanea['id'];
    $articolo=$scatola_temporanea['articolo'];
    $bottone="bottone_0".$scatola_temporanea['css'];
    $immagine="immagine_0".$scatola_temporanea['css'];

    echo "<div id=$immagine><img src=\"images/$thumb\"></div>";
    echo "<div id=$bottone><form name=$name action=\"bottoni.php\" method=\"post\">
    <input type=\"submit\" name=\"button\" value=$articolo>
    </form></div>";

    } //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo

    // calcolo il numero delle pagine necessarie

    $numero_pagine = ceil($numero_record_totali/$numero_record);

    // calcolo di quante pagine necessiti

    echo "<div id=\"pagine\">";

    if($numero_pagine > 1){
    for($pagina = 1; $pagina <= $numero_pagine; $pagina++){
    if($pagina == $pagina_corrente){
    echo".$pagina.";
    }else{

    echo " Pag".$pagina."[/b]</font>";

    }
    }
    }

    echo "</div>";

    echo "<div id=\"pagina_di\">";

    $pagina_attuale=(($inizio/8)+1);

    echo "Pagina ".$pagina_attuale;
    echo "
    di ".$numero_pagine;

    echo "</div>";

    mysql_free_result($query);
    mysql_free_result($query2);

    //inserisco il form per la scelta delle citta'
    $query_citta = "select * from tabella_citta ORDER BY citta ASC";

    $dbResult = mysql_query($query_citta);

    echo "<div id=\"scelta_citta\">";

    echo "<form method=\"post\" action=\"visualizza.php\">";

    echo "<select name=\"scelta_citta\">\r\n";

    echo"<option value=\"\">Choose a city</option>";

    if ($query !== FALSE){

    while($row=mysql_fetch_array($dbResult)){

    $citta_scelta = htmlspecialchars ($row["citta"], ENT_QUOTES);

    echo "<option value=\"$citta_scelta\">$citta_scelta</option>\r\n";
    }
    }

    echo"<option value=\"tutte\">Display all cities</option>";

    echo "</select>\r\n";

    echo "<input type=\"submit\" name=\"Invia\" value=\"Invia\">";

    echo "</form>";

    echo "</div>";

    mysql_close($connessione);

    }

    ================
    FIN QUI TUTTO BENE!
    ================

    //se e' stata scelta una citta' eseguo il seguente codice
    else {

    $connessione = (mysql_connect("localhost","root",""));

    $db =mysql_select_db("db",$connessione);

    $query = mysql_query ("select * from tabella WHERE citta = '$citta_scelta'");

    $risultato = mysql_fetch_array($query);

    // impongo una visualizzazione di 8 immagini per pagina

    $numero_record = 8;

    if(!isset($_GET["scelta"])){
    $scelta = 0;
    }else{
    $scelta = $_GET["scelta"];
    }

    $strsql = "select * from tabella WHERE citta = '$citta_scelta' limit $scelta,$numero_record";
    $query = mysql_query($strsql);

    $strsql2 = "select * from tabella WHERE citta = '$citta_scelta'";
    $query2 = mysql_query($strsql2);

    $numero_record_totali = mysql_numrows($query2);

    $i=1;

    while($scatola_temporanea=mysql_fetch_array($query )){

    $thumb=$scatola_temporanea['id']."thumb.jpg";
    $name="disegno_0".$scatola_temporanea['id'];
    $articolo=$scatola_temporanea['articolo'];
    $bottone="bottone_0".$i;
    $immagine="immagine_0".$i;

    echo "<div id=$immagine><img src=\"images/$thumb\"></div>";
    echo "<div id=$bottone><form name=$name action=\"bottoni.php\" method=\"post\">
    <input type=\"submit\" name=\"button\" value=$articolo>
    </form></div>";

    $i++;

    } //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo

    // calcolo il numero delle pagine necessarie


    ===========
    IN QUESTA PARTE DI CODICE LA PAGINAZIONE NON FUNZIONA!
    OVVERO SE LA QUERY RESTITUISCE + DI 8 RISULTATI, L'INDICE DELLE PAGINE VIENE CREATO MA CLICCANDO SUI LINK MI RIMANDA ALLA QUERY GENERALE CON CARICAMENTO DI TUTTI I DATI :-?
    ===========


    $numero_pagine = ceil($numero_record_totali/$numero_record);

    // calcolo di quante pagine necessiti

    if ($numero_record_totali > 8)
    {

    echo "<div id=\"pagine\">";

    if($numero_pagine > 1){
    for($pagina = 1; $pagina <= $numero_pagine; $pagina++){
    if($pagina == $pagina_corrente){
    echo".$pagina.";
    }else{

    echo " Pag".$pagina."[/b]</font>";

    }
    }
    }

    echo "</div>";

    echo "<div id=\"pagina_di\">";

    $pagina_attuale=(($scelta/8)+1);

    echo "Pagina ".$pagina_attuale;
    echo "
    di ".$numero_pagine;

    echo "</div>";

    mysql_free_result($query);
    mysql_free_result($query2);

    }

    $query_citta = "select * from tabella_citta ORDER BY citta ASC";

    $dbResult = mysql_query($query_citta);

    echo "<div id=\"scelta_citta\">";

    echo "<form method=\"post\" action=\"visualizza.php\">";

    echo "<select name=\"scelta_citta\">\r\n";

    echo"<option value=\"\">Choose a city</option>";

    if ($query !== FALSE){

    while($row=mysql_fetch_array($dbResult)){


    $citta_scelta = htmlspecialchars ($row["citta"], ENT_QUOTES);

    echo "<option value=\"$citta_scelta\">$citta_scelta</option>\r\n";
    }
    }

    echo"<option value=\"tutte\">Display all cities</option>";

    echo "</select>\r\n";

    echo "<input type=\"submit\" name=\"Invia\" value=\"Invia\">";

    echo "</form>";

    echo "</div>";

    mysql_close($connessione);

    }

    ?>

    Grazie in anticipo,

    buona giornata e buon Ferragosto,

    P.

  4. #4
    Succede questo perchè la città viene passata tramite POST. Al momento in cui viene caricata la pagina nuovamente i dati nella variabile POST vengono persi.

    Poi mi sembra uno spreco scriviere due volte la stessaparte di codice cambiando solo una parte della query...

    Se mi dai un attimo le posto il codice che utilizzerei io

    EDIT:
    Ecco il codice che utilizzerei io:

    Codice PHP:
    $citta_scelta $_GET['citta'];

    $connessione mysql_connect("localhost","root","");

    $db mysql_select_db("db",$connessione);

    // impongo una visualizzazione di 8 immagini per pagina
    $numero_record 8;
    if(!isset(
    $_GET["inizio"])){
        
    $inizio 0;
    }else{
        
    $inizio $_GET["inizio"];
    }

    //se non e' stata scelta nessuna citta' oppure tutte le citta', carico tutti i dati
    $strsql "SELECT * from tabella ";
    if (
    $citta_scelta == '' || $citta_scelta == 'tutte')
    {
        
    $strsql .= "WHERE citta = '$citta_scelta' ";
    }
    $strsql . = "LIMIT $inizio,$numero_record";
    $query mysql_query($strsql);


    $strsql2 "select * from tabella";
    $query2 mysql_query($strsql2);

    $numero_record_totali mysql_num_rows($query2);

    //visualizzo i risultati della query
    while($scatola_temporanea mysql_fetch_array($query)){

        
    $thumb         $scatola_temporanea['id']."thumb.jpg";
        
    $name        "disegno_0".$scatola_temporanea['id'];
        
    $articolo    $scatola_temporanea['articolo'];
        
    $bottone    "bottone_0".$scatola_temporanea['css'];
        
    $immagine    "immagine_0".$scatola_temporanea['css'];

        echo 
    "<div id=$immagine><img src=\"images/$thumb\"></div>";
        echo 
    "<div id=$bottone><form name=$name action=\"bottoni.php\" method=\"post\">
    <input type=\"submit\" name=\"button\" value=
    $articolo>
    </form></div>"
    ;

    //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo

    // calcolo il numero delle pagine necessarie

    $numero_pagine ceil($numero_record_totali/$numero_record);

    // calcolo di quante pagine necessiti

    echo "<div id=\"pagine\">";

    if(
    $numero_pagine 1){
        for(
    $pagina 1$pagina <= $numero_pagine$pagina++){
            if(
    $pagina == $pagina_corrente){
                echo
    ".$pagina.";
            }else{

                
    $link_pag "<a id=\"link\" href='visualizza.php?";
                if (
    $citta_scelta == '' || $citta_scelta == 'tutte')
                {
                    
    $link_pag .= "citta=$citta_scelta&";
                }
                
    $link_pag .= "inizio=".(($pagina 1) * $numero_record)."'> Pag".$pagina."[/b]</font></a>";

                echo 
    $link_pag;
            
            }
        }
    }

    echo 
    "</div>";

    echo 
    "<div id=\"pagina_di\">";

    $pagina_attuale=(($inizio/8)+1);

    echo 
    "[b]Pagina ".$pagina_attuale;
    echo 
    "[/b] di ".$numero_pagine;

    echo 
    "</div>";

    mysql_free_result($query);
    mysql_free_result($query2);

    //inserisco il form per la scelta delle citta'
    $query_citta "select * from tabella_citta ORDER BY citta ASC";

    $dbResult mysql_query($query_citta);

    echo 
    "<div id=\"scelta_citta\">";

    echo 
    "<form method=\"get\" action=\"visualizza.php\">";

    echo 
    "<select name=\"citta\">\r\n";

    echo
    "<option value=\"\">Choose a city</option>";

    if (
    $query !== FALSE){

        while(
    $row=mysql_fetch_array($dbResult)){

            
    $row['citta'] = htmlspecialchars ($row["citta"], ENT_QUOTES);

            echo 
    "<option value=\"$row[citta]\">$row[citta]</option>\r\n";
        }
    }

    echo
    "<option value=\"tutte\">Display all cities</option>";

    echo 
    "</select>\r\n";

    echo 
    "   <input type=\"submit\" name=\"Invia\" value=\"Invia\">";

    echo 
    "</form>";

    echo 
    "</div>";

    mysql_close($connessione); 
    Prova e fammi sapere

  5. #5
    Provato ma non funziona :-P

    Scherzi a parte: sicuramente e' un problema di spazi o " o ' o stupidate del genere

    In compenso mi hai risolto un bel problema: con un solo if mi hai rispoarmiato il doppio codice!

    GRAZIE

    Ora provo a vedere se trovo l'errore e ti faccio sapere.

    Alla prox,

    P.

  6. #6
    Errore mio
    Ora che ho riguardato il codice mi sono accorto di aver sbagliato le if.
    Prova ora, che ho corretto

    Codice PHP:
    $citta_scelta $_GET['citta'];

    $connessione mysql_connect("localhost","root","");

    $db mysql_select_db("db",$connessione);

    // impongo una visualizzazione di 8 immagini per pagina
    $numero_record 8;
    if(!isset(
    $_GET["inizio"])){
        
    $inizio 0;
    }else{
        
    $inizio $_GET["inizio"];
    }

    //se non e' stata scelta nessuna citta' oppure tutte le citta', carico tutti i dati
    $strsql "SELECT * from tabella ";
    if (
    $citta_scelta != '' || $citta_scelta != 'tutte')
    {
        
    $strsql .= "WHERE citta = '$citta_scelta' ";
    }
    $strsql . = "LIMIT $inizio,$numero_record";
    $query mysql_query($strsql);


    $strsql2 "select * from tabella";
    $query2 mysql_query($strsql2);

    $numero_record_totali mysql_num_rows($query2);

    //visualizzo i risultati della query
    while($scatola_temporanea mysql_fetch_array($query)){

        
    $thumb         $scatola_temporanea['id']."thumb.jpg";
        
    $name        "disegno_0".$scatola_temporanea['id'];
        
    $articolo    $scatola_temporanea['articolo'];
        
    $bottone    "bottone_0".$scatola_temporanea['css'];
        
    $immagine    "immagine_0".$scatola_temporanea['css'];

        echo 
    "<div id=$immagine><img src=\"images/$thumb\"></div>";
        echo 
    "<div id=$bottone><form name=$name action=\"bottoni.php\" method=\"post\">
    <input type=\"submit\" name=\"button\" value=
    $articolo>
    </form></div>"
    ;

    //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo

    // calcolo il numero delle pagine necessarie

    $numero_pagine ceil($numero_record_totali/$numero_record);

    // calcolo di quante pagine necessiti

    echo "<div id=\"pagine\">";

    if(
    $numero_pagine 1){
        for(
    $pagina 1$pagina <= $numero_pagine$pagina++){
            if(
    $pagina == $pagina_corrente){
                echo
    ".$pagina.";
            }else{

                
    $link_pag "<a id=\"link\" href='visualizza.php?";
                if (
    $citta_scelta != '' || $citta_scelta != 'tutte')
                {
                    
    $link_pag .= "citta=$citta_scelta&";
                }
                
    $link_pag .= "inizio=".(($pagina 1) * $numero_record)."'> Pag".$pagina."[/b]</font></a>";

                echo 
    $link_pag;
            
            }
        }
    }

    echo 
    "</div>";

    echo 
    "<div id=\"pagina_di\">";

    $pagina_attuale=(($inizio/8)+1);

    echo 
    "[b]Pagina ".$pagina_attuale;
    echo 
    "[/b] di ".$numero_pagine;

    echo 
    "</div>";

    mysql_free_result($query);
    mysql_free_result($query2);

    //inserisco il form per la scelta delle citta'
    $query_citta "select * from tabella_citta ORDER BY citta ASC";

    $dbResult mysql_query($query_citta);

    echo 
    "<div id=\"scelta_citta\">";

    echo 
    "<form method=\"get\" action=\"visualizza.php\">";

    echo 
    "<select name=\"citta\">\r\n";

    echo
    "<option value=\"\">Choose a city</option>";

    if (
    $query !== FALSE){

        while(
    $row=mysql_fetch_array($dbResult)){

            
    $row['citta'] = htmlspecialchars ($row["citta"], ENT_QUOTES);

            echo 
    "<option value=\"$row[citta]\">$row[citta]</option>\r\n";
        }
    }

    echo
    "<option value=\"tutte\">Display all cities</option>";

    echo 
    "</select>\r\n";

    echo 
    "   <input type=\"submit\" name=\"Invia\" value=\"Invia\">";

    echo 
    "</form>";

    echo 
    "</div>";

    mysql_close($connessione); 

  7. #7
    CaroToxit, buon giorno.

    Ora il listato funziona

    Ancora un piccolo neo: nel caricarmi le citta' singole quando i risultati sono > 8 (e devono essere divisi in + pagine) mi compaiono 11 pagine! Ovvero le pagine necessarie per il TOTALE dei risultati :-|

    Cmq grazie al tuo consiglio (get invece di post) funziona alla perfezione il mio listato: moooolto meno elegante del tuo, ma funzionante!

    Il fine giustifica i mezzi!

    Grazie ancora e buona serata,

    Paolo

  8. #8
    Si, corretto per quanto riguarda le pagine.

    Praticamente contavi il risultato di questa query qui:
    Codice PHP:
    $strsql2 "select * from tabella";
    $query2 mysql_query($strsql2);

    $numero_record_totali mysql_num_rows($query2); 
    Ecco il codice corretto

    Codice PHP:
    $citta_scelta $_GET['citta'];

    $connessione mysql_connect("localhost","root","");

    $db mysql_select_db("db",$connessione);

    // impongo una visualizzazione di 8 immagini per pagina
    $numero_record 8;
    if(!isset(
    $_GET["inizio"])){
        
    $inizio 0;
    }else{
        
    $inizio $_GET["inizio"];
    }

    //se non e' stata scelta nessuna citta' oppure tutte le citta', carico tutti i dati
    $strsql "SELECT * from tabella ";
    if (
    $citta_scelta != '' || $citta_scelta != 'tutte')
    {
        
    $strsql .= "WHERE citta = '$citta_scelta' ";
    }
    $strsql . = "LIMIT $inizio,$numero_record";
    $query mysql_query($strsql);

    $numero_record_totali mysql_num_rows($query);

    //visualizzo i risultati della query
    while($scatola_temporanea mysql_fetch_array($query)){

        
    $thumb         $scatola_temporanea['id']."thumb.jpg";
        
    $name        "disegno_0".$scatola_temporanea['id'];
        
    $articolo    $scatola_temporanea['articolo'];
        
    $bottone    "bottone_0".$scatola_temporanea['css'];
        
    $immagine    "immagine_0".$scatola_temporanea['css'];

        echo 
    "<div id=$immagine><img src=\"images/$thumb\"></div>";
        echo 
    "<div id=$bottone><form name=$name action=\"bottoni.php\" method=\"post\">
    <input type=\"submit\" name=\"button\" value=
    $articolo>
    </form></div>"
    ;

    //fine ciclo while che scorre la query e piazza i risultati nell'array temporaneo

    // calcolo il numero delle pagine necessarie

    $numero_pagine ceil($numero_record_totali/$numero_record);

    // calcolo di quante pagine necessiti

    echo "<div id=\"pagine\">";

    if(
    $numero_pagine 1){
        for(
    $pagina 1$pagina <= $numero_pagine$pagina++){
            if(
    $pagina == $pagina_corrente){
                echo
    ".$pagina.";
            }else{

                
    $link_pag "<a id=\"link\" href='visualizza.php?";
                if (
    $citta_scelta != '' || $citta_scelta != 'tutte')
                {
                    
    $link_pag .= "citta=$citta_scelta&";
                }
                
    $link_pag .= "inizio=".(($pagina 1) * $numero_record)."'> Pag".$pagina."[/b]</font></a>";

                echo 
    $link_pag;
            
            }
        }
    }

    echo 
    "</div>";

    echo 
    "<div id=\"pagina_di\">";

    $pagina_attuale=(($inizio/8)+1);

    echo 
    "[b]Pagina ".$pagina_attuale;
    echo 
    "[/b] di ".$numero_pagine;

    echo 
    "</div>";

    mysql_free_result($query);
    mysql_free_result($query2);

    //inserisco il form per la scelta delle citta'
    $query_citta "select * from tabella_citta ORDER BY citta ASC";

    $dbResult mysql_query($query_citta);

    echo 
    "<div id=\"scelta_citta\">";

    echo 
    "<form method=\"get\" action=\"visualizza.php\">";

    echo 
    "<select name=\"citta\">\r\n";

    echo
    "<option value=\"\">Choose a city</option>";

    if (
    $query !== FALSE){

        while(
    $row=mysql_fetch_array($dbResult)){

            
    $row['citta'] = htmlspecialchars ($row["citta"], ENT_QUOTES);

            echo 
    "<option value=\"$row[citta]\">$row[citta]</option>\r\n";
        }
    }

    echo
    "<option value=\"tutte\">Display all cities</option>";

    echo 
    "</select>\r\n";

    echo 
    "   <input type=\"submit\" name=\"Invia\" value=\"Invia\">";

    echo 
    "</form>";

    echo 
    "</div>";

    mysql_close($connessione); 

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.