[PHP] Wie kann ich das in "Kasten unterteilen"?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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>";

Woher ich das weiß:eigene Erfahrung
troloxi 
Fragesteller
 10.05.2020, 23:00

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.

0
troloxi 
Fragesteller
 10.05.2020, 23:00
@troloxi

Also sozusagen von der Struktur her wie bei den Antworten hier auf Gutefrage net, jede Antwort hat eine eigene Box und nach der Box ist etwas platz und dann kommt die nächste

0
sebcodes  10.05.2020, 23:05
@troloxi

Dann mach doch einfach nach dem div ein <br> oder mach das mit CSS

0
troloxi 
Fragesteller
 10.05.2020, 23:06
@sebcodes
<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;

https://prnt.sc/secdak

https://prnt.sc/secdi5

0
sebcodes  10.05.2020, 23:11
@troloxi

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>";
}
?>

0
troloxi 
Fragesteller
 10.05.2020, 23:13
@sebcodes

Das bringt aber auch kein Platz zwischen die Spalten

0
troloxi 
Fragesteller
 10.05.2020, 23:15
@sebcodes

Das Script wiederholt sich sozusagen immer und gibt alle Daten die in der Datenbank sind untereinander an, ich will aber zwischen den Daten also den Zeilen Platz haben. Wie kann ich das denn z.B. mit dem Platz in CSS machen?

0
sebcodes  10.05.2020, 23:17
@troloxi

Wie oben schon gesagt ändere das CSS, ich bin leider jetzt gerade nicht am PC und kann dir da jetzt nicht Mal eben den Code schreiben, morgen früh kann ich es dir schicken wenn du magst

0
troloxi 
Fragesteller
 10.05.2020, 23:18
@sebcodes

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

https://prnt.sc/secjpb

0
sebcodes  11.05.2020, 09:40
@troloxi

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>
0
regex9  13.05.2020, 23:34
@sebcodes

Der style-Block hat dort unten allerdings nichts zu suchen. Des Weiteren sollte die query-Funktion nicht innerhalb der foreach ausgeführt werden. Andernfalls kracht es, wenn der Query einmal fehlschlägt.

0
sebcodes  13.05.2020, 23:44
@regex9

Das war die Vervollständigung seines Codes und ja mit dem Style Tag habe ich es aus der Einfachheit her gemacht

0

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.

Woher ich das weiß:Berufserfahrung
troloxi 
Fragesteller
 10.05.2020, 22:57

Ja das habe ich ja, aber wie kann ich Platz machen? Denn die Daten stehen ja direkt untereinander?

0
threadi  10.05.2020, 22:58
@troloxi

Wie sollen sie sonst ausgegeben werden? Nebeneinander?

0
troloxi 
Fragesteller
 10.05.2020, 23:01
@threadi

Wenn ich das so mache wie du das machst, kommt direkt unter der 1 Spalte die nächste, ich will aber zwischen den spalten platz

0
threadi  10.05.2020, 23:03
@troloxi

Zeig bitte deinen erzeugten HTML-Code sowie deinen CSS-Code damit man dir das beantworten kann.

0
troloxi 
Fragesteller
 10.05.2020, 23:05
@threadi
<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;

https://prnt.sc/secdak

https://prnt.sc/secdi5

0
threadi  10.05.2020, 23:10
@troloxi

Ich sprach vom erzeugten HTML-Code. Und ich vermute das CSS ist auch nicht das komplette.

0