Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54

    Dividere risultati in piu pagine

    Ciao, ho la pagina "entra.php?pagina=catalogo-libri" riscritta con htaccess, quindi attualmente uso catalogo-libri.html.

    Il problema e' che in quella pagina vorrei mostrare 20 risultati per pagina, ma il codice che ho non funziona... tenendo presente che a inizio pagina ho il codice che mi mostra i libri con una limit 0,20 ho scritto questo codice...ma quando clicco sull'URL generato, cambia pagina, ma i risultati sono i medesimi...

    eccolo qui:

    codice:
    $count = mysql_query("SELECT COUNT(id) FROM libri");
    $res_count = mysql_fetch_row($count);
    $tot_records = $res_count[0];
    $per_pagina = 4;
    $tot_paginas = ceil($tot_records / $per_pagina);
    $current_pagina = (!$_GET['pag']) ? 1 : (int)$_GET['pag'];
    $primo = ($current_pagina - 1) * $per_pagina;
    $paginazione = "Pagine totali: " . $tot_paginas . "
    [";
    for($i = 1; $i <= $tot_paginas; $i++) {
    if($i == $current_pagina) {
    $paginazione .= $i . " ";
    } else {
    $paginazione .= "<a href=\"catalogo-libri/$i.html\" title=\"Vai alla pagina $i\">$i</a> ";
    }
    }
    $paginazione .= "]";
    echo " $paginazione
    ";
    ?>

  2. #2
    Utente di HTML.it L'avatar di polinet
    Registrato dal
    Nov 2000
    Messaggi
    993
    paginazione dal grande HTML.IT
    posta catalogo-libri


    sono curioso.... :master:
    ¿Hasta la pasta?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    ok ma e' un po lungo

    codice:
    <div id="mezzo_libri">
    <h2>Catalogo libri</h2>
    
    
    blah blah
    
    
    
    
    <?php
    $config['rows_for_line'] = '2';
    $r_h = mysql_query('SELECT * FROM libri order by titolo');
    echo '<table width="100%">';
    $r = 1; 
    for($c=1;;$c++) {
    $row = mysql_fetch_array($r_h);
    if($r == 1) echo '<tr>'."\n";
    $titolo = str_replace("_"," ",$row['titolo']);
    $titolo2 = str_replace("%20","_",$row['titolo']);
    $titolo2 = str_replace(" ","_",$row['titolo']);
    if ($row['titolo'] == NULL) {
    echo '<td style="background-image:url(immagini/catalogo.gif);" width="50%">[img]immagini/covers/fine.gif[/img]'."\n";
    echo "
    
    Catalogo terminato!"; 
    } else {
    echo '<td style="background-image:url(immagini/catalogo.gif);" width="50%">[img]immagini/covers/'.($row['copertina']).'[/img]'."\n";
    echo "$titolo
    ";
    echo "autore: $row[autore]
    ";
    echo "editore: $row[editore]
    ";
    echo "numero pagine: $row[pagine]
    ";
    echo "prezzo: $row[prezzo] euro
    ";
    echo "<a href=\"dettagli-libro/$titolo2.html\"><div id=\"raquo\">&raquo;</div>visualizza dettagli</a>
    ";
    }
    if ($row['prezzo'] != 0) {
    include('pagine/bottone-carrello.php');
    }
    if($r == $config['rows_for_line']) {echo '</tr>'."\n";$r = 0;}
    $r++;
    if ($c >= mysql_num_rows($r_h) && is_int(($c / $config['rows_for_line']))) break; 
    }
    echo '</table>';
    ?>
    
    
    <?php
    echo "<center>Ci sono " .mysql_num_rows($r_h). ' libri nel catalogo';
    ?>
    </p>
    </div>

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    up per favore mi manca solo questo non trovo cosa non va!! :master:

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    posta anche la regola di riscrittura per vedere come diventa il parametro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    certo, eccolo:

    RewriteRule ^catalogo-libri/([^/*]+).html$ entra.php?pagina=catalogo-libri&pag=$1 [L]

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mh... non ho ben capito... lo script che legge dal db fa una SELECT senza vincoli quindi ti pesca sempre tutto quanto... insomma il parametro $_GET['pag'] non è usato da nessuna parte... nella bozza che proponevi inizialmente lo consideri per mettere i link di navigazione, ma la SELECT resta invariata...

    dovresti aggiungere nella SELECT un LIMIT $offset, 20 dove $offset lo devi definire come 20*($pag-1) supponendo appunto che $pag (=$_GET['pag']) vada da 1 in avanti

    In pratica se sei nella pagina 1 avrai un LIMIT 0, 20 che pesca i primi 20 record, se sei nella 2 LIMIT 20, 20 peschi dal 21 al 40... e così via

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    esatto, il risultato che vorrei e' quello...

    Questa e' la select che seleziona tutti i libri ordinati per titolo e vorrei limitarla a 20 risultati per pagina...
    $r_h = mysql_query('SELECT * FROM libri order by titolo limit 0,20');

    Con l'aiuto del mio nubbismo, ho costruito questo codice...

    codice:
    $pagina = htmlspecialchars($_GET['pagina']);
    $offset = 20*($pagina-1);
    $r_h = mysql_query('SELECT * FROM libri order by titolo limit $offset,20');
    [...] while { ... mostra i libri... } [...]
    $count = mysql_query("SELECT COUNT(id) FROM libri");
    $res_count = mysql_fetch_row($count);
    $tot_records = $res_count[0];
    $per_pagina = 4;
    $tot_paginas = ceil($tot_records / $per_pagina);
    $current_pagina = (!$pagina) ? 1 : (int)$pagina;
    $primo = ($current_pagina - 1) * $per_pagina;
    $paginazione = "Pagine totali: " . $tot_paginas . "
    [";
    for($i = 1; $i <= $tot_paginas; $i++) {
    if($i == $current_pagina) {
    $paginazione .= $i . " ";
    } else {
    $paginazione .= "<a href=\"catalogo-libri/$i.html\" title=\"Vai alla pagina $i\">$i</a> ";
    }
    }
    $paginazione .= "]";
    echo " $paginazione
    ";
    corretto cosi?

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    pare di sì in linea di massima...

    magari puoi cambiare $pagina = htmlspecialchars($_GET['pagina']); con
    Codice PHP:
    $pagina = ((isset($_GET['pagina'])?(intval($_GET['pagina'])):(0)); 
    inoltre $r_h = mysql_query('SELECT * FROM libri order by titolo limit $offset,20'); con
    Codice PHP:
    $r_h mysql_query('SELECT * FROM libri order by titolo limit '.$offset.',20'); 
    poi ho dato un'occhiata rapida... meglio provare no? eventualmente riporta gli errori.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    Fatto ma mi dice:

    codice:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.*****.net/home/****/pagine/catalogo-libri.php on line 13
    Linea 13:
    $row = mysql_fetch_array($r_h);

    $r_h e' la query con limit '.$offset.',20

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 © 2024 vBulletin Solutions, Inc. All rights reserved.