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

Discussione: paginazione numerica

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118

    paginazione numerica

    Ciao a tutti,

    ho creato uno script in PHP che legge e stampa alcuni campi dal database.

    Ho aggiunto anche uno script per la paginazione dei risultati in base ai dati inseriti da un cliente X attraverso un form.

    Il massimo che sono riuscito a fare è stato ottenere la paginazione dei risultati con i link "avanti" e "indietro".

    Mi chiedevo se ci fosse la possibilità di avere tutte le pagine in ordine numerico, con la pagina corrente di diverso colore per distinguerla dalle altre ancora non cliccate.

    Qui di seguito parte dello script:

    Un grazie a chi vorrà aiutarmi.

    Codice PHP:
    <?php 
    $num_page 
    = (!isset($_GET[pag]) || empty    ($_GET[pag]) ? $_GET[pag]); 
    $perpage 8
    $query="SELECT * FROM pagine ORDER BY id"
    $res=mysql_query($query); 
    $num_articoli_totali=mysql_num_rows($res); 
    $next $prev false
    $pagine_tot=ceil($num_articoli_totali/$art_per_pag); 
    $link=" "
    if((
    $num_page!=1)&&($num_page<=$pagine_tot)) 

    $pag=$num_page-1
    $link.="<a style=\"color:#BC040E;text-decoration:none\" href=news.php?pag=$pag>Indientro</a>"

    if((
    $num_page>0)&&($num_page<$pagine_tot)) 

    $pag=$num_page+1
    $link.=" <a style=\"color:#BC040E;text-decoration:none\" href=news.php?pag=$pag>Avanti</a>"

    echo 
    $link;
    ?>

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Prova questo. Infatti non è più per pagina ma per "riga" nella tabella. Da adattare comunque. Mancano i controlli sul n° di pagina (che non possa essere maggiore al numero di record e che sia numerico)

    Codice PHP:
    <?php
    $num_page    
    = (!isset($_GET['pag']) || empty($_GET['pag']) ? $_GET['pag']);  
    $perpage     8;  
    $query       "SELECT count(*) as conta FROM pagine";  
    $res         mysql_query($query);
    list(
    $conta) = mysql_fetch_array($res);?>

        <table style="background-color:white" border rules="none" cellspacing=1 bordercolor="black">
         <tr>
              <td class="text">Pagina:</td>
                <td class="text"><?php
           
    //----- Numero di pagine
           
    $x      $conta/$perpage ;
           
    $y   = (integer) $x;
           
    //
           
    if ( $x <> $y ) { $x++; }
           
    $numPagine     $x;
           
    $index         1;
           while (
    $index <= $numPagine) {     
            
    $inizio = ($index 1) * $perpage?>
                    [url="test001.php?pag=<?php"]><?php print $index ?>[/url]<?php
            
    $index++;
                 } // while (
    $index <= $numPagine) ?>
                 
                </td>
             </tr>

        </table>
    <?php 
    $query       = "SELECT FROM pagine order by id limit $num_page$perpage ";  
    $res         = mysql_query($query);
    while (list(
    $id$titolo) = mysql_fetch_array($res)) {
      print "
    ID $id => Titolo =  $titolo</br >";
    } // while (list(
    $id) = mysql_fetch_array($res))
     ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    ciao badaze,

    grazie per la risposta.

    Allora, ho provato il codice da gentilmente proposto. Le pagine vengono visualizzate numericamente.

    Purtroppo, però, ogni numero è linkato a pagine inesistenti.

    Ecco come vengono creati i link ad ogni pagina.

    news.php?pag=0
    news.php?pag=8
    news.php?pag=16

    come fare affinchè le pagine abbiano come link n° di pagina crescente:

    =1
    =2
    =3
    ecc.


    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Qualcuno che sappia risolvere?

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Infatti non è un numero di pagina ma il numero del record della tua tabella.

    In sostanza 0 = al primo record. 8 = al nono, etc...

    Ho provato il codice con una tabella mysql creata appositamente ed il tutto funzionava. Il vantaggio del numero del record é che puoi facilmente controllare il suo valore rispetto al numero degli id che hai.
    Se ad esempio hai 55 id e che pag=100 significa che un furbo tenta di hackarti.

    Posta il codice che hai provato.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Ciao badaze,

    ho utilizzato il codice esattamente cosi come me l'hai postato, eliminando l'ultima parte.

    Non sono molto ferrato in php

    PS - Grazie per l'interesse

    Codice PHP:
    <?php 
    $num_page    
    = (!isset($_GET['pag']) || empty($_GET['pag']) ? $_GET['pag']);   
    $perpage     8;   
    $query       "SELECT count(*) as conta FROM pagine";   
    $res         mysql_query($query); 
    list(
    $conta) = mysql_fetch_array($res);?> 

        <table style="background-color:white" border rules="none" cellspacing=1 bordercolor="black"> 
         <tr> 
              <td class="text">Pagina:</td> 
                <td class="text"><?php 
           
    //----- Numero di pagine 
           
    $x      $conta/$perpage 
           
    $y   = (integer) $x
           
    // 
           
    if ( $x <> $y ) { $x++; } 
           
    $numPagine     $x
           
    $index         1
           while (
    $index <= $numPagine) {      
            
    $inizio = ($index 1) * $perpage?> 
                    [url="test001.php?pag=<?php"]><?php print $index ?>[/url]<?php 
            
    $index++; 
                 } // while (
    $index <= $numPagine
    ?>

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Codice PHP:
    href=test001.php 
    Si riferisce al mio file sul mio PC.

    Se vedi :
    news.php?pag=0
    news.php?pag=8
    news.php?pag=16

    significa che funziona.

    Per visualizzare la liste della "pagina" corrente bisogna utilizzare il resto del codice, adattandolo comunque ai tuoi bisogni. La mia tabella "pagine" ha soltanto 2 campi (id e titolo).
    La seconda parte visualizza 8 records partando dal primo pag=0, dal nono pag=8, etc...
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Hmm...

    molto probabilmente ho spiegato male il problema.

    Praticamente ogni pagina (news.php?pag=1) contiene un tot di 8 articoli che un utente xxx inserisce attraverso un form, compilando alcuni campi:

    titolo
    testo
    sezione
    data

    questi campi compongono un articolo per un max di 8 per pagina.
    Il 9° articolo dovrebbe andare nella 2° pagina: news.php?pag=2.

    E qui la paginazione

    Chiedo venia se non ho colto qualcosa dal tuo precedente post.

    Ti ringrazio.

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Cosa dirti ?

    Prendi il mio codice e salvalo come test001.php poi provalo.

    PS : il href deve essere test001.php
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    118
    Ciao badaze,

    ok, avevi ragione. Ho effettuato delle piccole modifiche e incorporazioni ed ora il codice funge perfettamente.
    Approfitto della tua gentilezza e ti chiedo un'ultima cosa. Cosi come ho scritto nel mio primo post, esiste un modo che mi consenta di visualizzare in diverso colore e non cliccabile il numero della "pag" corrente?

    Se per esempio mi trovo nella "pag=0", ovvero la prima, posso rendere il nr. 1 non cliccabile e con un colore differente in modo da rendere la navigabilità piu fruibile?

    Pagina: 1(pagina corrente) - 2 - 3 - 4 etc..

    Aspettando una tua possibile risposta in merito ti auguro una buona giornata e ti ringrazio.

    PS - Qui di seguito di posto il codice modificato e funzionale.

    Codice PHP:
    <?php 
                            error_reporting
    (E_ERROR E_WARNING E_PARSE);         
                            require_once(
    'admin/config.php');   
                            
    $num_page = (!isset($_GET['pag']) || empty($_GET['pag']) ? $_GET['pag']);   
                            
    $perpage 8;   
                            
    $query "SELECT count(*) as conta FROM pagine";   
                            
    $res mysql_query($query); 
                            list(
    $conta) = mysql_fetch_array($res);
                        
    ?> 

                                     
                        <?php  
                            $query 
    "SELECT * FROM pagine order by id limit $num_page$perpage ";   
                            
    $res mysql_query($query); 
                            while(
    $row mysql_fetch_array($res)) { 
                            
    $html .= "<a href='#' onClick=\"javascript: opensite('more.php?id=$row[id]',0 ,screen.availWidth,  screen.availHeight)\">";                    
                            
    $html .= "<div id='new' title='Clicca e approfondisci'>";
                            
    $html .= "<div id='data'>";
                            
    $html .= "<div id='day'>";
                            
    $html .= "$row[giorno]"
                            
    $html .= "</div>";
                            
    $mese $row[mese];
                            
    $mese_mod substr($mese,0,3);
                            
    $html .= "$mese_mod";
                            
    $html .= "</div>";
                            
    $html .= "<div id='sezione'>";
                            
    $html .= "$row[sezione]";
                            
    $html .= "</div>";
                            
    $html .= "<div id='titolo'>";
                            
    $titolo "$row[titolo]";
                            
    $preview substr($titolo,250);
                            
    $html .= "$preview."

    "
    ;
                            
    $html .= "</div>";
                            
    $html .= "<div id='img_news'></div>";
                            
    $html .= "</div>";
                            
    $html .="</a>";                    
                            }
                            echo 
    $html;
                        
    ?>
                        
                        
    Pagina:
                        <?php  
                            
    //----- Numero di pagine 
                            
    $x      $conta/$perpage 
                            
    $y   = (integer) $x
                            
    // 
                            
    if ( $x <> $y ) { $x++; } 
                            
    $numPagine     $x
                            
    $index         1
                            while (
    $index <= $numPagine) {      
                            
    $inizio = ($index 1) * $perpage
                        
    ?> 
                        
                            <a style="color:#BC040E;text-decoration:none" href=news.php?pag=<?php print $inizio ?>>
                            <?php print $index ?>
                            </a>
                            
                        <?php 
                            $index
    ++; 
                            }  
                        
    ?>

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.