Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Paginazione risultati

  1. #1
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    Paginazione risultati

    Ragazzi stavo leggendo la pillola presente sul forum e mi sono adoperato per adeguare il codice alle mie esigenze:
    ho creato il file .class
    codice:
    class _makePager {
    
     var $limit;
     var $page;
     var $numPages;
     var $offset;
     var $sql;
     var $menu;
    
     function _makePager ( $limit ) {
    
      $this->limit = $limit;
    
     }
    
     function _getPagerData ( $numHits, $page ) {
    
      $numHits = (int) $numHits;
      $this->limit = max((int) $this->limit, 1);
      $this->page = (int) $page;
      $this->numPages = ceil($numHits / $this->limit);
      $this->page = max($this->page, 1);
      $this->page = min($this->page, $this->numPages);
      $this->offset = ($this->page - 1) * $this->limit;
      $this->sql = " LIMIT ".$this->offset.", ".$this->limit;
      $this->_makeMenu();
    
     }
    
     function _makeMenu () {
    
      if ($this->numPages>1) {
    
       if ($this->page>1) $this->menu['PREVIOUS'] = ($this->page-1);
    
       for ($i=1; $i<=$this->numPages; $i++) {
        if ($i == $this->page) $this->menu['PAGES'][] = array (
                                   'ID'     => $i,
                                   'STATUS' => false
                                  );
        else $this->menu['PAGES'][] = array (
                         'ID'     => $i,
                         'STATUS' => true
                        );
       }
    
       if ($this->page<$this->numPages) $this->menu['NEXT'] = ($this->page+1);
    
      }
    
     }
    
     function _getUri ( $_pagevar ) {
    
      $_getvars = $_SERVER["QUERY_STRING"];
      $_url = $_SERVER["PHP_SELF"]."?";
      $_getvars = explode( "&", $_getvars );
    
      for ($i=0; $i!=count($_getvars); $i++) {
       list ($key, $value) = explode( "=", $_getvars[$i] );
       if (($key)&&($value)) if ($key!=$_pagevar) $_url.= "{$key}={$value}&";
      }
    
      return "{$_url}{$_pagevar}=";
    
     }
    
    }
    e poi nella pagina che estrae i risultati ho messo:
    Codice PHP:
    <?
    require_once("php.sql.pager.class");
    $_PAGER = new _makePager(2);

    include(
    "top_foot.inc.php");
    include(
    "config.inc.php");
    top();
    $db mysql_connect($db_host$db_user$db_password);
    $_sql mysql_query("SELECT COUNT(*) FROM prodotti");
    $_PAGER =  _getPagerData(mysql_result($_sql),$_GET[p]);

    $_sql mysql_query("SELECT * FROM prodotti ORDER BY marca {$_PAGER->sql}");
    while (
    $row mysql_fetch_row($_sql)) {
     
    // STAMPO I RISULTATI
    echo "$row[marca]";
    }
    if (
    $_PAGER->menu['PREVIOUS']) echo "<a href=\"".$_PAGER->_getUri("p").$_PAGER->menu['PREVIOUS']."\">pagina precedente</a>";

    $_PGS $_PAGER->menu['PAGES'];
    for (
    $j=0$j!=count($_PGS); $j++) {

     if (
    $_PGS[$j]['STATUS']) echo " [ <a href=\"".$_PAGER->_getUri("p").$_PGS[$j]['ID']."\">{$_PGS[$j]['ID']}</a> ] ";
     else echo 
    $_PGS[$j]['ID'];

    }

    if (
    $_PAGER->menu['NEXT']) echo "<a href=\"".$_PAGER->_getUri("p").$_PAGER->menu['NEXT']."\">pagina successiva</a>";

    mysql_close($db); 
                                        
    foot();
                                        
    ?>
    Se testo questa pagine esce l'errore: Call to undefined function: _getpagerdata()

    WHy?

  2. #2
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    Non riesco proprio a capire... ho riletto più volte la pillola presente sul forum ma niente da fare... confido in voi

  3. #3
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    ?

  4. #4
    C'era una ERRATA CORRIGE nella pillola, infatti quando mi sono reso conto dell'orrore che avevo commesso, non potevo più modificare.

    Trova questa riga:
    Codice PHP:
    $_PAGER =   _getPagerData(mysql_result($_sql),$_GET[
    p]); 
    e sostituiscila con
    Codice PHP:
    $_PAGER->_getPagerData(mysql_result($_sql),$_GET[
    p]); 
    e vedrai che tutto funzia!
    [ DarCas The Architect ]
    [ The DarCas Of Blog ]
    Chuck Norris riesce a trovare un pagliaio dentro a un ago
    :maLOL:

  5. #5
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    ora ho l'ho messo cosi:
    Codice PHP:
    //...
    $_sql mysql_query("SELECT COUNT(*) FROM prodotti");
    $_PAGER-> _getPagerData(mysql_result($_sql),$_GET[p]);

    $_sql mysql_query("SELECT marca FROM prodotti ORDER BY marca {$_PAGER->sql}");
    while (
    $row mysql_fetch_row($_sql)) {
     
    // STAMPO I RISULTATI
     
    echo "<td><font class='testo'>[b]$row[marca][/b]</font></td>";
    }
    if (
    $_PAGER->menu['PREVIOUS']) echo "<a href=\"".$_PAGER->_getUri("p").$_PAGER->menu['PREVIOUS']."\">pagina precedente</a>";

    $_PGS $_PAGER->menu['PAGES'];
    //.... 
    Mi dice:
    Wrong parameter count for mysql_result() nella linea appena modificata!
    Poi
    mysql_fetch_row(): supplied argument is not a valid MySQL result resource nella linea 'while ($row = mysql_fetch_row($_sql)) {'

    Cosa vuol dire? E' giusto il modo in cui stampo i risultati del campo marca?

  6. #6
    Se non erro, la paginazione utilizzando un database mysql è molto semplice perchè ha una istruzione "sql" (ho messo le virgolette perchè è propria di mysql e on di sql ANSI 92) che regola proprio la paginazione.

    Sto parlando della clausola LIMIT !!!
    Nel tuo caso basta cambiare la query da :

    "SELECT marca FROM prodotti ORDER BY marca"

    a:

    "SELECT marca FROM prodotti ORDER BY marca LIMIT 0,20"

    così facendo lui restituisce i record da 0 a 20 (21 records)

    Ciao Anton1o
    Vuoi guadagnare con il tuo sito ?
    affiliati con noi e riceverai ottime percentuali !!!
    Travellero Affiliate Program
    Scambia link con noi

  7. #7
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Non cambia niente, stessi errori
    Io ho ripreso l'esempio della pillola postato da DarCas

    non posso mettere io il limit perchè è già impostato nel codice il numero massimo da estrarre per ogni pagina

  8. #8
    Originariamente inviato da semolino
    Non cambia niente, stessi errori
    Io ho ripreso l'esempio della pillola postato da DarCas

    non posso mettere io il limit perchè è già impostato nel codice il numero massimo da estrarre per ogni pagina
    Ma tu la connessiona al DB la apri?
    Perchè quell'errore mi da di mancata referenza all'oggetto db...

    Magari fai così.. Posta tutto il codice così controlliamo!
    [ DarCas The Architect ]
    [ The DarCas Of Blog ]
    Chuck Norris riesce a trovare un pagliaio dentro a un ago
    :maLOL:

  9. #9
    Originariamente inviato da anton1o
    Se non erro, la paginazione utilizzando un database mysql è molto semplice perchè ha una istruzione "sql" (ho messo le virgolette perchè è propria di mysql e on di sql ANSI 92) che regola proprio la paginazione.

    Sto parlando della clausola LIMIT !!!
    Nel tuo caso basta cambiare la query da :

    "SELECT marca FROM prodotti ORDER BY marca"

    a:

    "SELECT marca FROM prodotti ORDER BY marca LIMIT 0,20"

    così facendo lui restituisce i record da 0 a 20 (21 records)

    Ciao Anton1o
    Ma no???!!!
    [ DarCas The Architect ]
    [ The DarCas Of Blog ]
    Chuck Norris riesce a trovare un pagliaio dentro a un ago
    :maLOL:

  10. #10
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    questo è il codice della pagina che si collega al db:
    Codice PHP:
    ?
    // parametri del database
    $db_host "localhost";
    $db_user "root";
    $db_password "";
    $db_name "nome_Db";

    //password per inserimento articoli
    $password "123456";
    ?> 
    questo è il codice della pagina che estrae il risultato:
    Codice PHP:
    ?
    require_once(
    "php.sql.pager.class");
    $_PAGER = new _makePager(20);

    include(
    "top_foot.inc.php");
    include(
    "config.inc.php");
    top();
    $db mysql_connect($db_host$db_user$db_password);
    $_sql mysql_query("SELECT COUNT(*) FROM prodotti");
    $_PAGER-> _getPagerData(mysql_result($_sql),$_GET[p]);

    $_sql mysql_query("SELECT marca FROM prodotti ORDER BY marca {$_PAGER->sql}");
    while (
    $row mysql_fetch_row($_sql)) {
     
    // STAMPO I RISULTATI
      
    echo "<td><font class='testo'>[b]$row[marca][/b]</font></td>";
    }
    if (
    $_PAGER->menu['PREVIOUS']) echo "<a href=\"".$_PAGER->_getUri("p").$_PAGER->menu['PREVIOUS']."\">pagina precedente</a>";

    $_PGS $_PAGER->menu['PAGES'];
    for (
    $j=0$j!=count($_PGS); $j++) {

     if (
    $_PGS[$j]['STATUS']) echo " [ <a href=\"".$_PAGER->_getUri("p").$_PGS[$j]['ID']."\">{$_PGS[$j]['ID']}</a> ] ";
     else echo 
    $_PGS[$j]['ID'];

    }

    if (
    $_PAGER->menu['NEXT']) echo "<a href=\"".$_PAGER->_getUri("p").$_PAGER->menu['NEXT']."\">pagina successiva</a>";

    mysql_close($db); 
    foot();
    ?> 

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.