Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    43

    tabella dinamica con dati passati da una query

    Salve,
    devo utilizzare dei dati risultanti da una query sul db e li devo mettere in una colonna di una tabella, io ho provato a fare così:
    Codice PHP:
        $result=$_SESSION['db']->execute("SELECT bi_idrichie,re_richieste_bw,re_articoli_ricev,re_richieste_ln,re_articoli_forni,(re_articoli_ricev) - (re_articoli_forni) AS differenza_ricev_forni FROM report_biblio WHERE bi_idforni=".$_SESSION['biblio']->bi_id." AND re_anno=$year ");
                    
                while (
    $row=$_SESSION['db']->fetch($result))
                {
                    
                    
    $array1[]=$row["bi_idrichie"];
                    
    $array2[]=$row["re_richieste_bw"];
                    
    $array3[]=$row["re_articoli_ricev"];
                    
    $array4[]=$row["re_richieste_ln"];
                    
    $array5[]=$row["re_articoli_forni"];
                    
    $array6[]=$row["differenza_ricev_forni"];

                }
                

                    echo 
    "<h3>Scambi tra biblioteche nell'anno $year</h3>
    "
    ;
                    echo 
    "<table class=\"report_table\">";

                        
                    echo 
    "      <tr><th>Biblioteca richiedente:</td></th><td>".$array1."</td></tr>";
                    echo 
    "        <tr><th>Numero Richieste di Borrowing</th><td>".$array2."</td></tr>";
                    echo 
    "        <tr><th>Numero Articoli Ricevuti</th><td>".$array3."</td></tr>";
                    echo 
    "        <tr><th>Numero Richieste di Lending</th><td>".$array4."</td></tr>";
                    echo 
    "        <tr><th>Numero Articoli Forniti</th><td>".$array5."</td></tr>";
                    echo 
    "        <tr><th>Differenza Articoli</th><td>".$array6."</td></tr>";
                   echo  
    "</table>"
    solo che al posto di array deve comparirmi nelle colonne td il risultato di array1 , array2 ecc...

    mi date una mano? Grazieeee!!!

  2. #2
    Non ho mai visto una session db execute...
    Comunque il problema stà nel ciclo while.
    Tu hai estratto con il ciclo while tutti i dati ma poi non li scrivi da nessuna parte.
    Li richiami fuori dal ciclo e così non serve a nulla.
    Codice PHP:
    $result=$_SESSION['db']->execute("SELECT bi_idrichie,re_richieste_bw,re_articoli_ricev,re_richieste_ln,re_articoli_forni,(re_articoli_ricev) - (re_articoli_forni) AS differenza_ricev_forni FROM report_biblio WHERE bi_idforni=".$_SESSION['biblio']->bi_id." AND re_anno=$year "); 
                  
                    echo 
    "<h3>Scambi tra biblioteche nell'anno $year</h3>
    "

                    echo 
    "<table class=\"report_table\">"
       
    //qui credo sia sbagliato. while ($row=$_SESSION['db']->fetch($result))  Devi mettere come segue
                
    while ($row=mysql_fetch_array($result)) 
                { 
                     
    //Qui è inutile che crei un array.Togli le quadre. Tanto ad ogni ciclo rinnova i valori e sei a posto.
                    
    $array1=$row["bi_idrichie"]; 
                    
    $array2=$row["re_richieste_bw"]; 
                    
    $array3=$row["re_articoli_ricev"]; 
                    
    $array4=$row["re_richieste_ln"]; 
                    
    $array5=$row["re_articoli_forni"]; 
                    
    $array6=$row["differenza_ricev_forni"]; 
    //qui al posto di array dovrai richiamare tutti i valori uno per uno.
                   
    echo "      <tr><th>Biblioteca richiedente:</td></th><td>".$array1."</td></tr>"
                    echo 
    "        <tr><th>Numero Richieste di Borrowing</th><td>".$array2."</td></tr>"
                    echo 
    "        <tr><th>Numero Articoli Ricevuti</th><td>".$array3."</td></tr>"
                    echo 
    "        <tr><th>Numero Richieste di Lending</th><td>".$array4."</td></tr>"
                    echo 
    "        <tr><th>Numero Articoli Forniti</th><td>".$array5."</td></tr>"
                    echo 
    "        <tr><th>Differenza Articoli</th><td>".$array6."</td></tr>"
    }
                   echo  
    "</table>"
    Togli la creazione di array dentro al ciclo, metti dentro il ciclo la tabella e sei a posto.
    Così com'è viene fatta male. Dovresti fare prima tutta la prima riga con tutti i campi scritti, poi sotto crei una riga che poi viene ripetuta per ogni record trovato.


    Potresti anche usare un ciclo for.
    Conti i record che vengono creati dalla query, fai il tuo ciclo while con la creazione di un array e poi con un ciclo for estrai uno per uno tutti gli array. Meglio il ciclo while comunque.
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    43
    ok grazie per la risposta però cosi non mi stampa tante volte la tabella quanti sono i risultati della query?
    Ad esempio a me la query mi da due righe di risultati, io voglio una tabella fatta così:

    Richiedente: | 5 | 8 |
    Numero Richieste di Borrowing: 20 | 25 |

    e così via dove i numeri sono la parte dinamica estratta dalla query sul database.

  4. #4
    Allora usa un ciclo for per ogni valore che vuoi creare.
    Se no procedi a colonne.
    Estra il primo valore della prima colonna e lo metti nella prima riga della prima colonna
    il primo valore della seconda colonna e lo metti nella seconda riga della prima colonna
    e via dicendo, poi rinizia il ciclo con il secondo valore nella seconda colonna ecc...
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    43
    grazieee, ma potresti farmi vedere un esempio sul codice???

    grazie ancora x la pazienza....

  6. #6
    Prova a fare così: (le misure sono casuali)
    Codice PHP:
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td rowspan="3"><table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td>Prima etichetta</td>
          </tr>
          <tr>
            <td>Seconda etichetta</td>
          </tr>
          <tr>
            <td>Terza etichetta</td>
          </tr>
        </table></td>
                <?php 
    while ($row=mysql_fetch_array($result)) {?>
        <td><?php echo $row['bi_idriche']; ?> </td>
    <?php ?>
      </tr>
      <tr>
    <?php while ($row2=mysql_fetch_array($result)) {?>
        <td><?php echo $row2['re_richieste_bw']; ?></td>
    <?php ?>
      </tr>
      <tr>
    <?php while ($row3=mysql_fetch_array($result)) {?>
        <td><?php echo $row3['re_articoli_ricev']; ?></td>
    <?php ?>
      </tr>
    </table>
    Non l'ho testato ma scritto al volo.
    Provalo e vedi.
    Basta che aggiungi un etichetta e una variabile $row parallelamente sia sopra che sotto.
    Prova questa versione e fammi sapere. Non ho idea di cosa possa venire fuori
    In teoria ti cicla tutti i valori creandoti una colonna per ogni valore.
    Le differenti $row servono per estrarre nuovamente tutto l'array (non l'ho mai provato ma a logica dovrebbe funzionare).
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    43
    io stavo provando a fare cosi, pero si puo fare? sbaglio la sintassi
    Codice PHP:
                    echo " <tr><th>Biblioteca richiedente:</th>".foreach ($array1 as $v) {echo "<td>$v</td>";};
                    echo 
    "        <tr><th>Numero Richieste di Borrowing</th><td>".$array2."</td></tr>";
                    echo 
    "        <tr><th>Numero Articoli Ricevuti</th><td>".$array3."</td></tr>";
                    echo 
    "        <tr><th>Numero Richieste di Lending</th><td>".$array4."</td></tr>";
                    echo 
    "        <tr><th>Numero Articoli Forniti</th><td>".$array5."</td></tr>";
                    echo 
    "        <tr><th>Differenza Articoli</th><td>".$array6."</td></tr>"

  8. #8
    Non lo vedo bene perchè ora sono sull'iPhone e ci sono problemi con le caselle php.
    Comunque prova la soluzione che ti ho postato. Inserisci chiaramente prima la query e poi il mio codice.
    Vedi cosa ti viene fuori.
    Buonanotte e a domani!
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    43
    ciaooo io ho provato a fare come hai detto tu, ma non funziona, ti posto il codice:

    Codice PHP:
    case "2";
    ?>

                
      <html>
      <body>
        <table>
          <tr>
            <td>Prima etichetta</td>
          </tr>
          <tr>
            <td>Seconda etichetta</td>
          </tr>
          <tr>
            <td>Terza etichetta</td>
          </tr>
       
                <?php
                $result
    =$_SESSION['db']->execute("SELECT bi_idrichie,re_richieste_bw,re_articoli_ricev,re_richieste_ln,re_articoli_forni,(re_articoli_ricev) - (re_articoli_forni) AS differenza_ricev_forni FROM report_biblio WHERE bi_idforni=".$_SESSION['biblio']->bi_id." AND re_anno=$year ");
    while (
    $row=$_SESSION['db']->fetch($result)) {?>
        <td><?php if (isset($row["bi_idriche"])) echo $row["bi_idriche"]; ?> </td>
    <?php ?>
      </tr>
      <tr>
    <?php while ($row2=$_SESSION['db']->fetch($result)) {?>
        <td><?php echo $row2["re_richieste_bw"]; ?></td>
    <?php ?>
      </tr>
      <tr>
    <?php while ($row3=$_SESSION['db']->fetch($result)) {?>
        <td><?php echo $row3["re_articoli_ricev"]; ?></td>
    <?php ?>
      </tr>
    </table>
    </body>
    </html>

    <?            break;
    Mi stampa soltanto prima etichetta
    seconda etichetta
    terza etichetta

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    43
    ho risolto cosi:

    Codice PHP:
        
                            
    echo "<h3>Statistiche dell'anno $year</h3>
    "
    ;
                            
    $tab="";
                            
    $tab.="<table>
                                <thead>
                                <tr>
                                <th>Biblio richiedente</th>
                                <th>Numero richieste borrowing</th>
                                <th>Numero articoli ricevuti</th>
                                <th>Numero richieste lending</th>
                                <th>Numero articoli forniti</th>
                                <th>Differenza tra ricevuti e forniti</th>
                                </tr>
                                </thead>"
    ;
                                    while (
    $row=$_SESSION['db']->fetch($result))
                                        {
                                            
    $richiedente$row["bi_idrichie"];
                                            
    $rich_bw$row["re_richieste_bw"];
                                            
    $num_ricev$row["re_articoli_ricev"];
                                            
    $rich_ln$row["re_richieste_ln"];
                                            
    $num_forni$row["re_articoli_forni"];
                                            
    $diff_ricev_forni$row["diff_ricev_forni"];

                                            
    $tab.="
                                                  <tbody align="
    ."center".">
                                                  <tr>
                                                        <td>"
    .$richiedente."</td>
                                                        <td>"
    .$rich_bw."</td>
                                                        <td>"
    .$num_ricev."</td>
                                                        <td>"
    .$rich_ln."</td>
                                                        <td>"
    .$num_forni."</td>
                                                        <td>"
    .$diff_ricev_forni."</td>

                                                  </tr>
                                                </tbody>"
    ;
                                        }
                                        
                                
    $tab.="</table>"
                                echo 
    $tab

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.