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

    [mysql] paginazione risultati di ricerca

    ciao a tutti
    ho scritto questo codice per ricercare all'interno del database in base a certi dati
    Codice PHP:
     <?php
    require("config.php");
    if (empty(
    $_POST["b"])) {
    $count_mess = @mysql_query("SELECT COUNT(id) FROM poesie");
    $res_count = @mysql_fetch_array($count_mess);

    if (
    $res_count[0] == FALSE) {
        echo 
    "Nessuna poesia è stata inserita nel database";
    } else {
        
    $tot_pages ceil($res_count[0]/$msg_per_page);
        
    $curr_page = (!$_GET['page']) ? : (int)$_GET['page'];
        
    $primo = ($curr_page 1) * $msg_per_page;

        
    $data date('d/m/Y');
        
    $query mysql_query("SELECT * FROM poesie ORDER BY id DESC LIMIT $primo,$msg_per_page");
        while(
    $result mysql_fetch_array($query)) {
            
    $result['poesia'] = str_replace("\n""
    "
    $result['poesia']);
            echo 
    " [b] " $result['titolo'] . "[/b] 
    \n"
    ;
            echo 
    " [i]Inserita da " $result['nome'] . "[/i]
    \n"
    ;
            echo 
    " " $result['poesia'] . "
    \n"
    ;
            echo 
    " [i] " $result['autore'] . "[/i]

    \n"
    ;
            echo 
    " Invia ad un amico <a href=\"inviaamico.php?titolo=" $result['titolo'] . "&cont=" $result['poesia'] . "&autore=" $result['autore'] . "\">[img]immagini/mail.gif[/img]</a>
     \n"
    ;
                   echo 
    " <hr>\n";

        }

        for(
    $page 1$page <= $tot_pages$page++) {
            if(
    $page == $curr_page) {
                
    $pag .= "[b]$page[/b] ";
            } else {
                
    $pag .= "<a href=\"?page=$page\">$page</a> ";
            }
        }
        echo 
    $pag "
    \n"
    ;
    }
    @
    mysql_close();

    } else {
    $a $_POST["a"];
    $b $_POST["b"];

    $count_mess = @mysql_query("SELECT COUNT(id) FROM poesie");
    $res_count = @mysql_fetch_array($count_mess);

    if (
    $res_count[0] == FALSE) {
        echo 
    "Nessuna poesia secondo questi criteri di ricerca";
    } else {
        
    $tot_pages ceil($res_count[0]/$msg_per_page);
        
    $curr_page = (!$_GET['page']) ? : (int)$_GET['page'];
        
    $primo = ($curr_page 1) * $msg_per_page;

        
    $data date('d/m/Y');
        
    $query mysql_query("SELECT * FROM poesie WHERE ".$a." LIKE '%".$b."%' ORDER BY id   DESC LIMIT $primo,$msg_per_page");
        while(
    $result mysql_fetch_array($query)) {
            
    $result['poesia'] = str_replace("\n""
    "
    $result['poesia']);
            echo 
    " [b] " $result['titolo'] . "[/b] 
    \n"
    ;
            echo 
    " [i]Inserita da " $result['nome'] . "[/i]
    \n"
    ;
            echo 
    " " $result['poesia'] . "
    \n"
    ;
            echo 
    " [i] " $result['autore'] . "[/i]

    \n"
    ;
            echo 
    " Invia ad un amico <a href=\"inviaamico.php?titolo=" $result['titolo'] . "&cont=" $result['poesia'] . "&autore=" $result['autore'] . "\">[img]immagini/mail.gif[/img]</a>
     \n"
    ;
                   echo 
    " <hr>\n";

        }

        for(
    $page 1$page <= $tot_pages$page++) {
            if(
    $page == $curr_page) {
                
    $pag .= "[b]$page[/b] ";
            } else {
                
    $pag .= "<a href=\"?page=$page\">$page</a> ";
            }
        }
        echo 
    $pag "
    \n"
    ;
    }
    @
    mysql_close();
    }
    ?>
    e funziona, il solo problema è che se ad esempio il risultato della ricerca è uno solo, mi vengono visualizzate 4 pagine, ovvero quello di tutti gli elementi del database. Se non mi sono saputa spiegare bene potete capire cosa intendo guardando la mia pagina qui e provando a fare una ricerca...
    Qualcuno può darmi una mano ^^ ?
    Tante risorse gratuite e ribriche divertenti e interessanti!
    http://www.tuttoilweb.org
    Iscriviti al forum!!

  2. #2
    questi topic passano in seconda pagina come niente fosse
    Tante risorse gratuite e ribriche divertenti e interessanti!
    http://www.tuttoilweb.org
    Iscriviti al forum!!

  3. #3
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    Dovresti specificare le clausule WHERE anche nella query che fa il COUNT degli elementi

    Altrimenti, per forza, il count calcola tutta la tabella e non solo i record che ottieni dalla ricerca

    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  4. #4
    grazie ,adesso provo
    Tante risorse gratuite e ribriche divertenti e interessanti!
    http://www.tuttoilweb.org
    Iscriviti al forum!!

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.