newit1
Goto Top

PHP Datenbankabfrage in Tabelle schreiben

Hallo,

mit folgendem Code ziehe ich die Daten aus der Datenbank...

<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbankname', 'user', 'password');  

$sql = "SELECT * FROM Tabellenname";  

foreach ($pdo->query($sql) as $row) {
    
	echo $row['tel_vorname']." ".$row['tel_nachname']. "<br> " ;  
   echo "E-Mail: ".$row['tel_email']. "<br>";  
	echo "Raum: ".$row['tel_raum']. "<br>";  
   echo "Tel.: ".$row['tel_nr_intern']."<br /><br />";  
}
?>

Leider wird mir die Ausgabe nur schlicht untereinander angezeigt...
Ist es möglich die ausgegebenen Daten direkt in eine passende Tabelle zu schreiben?


Vielen Dank für eure Hilfe!

Content-ID: 385105

Url: https://administrator.de/contentid/385105

Ausgedruckt am: 26.11.2024 um 02:11 Uhr

em-pie
Lösung em-pie 31.08.2018 aktualisiert um 14:27:09 Uhr
Goto Top
Moin,

ja, das geht.
Du musst halt mit all den Table-Tags arbeiten:
 <TABLE>
 <TR>
  <TD>
  </TD>
 </TR>
</TABLE>


So dann in etwa:
<?php

$pdo = new PDO('mysql:host=localhost;dbname=Datenbankname', 'user', 'password');  

$sql = "SELECT * FROM Tabellenname";  

echo "<TABLE>";  
    echo "<TR>";  
     echo "<TD> Vorname </TD>";  
     echo "<TD> Nachname </TD>";  
     echo "<TD> E-Mail </TD>";  
     echo "<TD> Raum </TD>";  
     echo "<TD> Telefon </TD>";  
    echo "</TR>";  

 foreach ($pdo->query($sql) as $row) {
    echo "<TR>";  
     echo "<TD>".$row['tel_vorname']. "</TD>";  
     echo "<TD>".$row['tel_nachname']."</TD>";  
     echo "<TD>".$row['tel_email']. "</TD>";  
     echo "<TD>".$row['tel_raum']. "</TD>";  
     echo "<TD>".$row['tel_nr_intern']. "</TD>";  
    echo "</TR>";  
}
echo "</TABLE>";  
?>

Nicht schön aber Q&D.

Nachtrag:
Bevor du das ganze Produktiv nimmst, schreibe die einzelnen Werte zunächst erst in eine Variable/ ein Array und validiere die Daten. Wenn da mal etwas in der DB steht, was dort nicht reingehört, z.B. wenn in dem Feld "tel_raum" steht:
 query('Delete * from TableName') 
Tja, dann ist deine Tabelle leer. Man könnte aber auch ein anderes Select ... from ... ausführen lassen und alle Daten abgreifen..

Setze dich also mal mit SQL-Injection auseinander, welches nicht beim schreiben in eine DB aufhört...

Gruß
em-pie
newit1
newit1 31.08.2018 um 14:37:41 Uhr
Goto Top
Vielen Dank, hast mir sehr weitergeholfen!
michael2105
Lösung michael2105 05.09.2018 um 12:14:55 Uhr
Goto Top
Zitat von @newit1:
Leider wird mir die Ausgabe nur schlicht untereinander angezeigt...
Ist es möglich die ausgegebenen Daten direkt in eine passende Tabelle zu schreiben?


Vielen Dank für eure Hilfe!

Ich gehe mal davon aus das dies ein einzelnes PHP-Skript ist und nicht ein Teil einer Funktion oder Klasse. Daher würde sich eine leichter zu lesende Syntax anbieten. Der Voteil hier ist, dass du einfacher evtl. genutztes Javascript in den Kopf der Tabelle packen kannst. jQuery Tablesorter benötigt z.B. die CSS-Klasse "tablesorter" im öffnenden TABLE-Tag. Wenn du alle html-Tags immer nur per PHP ECHO ausgibst, läufst du Gefahr schneller Syntaxfehler im Code zu haben, welche, je nach Komplexität, schwierig zu lesen sind. Auf die Dauer macht das dann keinen Spaß. Wenn dann die "TR's" und "TD's" plötzlich auch noch CSS-Klassen bekommen müssen wird das richtig unübersichtlich. Daher solltest Du dir von Anfang angewöhnen, so wenig wie möglich an html-Tags mit PHP ECHO auszugeben und eine saubere Syntax bevorzugen.

Hier mal eine saubere Syntax mit Kommentaren ;)

<!-- PHP ANFANG -->
<?php
$pdo = new PDO('mysql:host=localhost;dbname=Datenbankname', 'user', 'password');  
$sql = "SELECT * FROM Tabellenname";  
?>
<!-- PHP ENDET HIER -->

<!-- PURES HTML -->
<table>
 <thead>
  <tr>
   <td>Vorname</td>
   <td>Nachname</td>
   <td>E-Mail</td>
   <td>Raum</td>
   <td>Nr. intern</td>
  </tr>
 </thead>
 <tbody>
<!-- PURES HTML ENDE -->

<!-- LOOP MIT PHP UND HTML TAGS PER ECHO -->
  <?php foreach ($pdo->query($sql) as $row) : ?>
    <tr>
     <td><?php echo $row['tel_vorname']; ?></td>  
     <td><?php echo $row['tel_nachname']; ?></td>  
     <td><?php echo $row['tel_email']; ?></td>  
     <td><?php echo $row['tel_raum']; ?></td>  
     <td><?php echo $row['tel_nr_intern']; ?></td>  
    </tr>
  <?php endforeach; ?>
<!-- ENDE PHP LOOP -->

<!-- PURES HTML -->
 </tbody>
</table>
<!-- HTML ENDE -->
newit1
newit1 06.09.2018 aktualisiert um 08:39:34 Uhr
Goto Top
Stimme ich dir zu! Sehr übersichtlich und verständlich. Top.