Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309

    paginazione dati che mostra link anche se...

    salve a tutto il forum, mi trovo davanti a questo problemino:
    sto usando uno script per la paginazione dei dati, però se il risultato è per esempio 6 record, mi mostra comunque i link "Pagine: [1] 2 3 4 »" nonostante non ci siano "valori" da visualizzare nelle pagine 2, 3, e 4. Ho provato un milione volte a modificarlo ma senza successo... qualcuno di voi saprebbe gentilmente indicarmi dove sta l'errore? o l'orrore... caso mai rifaccio tutto

    quasto è la pagina che riceve i dati dal form, cioè "risultato.php" :

    Codice PHP:
    <?php

    include 'paginazione.php';

    $praticante=$_POST['praticante'];

    $DB_host     'localhost';
    $DB_user     'root';
    $DB_password '';
    $DB_name     'fdl';

    $righe_per_pagina 10;
    $url_base "risultato.php";
    $pagine_vicine 1;

    // ----------------------------------------------------------------
    //         C O N N E S S I O N E   A L   D A T A B A S E

    $link mysql_connect($DB_host$DB_user$DB_password);
    if (!
    $link) {
        die (
    'Non riesco a connettermi: ' mysql_error());
    }

    $db_selected mysql_select_db($DB_name$link);
    if (!
    $db_selected) {
        die (
    "Errore nella selezione del database: " mysql_error());
    }

    // ----------------------------------------------------------------
    //    C A L C O L O   D E L   N U M E R O   D I   P A G I N E
     
    // ricavo il numero totale di record
    $query "SELECT COUNT(*) FROM utenti";
    $result mysql_query($query);
    // record complessivi
    $tot_righe mysql_result($result,0);
    // totale pagine
    $tot_pagine ceil($tot_righe $righe_per_pagina);

    // ----------------------------------------------------------------
    //                 P A G I N A   C O R R E N T E

    $pagina_corrente = isset($_GET['pag']) ? (int)$_GET['pag'] : 1;

    // se la pagina corrente è minore di 1
    if($pagina_corrente 1)  {
        
    header('location: ' $url_base);
        exit();
    }

    // se la pagina corrente è maggiore dell'ultima pagina
    if($pagina_corrente $tot_pagine) {
        
    header('location: ' crea_url($url_base$tot_pagine));
        exit();
    }

    // ----------------------------------------------------------------
    //            E S T R A Z I O N E   D E I   R E C O R D

    // calcolo la prima riga da estrarre con la query
    $prima_riga = ($pagina_corrente 1) * $righe_per_pagina;


    $query "SELECT username, nome, cognome, email, data_reg, MATCH(nome, cognome, username) 

    AGAINST ('*
    $praticante*' IN BOOLEAN MODE) AS pertinenza FROM utenti WHERE MATCH (nome, cognome, 

    username) AGAINST ('*
    $praticante*' IN BOOLEAN MODE) ORDER BY pertinenza DESC, cognome DESC 

    LIMIT 
    $prima_riga$righe_per_pagina";

    $result mysql_query($query);
    if (!
    $result) {
        die(
    "Errore nella query $query: " mysql_error());
    }

    $elenco_user = array();
    while (
    $row mysql_fetch_assoc($result)) {
        
    $elenco_user[] = $row;
    }

    // creazione dei link di paginazione
    $link_paginazione paginazione($tot_pagine$url_base$pagina_corrente$pagine_vicine);
    // carico il template HTML
    include 'index.html';

    ?>
    posto anche index.html, magari l'errore sta la ed io non me ne sono accorta...

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Elenco User</title>
    </head>
    <body>
    <h1>Elenco User</h1>


    <?php echo $link_paginazione?></p>
    <table border="1">
        <tr>
            <th>Username</th>
            <th>Nome</th>
            <th>Cognome</th>
            <th>Indirizzo e-mail</th>
            <th>data di registrazione</th>
        </tr>
        <?php foreach($elenco_user as $riga):?>
        <tr>
            <td><?php echo htmlentities($riga['username'])?></td>
            <td><?php echo $riga['nome']?></td>
            <td><?php echo $riga['cognome']?></td>
            <td><?php echo $riga['email']?></td>
            <td><?php echo $riga['data_reg']?></td>
        </tr>
        <?php endforeach ?>
    </table>


    <?php echo $link_paginazione?></p>
    </body>
    </html>
    grazie in anticipo a tutti! Gina

  2. #2
    Ti basta andare a fare, come primo controllo, quello sul numero di righi del DB estratti.
    Se minori del numero di risultati per pagina, allora non serve eseguire tutto lo script di paginazione.

    Codice PHP:
    // record complessivi => USA LA FUNZIONE QUI SOTTO
    $tot_righe mysql_num_rows($result); 

    if (
    $tot_righe <= $righe_per_pagina) {
    // non serve il paginatore

    } else {
    // il codice per creare il paginatore


    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309
    grazie mille alcio74!
    ti giuro che proprio non riuscivo a venirne a capo.... buona serata Gina

  4. #4
    Per così poco!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.