Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    1

    incolonnare risultati di query, come?

    mettiamo di avere una tabella con 2 colonne, ad ora dalla query ottengo una lunga lista di risultati solo sulla prima colonna ordinati cronologicamente, il dubbio è possibile fare in modo che i risultati vengano divisi in modo che la meta piu vecchia sia posizionata sulla seconda colonna?
    esempio grafico:

    ora:
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    quello che vorrei ottenere:
    10 5
    9 4
    8 3
    7 2
    6 1

  2. #2
    Utente di HTML.it L'avatar di ilmila
    Registrato dal
    Apr 2005
    Messaggi
    68
    io ho provato cosi per uno script che ha un array di 10 numeri.
    in teoria estrapoli i dati dal db e li salvi su un array temporaneo e poi aplichi qst metodo , nn è elegante pero funzia..


    Codice PHP:
    $lunghezzaarray=10;
    $meta=5;
    $array=array();

    //L'array popolato con i numeri da 10 a 1 di prova
    $t=0;
    for(
    $k=10$k>=0$k--){
    $array[$t]=$k;
    $t=$t+1;
    }

    //stampo array
    echo "<table >";
    for(
    $i=0$i<$meta$i++){
    $temp=$meta+$i;
    echo 
    "<tr><td>$array[$i]</td><td>$array[$temp]</td></tr>";

    }
    echo 
    '</table>'
    Sistema Acquisizione Risultati Sportivi
    Sistema Prenotazione Posti
    http://parse2005.altervista.org/

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ho trovato questo script di saibal che è perfetto per il caso tuo.
    La pillola si intitola Impaginazione su colonne. L'ho trovata ieri ma oggi non riesco più a trovarla.
    Devi solo modificare il numero di colonne, la tua query e l'echo dei valori è il gioco è fatto.
    Grande saibal.


    Codice PHP:
    //partiamo dalla query per selezionare i dati 
    $query = @mysql_query("FATE VOBIS"); 

    //con mysql_num_rows contiamo i risultati ottenuti. 
    //questo valore ci servirà per la paginazione 
    $num_record mysql_num_rows($query); 

    //adesso dichiaro un po' di variabili utili allo script 

    //colonne è il numero di celle per riga che dovà avere la nostra tabella 
    $colonne 3

    //calcoliamo le righe della tabella che ci dovrebbero venire in base al numero di record 
    /*se ho 6 risultati e ho scelto 3 celle per riga avrò due righe totali*/ 
    $tot_righe $num_record/$colonne

    //dichiaro tre indici che mi serviranno 
    $i_x 0
    $x_x 0
    $k_x 0

    /*questo mi serve per determinare la lunghezza delle celle della tabella. 
    questo valore deve essere variabile ovviamente in base al numero di colonne. 
    mi spiego: se ho due colonne la singola cella dovrà 
    essere lunga il 50%; se metto tre colonne 
    dovrà essere il 33% e così via*/ 
    $cell_width floor(100/$colonne); 


    //adesso scrivo il codice di inizio tabella 
    echo 
    '<table width="80%" border="0" cellspacing="1" cellpadding="3"> 
    <tr>'


    //adesso scorriamo i risultati ottenuti con un ciclo while 
            
    while($array mysql_fetch_array($query)){ 

    //incremento gli indici perchè mi serviranno dopo 
    $i_x++; 
    $k_x++; 
    $x_x++; 

    //stampo le celle dei risultati 
    echo'<td width="$cell_width%">$array[nome]</td>'

    /*ogni volta che l'indice $i_x è uguale al numero 
    di colonne scelto vuol dire che devo chiudere una riga*/ 
    if($i_x == $colonne) { 
         
        echo
    '</tr>'
         
    /*se invece l'indice $i_x è uguale al numero di colonne 
    scelto ma l'indice $x_x diviso le colonne è diverso 
    dalle righe che dovremmo avere vuol dire che ci sono 
    ancora dei risultati da stampare. quindi apro una nuova riga*/ 

    if ($i_x == $colonne && (($x_x/$colonne) != $tot_righe)) { 

            echo
    '<tr>' 

                 

    //riazzero l'indice $i_x per riniziare i calcoli fin quando mi serve 
    $i_x 0
                                        } 
    // fine $i_x == $colonne 

    //fine del ciclo 

    /*a questo punto devo vedere che tipo di tabella mi è venuta fuori. 
    in pratica devo vedere se ci sono delle celle vuote 
    da stampare oppure posso chiudere la tabella. 
    per fare questo faccio due controlli 

    se il numero di celle scelte per riga è superiore ai risultati ottenuti per riga stampo o meno le celle mancanti. 

    questo può succedere perchè magari abbiamo scelto di 
    avere 3 celle per riga ma i risultati ottenuti sono 4 
    e quindi c'è l'inizio di una seconda riga che 
    deve avere per forza tre celle... 
    un po' contorto ma dovreste aver capito*/ 

    if ($colonne <= $x_x){ 

    /*stampo le celle mancanti se la divisione dei risultati per le colonne dà il resto. 
    questo vuol dire appunto che 
    ci sono meno risultati per riga rispetto alle celle scelte*/ 
    if (($k_x%$colonne) != 0){ 

        
    $indice $k_x

    /*inizio un breve ciclo che in pratica fa questo: 
    "per ogni riga, se vedi che i risultati ottenuti 
    sono inferiori alle celle scelte con $colonne, 
    stampami delle celle vuote fino ad arrivare 
    al completamento della riga*/ 
    while (($indice%$colonne) != ){ 

    echo
    '<td>[img]immagine_vuota.gif[/img]</td>'

    //incremento il nuovo indice per ripetere l'operazione fin quando necessario 
    $indice++; 

                 } 
    //fine ciclo while 

    /*se invece la divisione non dà resto vuol dire che 
    il numero di risulati va bene in base alle celle scelte 
    (ad esempio 3 celle per riga con 6 risulati: 6/3 = 2)*/ 

      
    if(($indice%$colonne) == ){ 

    echo
    '</tr>'
             
              } 

            } 
    //fine ($k%$colonne)!= 0 

                    
    /*stessa cosa qui: il numero di risulati va bene in base 
    alle celle scelte e quindi posso chiudere la riga*/ 
    } else{ //fine if $colonne <= $x 
      
    echo '</tr>'
                     
                     } 

    //adesso posso finalmente chiudere la tabella 
    echo '</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 © 2025 vBulletin Solutions, Inc. All rights reserved.