Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225

    Dividere risultati di un ciclo WHILE

    Salve a tutti ,

    estraggo dei dati da un db e li elenco con un ciclo WHILE, mettiamo ad esempio , che tramite un contatore riesco a sapere che i record estratti sono 100


    Codice PHP:
    $cont 0;

        while (
    $row=mysql_fetch_array($sel)) {  

    $cont++

    echo 
    $cont."<br";

    }

    $pag $cont 30 ;

    echo 
    "Servono ".$pag." pag."


    Ho una tabella dove vengono viuslizzati i record estratti , ma se il n° dei risultati è alto vorrei suddividere i riustati nelle pagine che sono necessarie , magari ripetendo la tabella per il numero di pagine.
    Ad esempio se i record sono 100 e li divido in gruppi da 30 , mi servono 4 pagine, come ho brutalmente indicato sopra (anche se non completo ).

    Credevo di poter risolver dividendo i risultati e passando al CICLO1 i risultati 0-30 al CICLO2 da 31-60 ecc.....

    GRAZIE A TUTTI
    SAT

  2. #2
    Fatti una paginazione con sql! Ti serve sapere il primo record della pagina e come si usa LIMIT, cerca un pò on line ci sono un sacco d guide!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225
    solo che io voglio ripetere la tabella per il numero di pagine

    in modo da averle una sotto l'altra .....

  4. #4
    cioè?
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  5. #5
    Allora..... fai così.

    Il numero di record lo vai a pescare dal DB con una query SELECT COUNT.

    Se il numero di pagine non è divisibile per il numero di record che vuoi visualizzare, devi usare ceil(): ti restituisce il numero di pagine di cui avrai bisogno pr stampare tutte le tabelle che a te servono approssimato all'intero superiore.

    Una volta che tu sai di quante pagine hai bisogno, allora usi il LIMIT nella query per stabilire da quale record iniziare e a quale record terminare la paginazione.

    Ti muoverai per le pagine con una variabile passata via GET.

    Butto giu un po' di codice, sperando sia esplicativo.

    Codice PHP:
    // ammesso che l'URL sia del tipo
    // visualizzatore.php?pag=xx
    $pag $_GET['pag'];
    $tot $_GET['tot'];

    // variabile per quantificare il numero di record per pagina
    $quante 30;

    if (!
    $pag OR $pag == 1) {
    // è la prima volta che visualizzo la pagina
    // query per contare i record presenti
    $sql "SELECT COUNT(id) AS totale FROM tabella";

    $query mysql_query($sql);
    $result mysql_result($query,0,'totale');
    // liberi risorse
    mysql_free_result($query);

    // numero pagine necessarie per visualizzare tutti i record
    $tot ceil($result);

    // definisco gli estremi del LIMT
        
    $min 1;
        
    $max $quante;
    } else {
    // ho già tutto quello che mi serve per definire il LIMIT
        
    $min $quante;
        
    $max $quante $pag;
    }

    $sql "SELECT * FROM tabella LIMIT $min$max";

    $query mysql_query($sql);

    while (
    $fetch mysql_fetch_array($query)) {
    // estrapoli i dati e stampi la tabella
    }
    // liberi risorse
    mysql_free_result($query);

    // stampi il menu di navigazione

    if ($pag 1) {
    $prima $pag 1;
    echo 
    "
    <a href=\"visualizzatore.php?pag=
    $prima&tot=$tot\">Indietro</a> ::: 
    "
    ;


    if (
    $pag tot) {
    $dopo $pag 1;
    echo 
    "
    <a href=\"visualizzatore.php?pag=
    $dopo&tot=$tot\">Avanti</a>
    "
    ;

    Come avrai capito, la pagina richiama sempre sé stessa.
    Non ho provato il codice, ma dovrebbe funzionare.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225
    in questo modo pero' ho una tabella che viene riempita ad ogni POST pagina

    ed io vorrei avere le tabelle in elenco ripetute per il numero di pagine ... in modo da poter stampare le pagine in seguenza

    Codice PHP:
    <?PHP 
        
    for($pg=0$pg $totpg$pg++ ){  
                            
    $x $pg*$righe ;    // imposto il LIMIT x, y
    $y = ($pg+1)*$righe;   
                                         
                include(
    "inc_doc.php");  
                                        


                                         }
    ?>

    inc_doc.php

    Codice PHP:
    $seldet mysql_query("SELECT * FROM dettagli WHERE id = '".$_GET['id']."' LIMIT $x,$y "); 


        while (
    $rowdet=mysql_fetch_array($seldet)) {  //inserisce i dettagli 
    la struttura è cosi;

    cod utente anni sesso
    123 Mario Rossi 21 M //in questo caso non ci sono dettagli
    222 Beppe Verdi 78 M
    --- tel 012345654132471
    --- fax 012345656879858
    --- email email@email.it

    333 Luca Gialli 24 M
    444 eccetera

    il tutto elencato riga x riga dove il cliente è una riga ed i dettagli non sono dei semplici
    ma righe vuote contenenti

    --- dettaglio vuoto vuoto vuoto

    in ogni record del database sulla tabella utenti ci sono nome cognome eccc..... e poi i dettagli , separati da una virgola .....





    GRAZIE
    SAT

  7. #7
    Senza offese, ma il tuo post chiedeva come si poteva creare un menu di navigazione tra pagine, non lo sviluppo completo di come visualizzare tutti i dettagli (o meno) per ogni singolo record.

    Non ho capito quale sia il tuo problema per lo script che mi compete.
    in questo modo pero' ho una tabella che viene riempita ad ogni POST pagina ed io vorrei avere le tabelle in elenco ripetute per il numero di pagine ... in modo da poter stampare le pagine in seguenza
    Se non vuoi ricaricare la pagina, credo proprio che dovrai ricorrere ad Ajax.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    225
    Originariamente inviato da satwanted
    solo che io voglio ripetere la tabella per il numero di pagine

    in modo da averle una sotto l'altra .....

    non voglio una navigazione tra risultati

    ho provato a dividere il numero dei risultati+ il numero dei dettagli per il numero di righe che vorrei per ogni tabella e attraverto un ciclo for (contatore PAG) gli faccio ripetere le tabelle x il n. pag
    solo che se un utente ha 100 righe di dettaglio il numero di righe x pagina che ho impostato non và piu bene .....

    Spero di essermi spiegato bene

    e
    GRAZIE CMQ

  9. #9
    Ah.. credo di avere capito.

    Diciamo che quindi il while è interno ad ogni record perché a priori non sai quanti campi per ogni record devi andare a visualizzare.
    :master:
    Mi sto per inventare un mostro tecnologico, ma non so se sia funzionante.

    Prova così:

    Codice PHP:
    $sql "SELECT * FROM tabella WHERE id = $id ";
    $query mysql_query($sql);

    $i 0;
    while (
    $fetch mysql_fetch_array($query)) {
    // while scorre l'array composto col mysql_fetch_array
    // una riga alla volta
    // con il count dovremmo riuscire a vederne il numero
    // di ognuno

    $numero count($fecth);
    echo 
    "Riga dell'array - $i: " $numero;
    $i ++;


    Prova a stampare così e vedi come funziona.
    Se tutto va bene, per ogni record, dovresti ottenere il numero dei campi estrapolati.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.