[PHP] Wie kann ich das in "Kasten unterteilen"?
Also ich habe von der Website: https://www.php-einfach.de/mysql-tutorial/daten-ausgeben/
Den Code:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$sql = "SELECT email, vorname, nachname FROM users";
foreach ($pdo->query($sql) as $row) {
echo $row['vorname']." ".$row['nachname']."<br />";
echo "E-Mail: ".$row['email']."<br /><br />";
}
?>
Jetzt ist es so das ich in CSS den Hintergrund von den Daten aus der Datenbank geändert habe und auch <hr> zwischen die verschiedenen "Nachrichten" also verschiedenen Spalten gemacht habe.
Ich möchte aber, dass das Kästchen mit User 1 ein bisschen platz unten vor user 2 hat. (Also das jede Nachricht Test 1, Test 2 eine eigene "Box" hat) und unten platz ist bis user 2
Tut mir leid, das ich es so schwer erklärt habe, ich weiß aber nicht genau wie ich es beschreiben soll.
Danke im Vorraus!
3 Antworten
Das div musst du nur mit deinem CSS Verknüpfen sonnst bleibt alles gleich
echo"<div>";
echo $row['vorname']." ".$row['nachname']."<br />";
echo "E-Mail: ".$row['email']."<br/>"
echo"</div>";
<div class="px23sad3axOsdyf">
<?php
$pdo = new PDO('mysql:host=localhost;dbname=post', 'root', '');
$sql = "SELECT name, time, content FROM posts";
foreach ($pdo->query($sql) as $row) {
echo "<br />";
echo "<br />";
echo $row['name'].""."<br />";
echo "<br />";
echo "<br />";
echo $row['content']."<br /><br /><br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<hr/>";
}
?>
</div>
.px23sad3axOsdyf {
text-align: center;
margin-left: auto;
margin-right: auto;
color: black;
background-color: white;
border-radius: 2px;
border: 1px solid white;
width: 800px;
Versuche das in der foreach die Klasse zu definieren
<?php
$pdo = new PDO('mysql:host=localhost;dbname=post', 'root', '');
$sql = "SELECT name, time, content FROM posts";
foreach ($pdo->query($sql) as $row) {
echo "<div class='px23sad3axOsdyf'>";
echo "<br />";
echo "<br />";
echo $row['name'].""."<br />";
echo "<br />";
echo "<br />";
echo $row['content']."<br /><br /><br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<hr/>";
echo "</div>";
}
?>
Dann rutsch nur jede Nachricht nur ein bisschen runter aber ich will das um jede Nachricht eine eigene Box ist und keine große Box die zusammen ist
Hier funktioniert es :
<?php
$pdo = new PDO('mysql:host=localhost;dbname=post', 'root', '');
$sql = "SELECT * FROM posts";
foreach ($pdo->query($sql) as $row): ?>
<div class ="box">
<p><?= $row['name'];?></p>
<p><?= $row['content'];?></p>
</div>
<?php endforeach; ?>
<style type="text/css">
.box {
text-align: center;
background: #fff;
border: 2px solid grey;
margin-top: 20px;
padding: 20px;
}
</style>
Sämtliche Abstände kannst du mit CSS lösen (lass das br-Element dafür weg). Es gibt Properties für margin und padding, also um Außen- und Innenabstände pixelgenau zu setzen.
Beispiel:
<!doctype html>
<title>Example</title>
<style>
.mail-box {
margin-top: 20px;
}
.user-box {
padding-bottom: 40px;
text-align: center;
}
</style>
<article class="user-box">
<p>User 1</p>
<p class="mail-box">Test 1</p>
</article>
<hr>
<article class="user-box">
<p>User 2</p>
<p class="mail-box">Test 2</p>
</article>
Nun muss nur noch einmal der HTML-Part ausgetauscht werden, wo die Boxen dynamisch generiert werden sollen.
<!doctype html>
<title>Example</title>
<style>
.mail-box {
margin-top: 20px;
}
.user-box {
padding-bottom: 40px;
text-align: center;
}
</style>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$sql = "SELECT email, vorname, nachname FROM users";
$result = $pdo->query($sql);
if ($result)
foreach ($result as $row): ?>
<article class="user-box">
<p><?= $row['vorname']." ".$row['nachname'] ?></p>
<p class="mail-box">E-Mail: <?= $row['email'] ?></p>
</article>
<hr>
<?php endforeach; ?>
Beachte an dieser Stelle, dass ich auch gleich noch eine Vorbeugemaßnahme eingebaut habe, sollte der SQL Query fehlschlagen. Dann gibt die query-Methode nämlich den Wert false zurück, über den sich nicht iterieren lässt. Nutze wo möglich stets die Rückgabewerte von PHP für eine erste Prüfung, bevor du sie weiter nutzt. Sehr viele PHP-Funktionen liefern dir bei Fehlschlag ein boolsches Ergebnis zurück.
Im weiteren würde ich dir raten, dich näher mit CSS zu beschäftigen.
Dann musst Du in der Ausgabe in PHP den benötigten HTML-Code ergänzen. Wenn Du bspw. jeden Eintrag von einem div umgeben willst schreibst Du in der Schleife:
echo "<div>".$row['vorname']." ".$row['nachname']."<br />";
echo "E-Mail: ".$row['email']."</div>";
Dann kannst Du das Element auch per CSS beeinflussen.
Ja das habe ich ja, aber wie kann ich Platz machen? Denn die Daten stehen ja direkt untereinander?
<div class="px23sad3axOsdyf">
<?php
$pdo = new PDO('mysql:host=localhost;dbname=post', 'root', '');
$sql = "SELECT name, time, content FROM posts";
foreach ($pdo->query($sql) as $row) {
echo "<br />";
echo "<br />";
echo $row['name'].""."<br />";
echo "<br />";
echo "<br />";
echo $row['content']."<br /><br /><br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
echo "<hr/>";
}
?>
</div>
.px23sad3axOsdyf {
text-align: center;
margin-left: auto;
margin-right: auto;
color: black;
background-color: white;
border-radius: 2px;
border: 1px solid white;
width: 800px;
klar, das ist ja auch nicht mein Problem, der Code wiederholt direkt alles, also wenn in der Datenbank 10 Spalten stehen, stehen alle untereinander. Ich will aber zwischen den Spalten platz machen. und somit soll jede Spalte eine eigene Box haben, die abstand mit der anderen hat.