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

Discussione: foreach

  1. #1

    foreach

    Ciao a tutti...

    Devo stampare in modo ricorsivo tutti i miei rwecord di una tabella...

    Ogni record deve avere la sua tabella costruita in questo modo:

    Codice PHP:
    echo "<table border='0' cellpadding='2px' cellspacing='0' align='center' width='800'>".
         
    "<tr> <td align='center'>[b]Anagrafica Componenti Aggiuntivi[/b]</td></tr>".
         
    "</table>";
         
    echo 
    "<table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>".
         
    "<tr>  <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td>      </tr>".
         
    "<tr>  <td>Articolo/Membrana:</td>         <td>$A1</td>  <td>$B1</td>  <td>$C1</td>      </tr>".
         
    "<tr>  <td>Cod. Articolo/Membrana:</td>    <td>$A2</td>  <td>$B2</td>  <td>$C2</td>      </tr>".
         
    "<tr>  <td>Composizione:</td>              <td>$A3</td>  <td>$B3</td>  <td>$C3</td>      </tr>".
         
    "<tr>  <td>Spessore Micron:</td>           <td>$A4</td>  <td>$B4</td>  <td>$C4</td>      </tr>".
         
    "<tr>  <td>Altezza   Cm:</td>              <td>$A5</td>  <td>$B5</td>  <td>$C5</td>      </tr>".
         
    "<tr>  <td>Peso   Grm2:</td>               <td>$A6</td>  <td>$B6</td>  <td>$C6</td>      </tr>".
         
    "<tr>  <td>Lato da laminare:</td>          <td>$A7</td>  <td>$B7</td>  <td>$C7</td>      </tr>".
         
    "</table>"
    Creando la ricorsione però non riesco a "gestire" le variabili come vorrei....

    dove sbaglio ???

    Codice PHP:

        
    /* Esecuzione di una query SQL */
        
    $query "SELECT * FROM Lavorazioni";
        
    $risultato mysql_query($query) or die("Query fallita: " mysql_error() );



            while (
    $linea mysql_fetch_array($risultatoMYSQL_ASSOC)) {

    echo 
    "<table border=1 cellpadding=10px cellspacing=0 align=center>\n";

    /* TITOLO TABELLA */
    echo "<tr>

    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cod. Articolo[/b]   </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Articolo[/b]        </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]A1[/b]            </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]A2[/b]          </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]A3[/b]            </span> </td>
    ....

    </tr>"


            echo 
    "\t<tr>\n";
                     echo 
    "\t

    \n"
    /* creo l o spazio tra le varie tabelle*/
            
    foreach ($linea as $valore){

    echo 
    "\t\t<td>$valore</td>\n";

                
                


    echo 
    "<table border='0' cellpadding='2px' cellspacing='0' align='center' width='800'>".
         
    "<tr> <td align='center'>[b]Anagrafica Componenti Aggiuntivi[/b]</td></tr>".
         
    "</table>";
         
    echo 
    "<table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>".
         
    "<tr>  <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td>      </tr>".
         
    "<tr>  <td>Articolo/Membrana:</td>         <td>$A1</td>  <td>$B1</td>  <td>$C1</td>      </tr>".
         
    "<tr>  <td>Cod. Articolo/Membrana:</td>    <td>$A2</td>  <td>$B2</td>  <td>$C2</td>      </tr>".
         
    "<tr>  <td>Composizione:</td>              <td>$A3</td>  <td>$B3</td>  <td>$C3</td>      </tr>".
         
    "<tr>  <td>Spessore Micron:</td>           <td>$A4</td>  <td>$B4</td>  <td>$C4</td>      </tr>".
         
    "<tr>  <td>Altezza   Cm:</td>              <td>$A5</td>  <td>$B5</td>  <td>$C5</td>      </tr>".
         
    "<tr>  <td>Peso   Grm2:</td>               <td>$A6</td>  <td>$B6</td>  <td>$C6</td>      </tr>".
         
    "<tr>  <td>Lato da laminare:</td>          <td>$A7</td>  <td>$B7</td>  <td>$C7</td>      </tr>".
         
    "</table>";

            }
            echo 
    "\t</tr>\n";
        }
        print 
    "</table>\n";

        
    /* Liberazione delle risorse del risultato */
        
    mysql_free_result($risultato);

        
    /* Chiusura della connessione */
        
    mysql_close($connessione);
    ?> 

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Intanto ti dico alcuni errori concettuali che ho notato

    La prima tabella con relativo titolo deve essere "aperta" fuori dal ciclo while altrimenti ti troverai ad avere questo
    Codice PHP:
    <table>
      <
    tr>
        <
    td>titolo</td>
      </
    tr>
      <
    tr>
        <
    td>riga</td>
      </
    tr>
      <
    table>
         <
    tr>
           <
    td>titolo</td>
         </
    tr>
         <
    td>riga</td>
        </
    tr>
        <
    table>
          <
    tr>
             <
    td>titolo</td>
          </
    tr>
          <
    tr>
             <
    td>riga</td>
          </
    tr>
          <
    table>
    // e così via con tabelle dentro tabelle dentro tabelle... 
    Quindi in un corretto algoritmo (che non puoi definire "ricorsivo" poichè la ricorsione in informatica è tutta un'altra cosa) sarebbe
    Codice PHP:
    echo "<table>";
    echo 
    "<tr>titolo</tr>";
    while (
    $var mysql_fetch_assoc($sql))
    {
      echo 
    "<tr><td>riga</td></tr>";
    }
    echo 
    "</table>"
    in cui sostituire a "<td>riga</td>" quello che ti serve (il tuo ciclo interno foreach ad esempio)

    Seconda cosa. Usare un tag

    tra un <tr> e un <td> è scorrettissimo. Essendo una sintassi non prevista in alcun caso, non saprai mai come ogni browser deciderà di visualizzare la cosa. Alcuni potrebbero addirittura mettere quel paragrafo (che tra parentesi non chiudi nemmeno con </p>) anche prima o dopo la tabella, visto che <tr> NON PUO' contenere i dati (i dati visualizzabili possono stare SOLAMENTE all'interno dei TD)

    Quindi correggi innanzitutto queste due cose e vedi cosa visualizza e cosa non ti va che continuiamo se hai ancora dubbi

    P.S.
    Cosa sono quelle variabili $A1, $B1, $A2, $B2 eccetera? Non contengono nulla? Non sono valorizzate da nessuna parte?

  3. #3
    Grazier per i tuoi consigli...

    Però così facendo avrò un output di questo tipo:

    Titolo

    Riga Riga Riga

    Io volevo fare una cosa del genere come ho fatto per i Clienti:

    Codice PHP:
     <?php
        
    /* Connessione e selezione del database */
    $connessione mysql_connect("localhost""xxx""xxx")
    or die(
    "[b]Errore:[/b] Impossibile connettersi al Database mysql");

    mysql_select_db("xxx",$connessione)
    or die(
    "[b]Errore:[/b] Impossibile accedere al Database Mysql");
        
        
    /* Esecuzione di una query SQL */
        
    $query "SELECT * FROM Clienti";
        
    $risultato mysql_query($query) or die("Query fallita: " mysql_error() );



            while (
    $linea mysql_fetch_array($risultatoMYSQL_ASSOC)) {

    echo 
    "<table border=1 cellpadding=10px cellspacing=0 align=center>\n";

    /* TITOLO TABELLA */
    echo "<tr>

    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cod. Cliente[/b]   </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cliente[/b]        </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Via[/b]            </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Città[/b]          </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cap[/b]            </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Provincia[/b]      </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Nazione[/b]        </span> </td>

    </tr>"


            echo 
    "\t<tr>\n";
                     echo 
    "\t

    \n"
    /* creo lo spazio tra le varie tabelle*/
            
    foreach ($linea as $valore_colonna) {
                echo 
    "\t\t<td>$valore_colonna</td>\n";
            }
            echo 
    "\t</tr>\n";
        }
        print 
    "</table>\n";

        
    /* Liberazione delle risorse del risultato */
        
    mysql_free_result($risultato);

        
    /* Chiusura della connessione */
        
    mysql_close($connessione);
    ?>
    Questo codice che ho scritto mi funziona, infatti mi crea una tabella per ogni record....

    Io voglio fare una cosa del genere però le informazioni contenute nel record non voglio che si visualizzano su una sola riga, ma voglio visualizzare le informazioni come la tabella sopra riportata...

    Come faccio ???


  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Metti <tr> e </tr> dentro alla foreach allora
    Codice PHP:
            foreach ($linea as $valore_colonna) {
                echo 
    "\t<tr>\n";
                echo 
    "\t\t<td>$valore_colonna</td>\n";
                echo 
    "\t</tr>\n";
            }
        } 

    Ma ti prego togli quel

    tra il tr e il td altrimenti non rispondo più


    P.S.
    Il mio algoritmo non scrive comunque
    tabella
    riga riga riga

    analizzalo meglio e magari provalo e vedrai

  5. #5


    Ma ti prego togli quel

    tra il tr e il td altrimenti non rispondo più
    OK capo..

    però forse mi sono spiegato male....ti posto alcune immagini così ti spiego bene cosa devo fare:

    Io ho una tabella Lavorazioni dove ho n record.

    Io voglio stampare ogni record una tabella.

    La tabella però deve essere visualizzata in questo modo :



    Codice php :

    Codice PHP:
    echo "<table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>".
         
    "<tr> <td align='center'>[b]Codice di Lavorazione: $cod_lavorazione [/b]</td></tr>".
         
    "</table>";

    echo 
    "<table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>".
         
    "<tr>  <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td>      </tr>".
         
    "<tr>  <td>Articolo/Membrana:</td>         <td>$A1</td>  <td>$B1</td>  <td>$C1</td>      </tr>".
         
    "<tr>  <td>Cod. Articolo/Membrana:</td>    <td>$A2</td>  <td>$B2</td>  <td>$C2</td>      </tr>".
         
    "<tr>  <td>Composizione:</td>              <td>$A3</td>  <td>$B3</td>  <td>$C3</td>      </tr>".
         
    "<tr>  <td>Spessore Micron:</td>           <td>$A4</td>  <td>$B4</td>  <td>$C4</td>      </tr>".
         
    "<tr>  <td>Altezza   Cm:</td>              <td>$A5</td>  <td>$B5</td>  <td>$C5</td>      </tr>".
         
    "<tr>  <td>Peso   Grm2:</td>               <td>$A6</td>  <td>$B6</td>  <td>$C6</td>      </tr>".
         
    "<tr>  <td>Lato da laminare:</td>          <td>$A7</td>  <td>$B7</td>  <td>$C7</td>      </tr>".
         
    "</table>"

  6. #6
    nessuno mi sa aiutare ???

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Spero di aver capito bene
    Quello che vuoi è che, le righe del database diventino colonne della tua tabella

    A parte il giudizio "semantico" che posso avere su questa scelta, per avere quello che vuoi devi impostare il tutto DIVERSAMENTE
    In pratica non puoi fare echo di NESSUNA riga fin quando non hai letto TUTTO il query
    Ti faccio un esempio BANALIZZATO
    Mettiamo di aver fatto una "SELECT *" da questa tabella

    id descrizione
    1 pippo
    2 pluto
    3 paperino

    Tu vuoi che appaia una tabella del genere
    Codice PHP:
    <table>
      <
    tr>
        <
    tdid </td>
        <
    td1  </td>
        <
    td2  </td>
        <
    td3  </td>
      </
    tr>
      <
    tr>
         <
    tddescrizione </td>
         <
    tdpippo </td>
         <
    tdpluto </td>
         <
    tdpaperino </td>
      </
    tr>
    </
    table
    Ho capito bene? Se non ho capito bene fammi per favore un ESEMPIO PRATICO con I DATI, ma non con 40 colonne come nel tuo caso, un esempio SEMPLICE tipo quello che ho fatto io

    Se invece ho capito bene allora il codice è il seguente
    Codice PHP:
    $sql "SELECT * FROM tabella";
    $resultSet mysql_query($sql);
    $righe = array();
    while (
    $row mysql_fetch_assoc($resultSet))
    {
      foreach(
    $row as $key=>$value)
        
    $righe[$key][] = $value;
    }
    echo 
    "<table>";
    foreach(
    $righe as $key=>$values)
    {
      echo 
    "<tr>";
      echo 
    "<td>$key</td>";
      foreach(
    $values as $value)
        echo 
    "<td>$value</td>";
      echo 
    "</tr>";
    }
    echo 
    "</table>"
    In pratica dopo il primo ciclo l'array $righe dovrebbe contenere questi dati
    Codice PHP:
    array(
      
    id=> array(
        
    1,
        
    2,
        
    3
      
    ),
      
    descrizione => array(
        
    pippo,
        
    pluto,
        
    paperino
      
    )

    Ovvero per ogni colonna della tabella, contiene un array con tutti i valori
    Con questo array ci fai poi il secondo ciclo che costruisce la tabella

  8. #8
    Purtroppo no....

    Forse non mi spiego bene... VVoVe:

    Io ho la mia tabella dove ho n record.

    A ogni record devo creare una tabella.

    .... e fino a qui nulla di nuovo....

    La tabella però è strutturata in questa maniera.....




    Tanto per intenderci....

    devo fare una cosa del genere:

    Codice PHP:
    <?
            
    while ($linea mysql_fetch_array($risultatoMYSQL_ASSOC)) {

    echo 
    "<table border=1 cellpadding=10px cellspacing=0 align=center>\n";

    /* TITOLO TABELLA */
    echo "<tr>

    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cod. Cliente[/b]   </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cliente[/b]        </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Via[/b]            </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Città[/b]          </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Cap[/b]            </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Provincia[/b]      </span> </td>
    <td bgcolor='#9B0000'> <span class='Stile2'> [b]Nazione[/b]        </span> </td>

    </tr>"
    ;

            echo 
    "\t<tr>\n";
                     echo 
    "\t

    \n"
    /* creo lo spazio tra le varie tabelle*/
            
    foreach ($linea as $valore_colonna) {
                echo 
    "\t\t<td>$valore_colonna</td>\n";
            }
            echo 
    "\t</tr>\n";
        }
        print 
    "</table>\n";

        
    /* Liberazione delle risorse del risultato */
        
    mysql_free_result($risultato);

        
    /* Chiusura della connessione */
        
    mysql_close($connessione);
    ?>
    Però in questo modo mi crea una tabella su una riga sola in questo modo:

    Intestazione| Intestazione| Intestazione
    Dati | Dati |Dati

    Intestazione | Intestazione| Intestazione
    Dati | Dati |Dati

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Sarò di legno io ma non ti capisco
    Non puoi però portarmi come esempio un codice che per tua stessa ammissione non produce ciò che ti serve... come posso capire?

    Perchè non fai un esempio pratico come ho fatto io?

    Metti di avere questa tabella
    Tanella
    colonna1|colonna2|colonna3|

    Con questi recors
    riga1_col1|riga1_col2|riga1_col3
    riga2_col1|riga2_col2|riga2_col3
    riga3_col1|riga3_col2|riga3_col3
    riga4_col1|riga4_col2|riga4_col3

    Come vuoi che venga visualizzata? Postami l'html risultato che vorresti, non codice php

  10. #10
    Ok...

    Io ho una tabella nel mio db My sql chiamata "Articolo" con queste variabili:
    $cod_articolo
    $A1
    $B1
    $C1
    $A2
    $B2
    $C2
    $A3
    $B3
    $C3
    $A4
    $B4
    $C4
    $A5
    $B5
    $C5
    $A6
    $B6
    $C6
    $A7
    $B7
    $C7

    Mettiamo per esempio che io ho 4 record in questa tabella....

    Io voglio questa uscita:



    <table border='0' cellpadding='2px' cellspacing='0' align='center' width='800'>
    <tr> <td align='center'>Codice articolo: $cod_articolo</td></tr>
    </table>

    <table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>
    <tr> <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td> </tr>
    <tr> <td>Articolo/Membrana:</td> <td>$A1</td> <td>$B1</td> <td>$C1</td> </tr>
    <tr> <td>Cod. Articolo/Membrana:</td> <td>$A2</td> <td>$B2</td> <td>$C2</td> </tr>
    <tr> <td>Composizione:</td> <td>$A3</td> <td>$B3</td> <td>$C3</td> </tr>
    <tr> <td>Spessore Micron:</td> <td>$A4</td> <td>$B4</td> <td>$C4</td> </tr>
    <tr> <td>Altezza Cm:</td> <td>$A5</td> <td>$B5</td> <td>$C5</td> </tr>
    <tr> <td>Peso Grm2:</td> <td>$A6</td> <td>$B6</td> <td>$C6</td> </tr>
    <tr> <td>Lato da laminare:</td> <td>$A7</td> <td>$B7</td> <td>$C7</td> </tr>
    </table>






    <table border='0' cellpadding='2px' cellspacing='0' align='center' width='800'>
    <tr> <td align='center'>Codice articolo: $cod_articolo</td></tr>
    </table>
    <table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>
    <tr> <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td> </tr>
    <tr> <td>Articolo/Membrana:</td> <td>$A1</td> <td>$B1</td> <td>$C1</td> </tr>
    <tr> <td>Cod. Articolo/Membrana:</td> <td>$A2</td> <td>$B2</td> <td>$C2</td> </tr>
    <tr> <td>Composizione:</td> <td>$A3</td> <td>$B3</td> <td>$C3</td> </tr>
    <tr> <td>Spessore Micron:</td> <td>$A4</td> <td>$B4</td> <td>$C4</td> </tr>
    <tr> <td>Altezza Cm:</td> <td>$A5</td> <td>$B5</td> <td>$C5</td> </tr>
    <tr> <td>Peso Grm2:</td> <td>$A6</td> <td>$B6</td> <td>$C6</td> </tr>
    <tr> <td>Lato da laminare:</td> <td>$A7</td> <td>$B7</td> <td>$C7</td> </tr>
    </table>





    <table border='0' cellpadding='2px' cellspacing='0' align='center' width='800'>
    <tr> <td align='center'>Codice articolo: $cod_articolo</td></tr>
    </table>

    <table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>
    <tr> <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td> </tr>
    <tr> <td>Articolo/Membrana:</td> <td>$A1</td> <td>$B1</td> <td>$C1</td> </tr>
    <tr> <td>Cod. Articolo/Membrana:</td> <td>$A2</td> <td>$B2</td> <td>$C2</td> </tr>
    <tr> <td>Composizione:</td> <td>$A3</td> <td>$B3</td> <td>$C3</td> </tr>
    <tr> <td>Spessore Micron:</td> <td>$A4</td> <td>$B4</td> <td>$C4</td> </tr>
    <tr> <td>Altezza Cm:</td> <td>$A5</td> <td>$B5</td> <td>$C5</td> </tr>
    <tr> <td>Peso Grm2:</td> <td>$A6</td> <td>$B6</td> <td>$C6</td> </tr>
    <tr> <td>Lato da laminare:</td> <td>$A7</td> <td>$B7</td> <td>$C7</td> </tr>
    </table>





    <table border='0' cellpadding='2px' cellspacing='0' align='center' width='800'>
    <tr> <td align='center'>Codice articolo: $cod_articolo</td></tr>
    </table>

    <table border='0' cellpadding='3px' cellspacing='0' align='center' width='800'>
    <tr> <td width='219'></td> <td width='194'>1</td> <td width='194'>2</td> <td width='194'>3</td> </tr>
    <tr> <td>Articolo/Membrana:</td> <td>$A1</td> <td>$B1</td> <td>$C1</td> </tr>
    <tr> <td>Cod. Articolo/Membrana:</td> <td>$A2</td> <td>$B2</td> <td>$C2</td> </tr>
    <tr> <td>Composizione:</td> <td>$A3</td> <td>$B3</td> <td>$C3</td> </tr>
    <tr> <td>Spessore Micron:</td> <td>$A4</td> <td>$B4</td> <td>$C4</td> </tr>
    <tr> <td>Altezza Cm:</td> <td>$A5</td> <td>$B5</td> <td>$C5</td> </tr>
    <tr> <td>Peso Grm2:</td> <td>$A6</td> <td>$B6</td> <td>$C6</td> </tr>
    <tr> <td>Lato da laminare:</td> <td>$A7</td> <td>$B7</td> <td>$C7</td> </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 © 2025 vBulletin Solutions, Inc. All rights reserved.