Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Scorrimento array-pagine

    ciao,

    ho un array con un certo numero di elementi, devo realizzare un sistema che fissato un certo numero deve visualizzare per ogni pagina quel numero di componenti. Faccio un esempio:
    ho un array con 25 elementi. Voglio che in ogni pagina appaiano 10 elementi. Nella prima pagina le prime 10, poi altre 10 e poi le ultime 5.
    Ho bisogno di un sistema che prenda a 10 a 10 le componenti e le visualizzi nella pagina e un sistema di scorrimento pagine...mi sto scervellando da stamattina e non ci riesco, qualcuno può darmi una mano?
    Ho provato a riadattare un sistema simile ma fatto sui dati prelevati da database ma non riesco a modificarlo..lo posto (solo la parte utile allo scorrimento) nel caso qualcuno può dirmi come modificarlo:

    Codice PHP:
    <?
    $query_conta
    ="SELECT COUNT(*) FROM messaggi WHERE tipo_msg='altri';";
    $result_conta=mysql_query($query_conta) or die ("impossibile eseguire: $query_conta");    
    $row_conta=mysql_fetch_row($result_conta);
        
    // Fisso alcuni parametri come il nr di msg x pag e il num di pag
        
    $msg_per_pagina 10;
        
    $pag=$_REQUEST[pag];
        if (
    $pag==""$pag=1;
        if (!isset(
    $pag)) $pag=1;
        if(
    $_REQUEST["pag"]!=""$pag=1;
        
    $num_pages=(int)(($row_conta[0]-1)/$msg_per_pagina);
        
    $inf=($pag-1)*$msg_per_pagina;

    // Recupero i messaggi per numero fissato
    $query="SELECT * FROM messaggi WHERE tipo_msg='altri' ORDER by id DESC limit $inf$msg_per_pagina;"
    $result_post=mysql_query($query_post) or die ("impossibile eseguire: $query_post");

    //Stampo quelo che devo

    // Sistemo il sistema di avanzamento e indietro pagine
    if ($num_pages>0){?>
    <table border="1" align="center">
    <tr> 
    <td><? echo "Pagina: " ?></td>
    <td><?            
    $gruppo
    =((int)(($pag-1)/10))+1;    
    $start=($gruppo*10)-9;    
    if (
    $num_pages > ($gruppo 10)) $end=($gruppo*10);
    else 
    $end=$num_pages+1;
    $i=$start-1;    
    if (
    $gruppo>1) echo "<a href=\"gest_spam.php?pag=$i\">$i</a>";
    for (
    $i=$start;$i<=$end;$i++) {
    if (
    $i==$pag) echo "[b]$i[/b]";
    else echo 
    "<a href=\"gest_spam.php?pag=$i\">$i</a>";
    }
    if ((
    $num_pages+1)!=$end) echo "<a href=\"gest_spam.php?pag=$i\">$i</a>";?>      
    </td>
    </tr>
    </table>
    ho eliminato l'indentazione perchè non era molto leggibile..questo è relativo al sistema con dati prelevati da database che mi sembra più semplice da realizzare
    Spero qualcuno mi aiuti.
    grazie.
    PeppePegasus

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, guarda l'esempio qui http://it.php.net/manual/en/function.array-chunk.php
    Dividi un array e poi in base alla pagina che passi volendi prendi la chiave che interessa del tipo:

    Pagina passata = 1
    $array[1] ha i risulatati da 11 a 20

  3. #3
    ciao,

    grazie al tuo suggerimento con questo codice sembra funzionare

    Codice PHP:
    <?
    $vettore
    =array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);

    $lungh_array=count($vettore);
    $com_per_pagina 5;
    $pg=$_REQUEST[pg];
    echo 
    "Pag inizio: $pg 
    "
    ;

    if (
    $pg==""$pg=1;
    if (!isset(
    $pg)) $pg=1;
    if(
    $_REQUEST["pg"]!=""$pg=1;

    $num_pages=(int)(($lungh_array-1)/$com_per_pagina);
    //    echo "num pag: $num_pages 
    ";
    $inf=($pg-1)*$nomi_per_pagina;

    // print_r(array_chunk(
    $vettore, 5));

    $dato=array_chunk($vettore$com_per_pagina);

    //for (
    $pagina=1;$pagina<=3;$pagina++) {
        echo "
    Pag$pg 
    ";
        print_r(
    $dato[$pg-1]);
    //}

    if (
    $num_pages>0){?>
        <table border="
    1" align="center">
            <tr> 
                <td><? echo "
    Pagina" ?></td>
                <td><?            
                    
    $gruppo=((int)(($pag-1)/10))+1;    
                    
    $start=($gruppo*10)-9;    
                    if (
    $num_pages > ($gruppo * 10)) $end=($gruppo*10);
                    else 
    $end=$num_pages+1;
                        
    $i=$start-1;    
                    if (
    $gruppo>1) echo "<a href=\"prova2.php?pg=$i\">$i</a>";
                        for (
    $i=$start;$i<=$end;$i++) {
                            if (
    $i==$pag) echo "[b]$i[/b]";
                        else echo 
    "<a href=\"prova2.php?pg=$i\">$i</a>";
                        }
                    if ((
    $num_pages+1)!=$end) echo "<a href=\"prova2.php?pg=$i\">$i</a>";?>      
                </td>
            </tr>
        </table>
    <? 
    }
    ?>
    ora devo passarlo a un caso reale i cui dati del vettore sono presi da database.
    grazie per il suggerimento..l'unico che è arrivato...
    Ho trasposto il metodo sull pagina in cui mi serviva diciamo che funziona ma quando mi stampa mi esce al posto del valore che deve uscire la scritta:
    Array([2-1])
    se sono sulla seconda pagina..qualcuno sa darmi qualche aiuto a riguardo?
    ciao.
    PeppePegasus

  4. #4
    ciao,

    il sistema non funziona perchè nella versione ufficiale non mi deve uscire la scritta array ma solo il contenuto o i valori dell'array.
    Il codice è questo:

    Codice PHP:
    <?
    $vettore
    =array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);

    $dato=array_chunk($vettore5);

    $lungh_array=count($vettore);
    $com_per_pagina 5;

    $pg=$_REQUEST[pg];
    echo 
    "Pag inizio: $pg 
    "
    ;

    $num_pages=(int)(($lungh_array-1)/$com_per_pagina);
    $inf=($pg-1)*$nomi_per_pagina;

    $ppag=$pg-1;
    echo 
    "Pag: $pg 
    "
    ;
    printf_array($dato[$ppag]); 


    if (
    $num_pages>0){?>
        <table border="1" align="center">
            <tr> 
                <td><? echo "Pagina: " ?></td>
                <td><?            
                    $gruppo
    =((int)(($pag-1)/10))+1;    
                    
    $start=($gruppo*10)-9;    
                    if (
    $num_pages > ($gruppo 10)) $end=($gruppo*10);
                    else 
    $end=$num_pages+1;
                        
    $i=$start-1;    
                    if (
    $gruppo>1) echo "<a href=\"prova2.php?pg=$i\">$i</a>";
                        for (
    $i=$start;$i<=$end;$i++) {
                            if (
    $i==$pag) echo "[b]$i[/b]";
                        else echo 
    "<a href=\"prova2.php?pg=$i\">$i</a>";
                        }
                    if ((
    $num_pages+1)!=$end) echo "<a href=\"prova2.php?pg=$i\">$i</a>";?>      
                </td>
            </tr>
        </table>
    <? 
    }
    ?>
    e il risultato è questo:

    Pag inizio: 1
    Pag: 1
    Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
    Pagina: 1 2 3 4 5

    a me le parentesi quadre, la scritta array non serve..come posso fare?
    grazie!
    ciao.
    PeppePegasus

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.