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

Discussione: Paging dati stile Ebay

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54

    Paging dati stile Ebay

    Ciao ragazzi avrei bisogno di un vostro aiutino.

    Ho una tabella MySQL con un migliaio di record.

    Vorrei creare un Paging tipo quello di Ebay.

    Es. Indietro [1][2][3][4][5][6][7][8][9] avanti
    e non
    Es. Indietro [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16] avanti

    In pratica il paging si sposta a gruppi di 9.

    Sul web ho trovato molti esempi di paging dal più bannale a quello semplice ma nulla a caso mio. Molti usano le classi che poi non sn tanto manegevoli in quanto lo complicano.

    Attualmente ho una query che usa l'istruzioni limit per mostrare i dati
    es.select * from articoli where IDArticolo=1 limit 0,10

    Grazie a chi mi vorrà segnalare l'istruzione PHP/MySQL oppure un sito.
    Leo

  2. #2
    Tempo fa avevo fatto un lavoro del genere, proprio una copia di Ebay per un esame universitario.

    Se non ricordo male la questione era quella di calcolare il numero totale di record, dividerli per il numero di record per pagina e trovare il numero di pagine.

    A quel punto ho fatto generare dinamicamente il menu, eseguendo ad ogni pagina un query con il paremetro limit per calcolare da
    (numero pagina * oggetti per pagina)ù
    a
    (((numero pagina+1) * (oggetti per pagina))-1)


    ...spero di essere stato chiaro... provo a vedere se ritrovo il codice scritto a suo tempo.

    Ale

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Ciao
    Ti ringrazio per la gesntile risposta.

    Terrò in considerazione il ragionamento che hai fatto ma preferirei aspettare un esempio più completo. Se nel frattempo troverai il frammento di codice e lo incolli qui ne sarei veramente grato.

    In attesa ti auguro una buona giorna e grazie ancora
    Leo

  4. #4
    premetto che non so come funziona il menu di ebay, però ti posto un esempio di script realizzato al volo che permette, dato un numero di pagine, di visualizzare il menu in blocchi... poi tutto il resto te lo fai te

    Codice PHP:

    <?php
        
        
    /*
        *    setup
        */
        
    $numeropagine 100;    //numero totale di pagine da visualizzare
        
    $cssinpage 'open';    //css da applicare al link quando ci si trova nella pagina specificata dal link
        
    $paginevisualizzabili 9//numero di pagine da visualizzare per blocco
        
    $offset 6;            //pagina dopo la quale non si visualizza piu la pagina 1
        
        //script
        
        
    $actpage 1;
        if(isset(
    $_GET['pg']))
            
    $actpage $_GET['pg'] <= $numeropagine $_GET['pg'] : 1;
        
        
    $pagine range(1,$numeropagine);
        
        function 
    menuDecorator($p){
            global 
    $actpage;
            global 
    $cssinpage;
            
            return 
    sprintf('<td>[ [url="?pg=%s"]%s[/url] ]</td>',
                                 
    $p,
                                 
    $actpage == $p $cssinpage '',
                                 
    $p);
        }
        
        
        
    $fromslice $actpage <= $offset : ($actpage-(--$offset))-1;
        
    $fromslice $fromslice+$paginevisualizzabili $numeropagine $numeropagine $paginevisualizzabili $fromslice;
        
    $slice array_slice($pagine,$fromslice$paginevisualizzabili   );

    ?>
    <style type="text/css">
        .open { font-size:20px; font-weight:bold; color:#C00; }
    </style>
    <?php

        
    echo '<table><tr>';
        if(
    $actpage>1)
            echo 
    '<td>[url="?pg='.($actpage-1).'"]Indietro[/url]</td>';
        echo 
    join("\n",array_map('menuDecorator',$slice));
        if(
    $actpage<$numeropagine)
            echo 
    '<td>[url="?pg='.($actpage+1).'"]Avanti[/url]</td>';
        echo 
    '</tr></table>';
        
    ?>
    EDIT: piccola modifica

    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Ciao
    Ti ringrazio per la gesntile risposta.

    Terrò in considerazione il ragionamento che hai fatto ma preferirei aspettare un esempio più completo. Se nel frattempo troverai il frammento di codice e lo incolli qui ne sarei veramente grato.

    In attesa ti auguro una buona giorna e grazie ancora
    Leo

  6. #6
    Originariamente inviato da jlsweb
    Ciao
    Ti ringrazio per la gesntile risposta.

    Terrò in considerazione il ragionamento che hai fatto ma preferirei aspettare un esempio più completo. Se nel frattempo troverai il frammento di codice e lo incolli qui ne sarei veramente grato.

    In attesa ti auguro una buona giorna e grazie ancora
    Leo
    n'altro frammento di codice? ma che vuoi di piu scusa?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Mittico!
    Grazie mille per la risposta.

    Ultima cosa se possibile, per quanto riguarda la query cosa ci devo scrivere nel limit

    es. "select * from articolo limit ? "

    Grazie per la disponibilità

  8. #8
    con

    codice:
    $_GET['pg']
    ti ritorni la pagina in cui stai (se non è istanziato, ti trovi a pagina 1). Quindi poi puoi calcolarti quanti record farti stampare:

    Codice PHP:

    $actpage 
    1;
        if(isset(
    $_GET['pg']))
            
    $actpage $_GET['pg'] <= $numeropagine $_GET['pg'] : 1;
        
        
    $recordperpage 20;
        
    $fromrecord = ($actpage $recordperpage) - $recordperpage;
        
        echo 
    "limit $fromrecord,$recordperpage

    \n\n"

    buon collage
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Grazie mille!

    ci proverò

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    54
    Grazie Santino83_02 molto gentile.

    Posto il codice a chi fosse interessato dello script:

    Codice PHP:
    <?
    //SCRIPT CHE SI OCCUPA DEL PAGING **********************************************************************************

        
    $totale_record mysql_num_rows(mysql_query("select * from articoli"$oConn));
        
    $actpage 1;
        
    $recordperpage 24//numero di record per pagina
        
    $numeropagine ceil($totale_record/$recordperpage);    //numero totale di pagine da visualizzare 
        
    $cssinpage 'open';    //css da applicare al link quando ci si trova nella pagina specificata dal link 
        
    $paginevisualizzabili 5//numero max di pagine da visualizzare per blocco es. indietro [1][2][3][4][5] avanti
        
    $offset 5;            //pagina dopo la quale non si visualizza piu la pagina 1 
         
        
    if(isset($_GET['pg'])) 
            
    $actpage $_GET['pg'] <= $numeropagine $_GET['pg'] : 1;

        
    $pagine range(1$numeropagine); 
             
        
    $limitDA = ($actpage $recordperpage) - $recordperpage//imposto il primo valore del limit 0
        
    $limitA = ($actpage $recordperpage); //imposto secondo valore del limit 
        
        //esempio echo "select * from tab limit $limitDA,$limitA";
        
    echo "select * from tab limit ".$limitDA.",".$limitA;
         
        function 
    menuDecorator($p)
        { 
            global 
    $actpage
            global 
    $cssinpage
             
            return 
    sprintf('<td>[ [url="?pg=%s"]%s[/url] ]</td>'
                                 
    $p
                                 
    $actpage == $p $cssinpage ''
                                 
    $p); 
        } 
         
        
    $fromslice $actpage <= $offset : ($actpage-(--$offset))-1
        
    $fromslice $fromslice+$paginevisualizzabili $numeropagine $numeropagine $paginevisualizzabili $fromslice
        
    $slice array_slice($pagine,$fromslice$paginevisualizzabili   ); 


    //SCRIPT CHE SI OCCUPA DEL PAGING **********************************************************************************
    ?>
    codice:
    Con questo codice mostro a video il paging
    ?> 
    <style type="text/css">
        .open { font-size:20px; font-weight:bold; color:#C00; }
    </style>
    <?php
    
        echo '<table><tr>';
        if($actpage>1)
            echo '<td>Indietro</td>';
        echo join("\n",array_map('menuDecorator',$slice));
        if($actpage<$numeropagine)
            echo '<td>Avanti</td>';
        echo '</tr></table>';
        
    ?>

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.