[Risolto] Recordset visualizzato in unica riga

di il
3 risposte

[Risolto] Recordset visualizzato in unica riga

Salve a tutti,

Premesso che mi sto approcciando da poco alla programmazione orientata al web, spulciando la rete e leggendo qua e la sono riuscito a connettere una pagina web ad un db creato con phpmyadmin.

sono riuscito a creare una query e visualizzare il recordset sulla pagina web, ma c'è un "problema": il recordset viene visualizzato in un'unica riga.
Per sicurezza ho "colorato" tramite il css i bordi della tabella per averne conferma e così è stato.
Immagino ci sia un qualche intoppo nel codice php che vi posto di seguito.
[code=php] <html> <head > <link rel = "stylesheet" type = "text/css" href = "stylesheethome.css" media = "screen"/> <title>HOME</title> </head> <body> <Table> <tr> <th>ID</th> <th>Cliente</th> <th>Turno Cucina</th> </tr> <tr> <td> <?php $conn = new mysqli('localhost', 'root', '','prenoticket'); if($conn->connect_error){ die('Connessione fallita: '.$conn->connect_error); } $sql = "select * From tb_cliente Where Turno_cucina = 1" ; $result =$conn->query($sql); if($result->num_rows>0){ while ($row=$result->fetch_assoc()){ echo $row['ID Cliente']."<br> "; } }else{ echo "Non ci sono dati in questa tabella"; } ?> </td> <td> <?php $result =$conn->query($sql); while ($row=$result->fetch_assoc()){ echo $row['Ragione Sociale']."<br> "; } ?> </td> <td> <?php $result =$conn->query($sql); while ($row=$result->fetch_assoc()){ echo $row['Turno_cucina']."<br>"; } ?> </td> </tr> </table> <br> <Table> <tr> <th>ID</th> <th>Cliente</th> <th>Turno Cucina</th> </tr> <tr> <td> <?php $conn = new mysqli('localhost', 'root', '','prenoticket'); if($conn->connect_error){ die('Connessione fallita: '.$conn->connect_error); } $sql = "select * From tb_cliente Where Turno_cucina = 2" ; $result =$conn->query($sql); if($result->num_rows>0){ while ($row=$result->fetch_assoc()){ echo $row['ID Cliente']."<br>";} }else{ echo "Non ci sono dati in questa tabella"; } ?> </td> <td> <?php $result =$conn->query($sql); while ($row=$result->fetch_assoc()){ echo $row['Ragione Sociale']."<br>";// } ?> </td> <td> <?php $result =$conn->query($sql); while ($row=$result->fetch_assoc()){ echo $row['Turno_cucina']."<br>";// } ?> </td> </tr> </table> <br> <Table> <tr> <th>ID</th> <th>Cliente</th> <th>Turno Cucina</th> </tr> <tr> <td> <?php $conn = new mysqli('localhost', 'root', '','prenoticket'); if($conn->connect_error){ die('Connessione fallita: '.$conn->connect_error); } $sql = "select * From tb_cliente Where Turno_cucina = 3" ; $result =$conn->query($sql); if($result->num_rows>0){ while ($row=$result->fetch_assoc()){ echo $row['ID Cliente']."<br>";} }else{ echo "Non ci sono dati in questa tabella"; } ?> </td> <td> <?php $result =$conn->query($sql); while ($row=$result->fetch_assoc()){ echo $row['Ragione Sociale']."<br>"; } ?> </td> <td> <?php $result =$conn->query($sql); while ($row=$result->fetch_assoc()){ echo $row['Turno_cucina']."<br>"; } ?> </td> </tr> </table> </body> </html> Il codice, premetto, è ancora un cantiere in quanto sto facendo delle prove per conoscere e capire il funzionamento di alcune istruzioni e funzioni.

ad ogni modo questo codice mi genera delle tabelle che hanno una riga di intestazione ed un'altra riga in cui, in ogni cella vi sono tutti i valori dei campi estrapolati dalla query.
in realtà io avrei bisogno di avere una riga per ogni record e non una riga con tutti i record.

dove sta l'intoppo?

Grazie e scusatemi in anticipo per gli obrobri nel codice.

3 Risposte

  • Re: [Risolto] Recordset visualizzato in unica riga

    Il while itera per tutti i risultati, se vuoi creare dei dati per ogni unico ID Cliente devi scrive tutti i campi (ID Cliente, Ragione Sociale etc. tutto ciò che può essere recuperato con una singola query.) in un colpo solo dopo procedi con altro ID Cliente.
    Quindi poiché non iteri anche gli elementi html (non sono spaghetti ma il codice per una tabella, la tua pagina) avrai solo una riga
  • Re: [Risolto] Recordset visualizzato in unica riga

    Risolto, Grazie mille Hormus

    ho inserito i tag di fine colonna e fine riga all'interno dell' echo, e a questo punto mi pare di capire (e te ne chiedo conferma) che il PHP si pone come interprete tra l'html ed il db. Giusto?

    eliminando lo split tra tabelle ho anche "accorciato" il codice che ti scrivo di seguito
    [code=php] html> <head> <link rel = "stylesheet" type = "text/css" href = "stylesheethome.css" media = "screen"/> <title>HOME</title> </head> <body> <?php $conn = new mysqli('localhost', 'root', '','prenoticket'); if($conn->connect_error){ die('Connessione fallita: '.$conn->connect_error); } $sql = "select * From tb_cliente order by Turno_cucina" ; $result =$conn->query($sql); if($result->num_rows>0){ echo "<table><tr><th>Data</th><th>Cliente</th><th>Turno</th>"; while ($row=$result->fetch_assoc()){ echo "<tr><td>".$row['Data']."</td><td>".$row['Ragione Sociale']."</td><td>".$row['Turno_cucina']."</td></tr>"; } echo "</table>"; }else{ echo "Non ci sono dati in questa tabella"; } ?> </body> </html> Mi pare anche più logico e pulito.

    C'è modo di "pulirlo" ulteriormente?
  • Re: [Risolto] Recordset visualizzato in unica riga

    Si il limite è unicamente dettato dalla propria fantasia e nonché la sintassi per stilare il codice.
    Potresti provare la sintassi alternativa (talvolta chiamata sintassi a blocchi) https://3v4l.org/1m9p questo esempio dovrebbe essere di facile lettura e puoi convertirlo nel tuo codice già esistente poiché hai un if un while e un else.
    PHP è il tramite come interagire con un linguaggio di programmazione spesso per la creazione di siti web, per te esegue del codice sul server e tu decidi cosa stampare.
Devi accedere o registrarti per scrivere nel forum
3 risposte