Tabelle richtig ausgeben ?

SebiPuck

Erfahrenes Mitglied
Hallo, ich habe es geschafft eine ganze Tabelle auszugeben. Nun habe ich das Problem, dass die einzelnen Spalten ohne Leerzeichen nebeneinander stehen, weshalb es wie eine Wurst aussieht...

Was muss ich verändern, um die 3 Spalten mit 3 eigenen Variablen in 3 Codezeilen auszugeben ?

Code:

Code:
<?php

            $table = mysql_query("SELECT * FROM nachhilfe");

            while($row = mysql_fetch_assoc($table))
            {
                ?>
                    <div class="nachhilfe-element"> <?php
                  
                    foreach($row as $value)
                    {
                        echo "$value";                      
                    }
                ?>
                </div><?php
            }
        ?>

& es sollen dann auch sozusagen 3 wörter sein :)

danke im voraus,
lg
 
Wie ist denn deine SQL-Tabelle aufgebaut (und vllt. ein paar Beipielzeilen)?

Außerdem sollest du die Funktionen, die mit mysql_ beginnen, ganz schnell wieder vergessen.
Siehe MysqlI.
 
Moin,

mysql_fetch_assoc($table); gibt dir ein assoziatives Array, dass du mittels $row["Spaltenname"]; benutzen kannst.

Folgendes sollte (in etwa) tun was du willst:

PHP:
<?php
$table = mysql_query("SELECT * FROM nachhilfe");

while($row = mysql_fetch_assoc($table))
{
?>
<div class="nachhilfe-element"> <?php
    echo $row["name"]; //gibt den Inhalt der Spalte name aus
    echo " schrieb am "; //achte auf die Leerzeichen vor und nach dem Zwischentext
    echo $row["datum"].":<br />"; //Datum + : + Zeilenumbruch
    echo $row["info"];
?>
</div><?php
}
?>

Das ganze sollte dann aussehen wie:

Lehrer Lämpel schrieb am 23.08.2014:
Hallo Max und Moritz [...]

Und für den Fall, dass du gerade beim Lernen bist, sieh dir lieber mysqli an, Infos dazu findest du hier (aber auch Masse auf Google oder Yahoo oder Bing oder ...):

http://www.peterkropff.de/site/php/mysqli.htm

Hier nochmal dein Code im mysqli:

PHP:
<?php
//Daten für die Verbindung (bitte gut verstecken)
$db_user = "nutzer"; //Der Datenbanknutzer
$db_pass = "passwort" //Das Passwort des Nutzers
$db = "datenbank" //Die Datenbank in der deine Tabellen lieben

//So baust du eine Verbindung auf, localhost ggf. durch anderen Host ersetzen     
$dbc = new mysqli("localhost", $db_user, $db_pass, $db);
//$dbc ist jetzt eine Verbindung

$table = $dbc->query("SELECT * FROM nachhilfe");

while($row = $table->fetch_assoc()) //$table ist das Result, das verarbeitet werden kann
{
?>
<div class="nachhilfe-element"> <?php
  echo $row["name"]; //gibt den Inhalt der Spalte name aus
  echo " schrieb am "; //achte auf die Leerzeichen vor und nach dem Zwischentext
  echo $row["datum"].":<br />"; //Datum + : + Zeilenumbruch
  echo $row["info"];
?>
</div><?php
}
$dbc->close(); // Macht die Verbindung zu
?>

Du siehst also, es sind kaum Änderungen notwendig.

Ich hoffe, dass hilft dir. Viele Grüße,

TheBodo

edit: . statt + für concat
 
Zuletzt bearbeitet:
Moin,

mysql_fetch_assoc($table); gibt dir ein assoziatives Array, dass du mittels $row["Spaltenname"]; benutzen kannst.

Folgendes sollte (in etwa) tun was du willst:

PHP:
<?php
$table = mysql_query("SELECT * FROM nachhilfe");

while($row = mysql_fetch_assoc($table))
{
?>
<div class="nachhilfe-element"> <?php
    echo $row["name"]; //gibt den Inhalt der Spalte name aus
    echo " schrieb am "; //achte auf die Leerzeichen vor und nach dem Zwischentext
    echo $row["datum"].":<br />"; //Datum + : + Zeilenumbruch
    echo $row["info"];
?>
</div><?php
}
?>

Das ganze sollte dann aussehen wie:

Lehrer Lämpel schrieb am 23.08.2014:
Hallo Max und Moritz [...]

Und für den Fall, dass du gerade beim Lernen bist, sieh dir lieber mysqli an, Infos dazu findest du hier (aber auch Masse auf Google oder Yahoo oder Bing oder ...):

http://www.peterkropff.de/site/php/mysqli.htm

Hier nochmal dein Code im mysqli:

PHP:
<?php
//Daten für die Verbindung (bitte gut verstecken)
$db_user = "nutzer"; //Der Datenbanknutzer
$db_pass = "passwort" //Das Passwort des Nutzers
$db = "datenbank" //Die Datenbank in der deine Tabellen lieben

//So baust du eine Verbindung auf, localhost ggf. durch anderen Host ersetzen  
$dbc = new mysqli("localhost", $db_user, $db_pass, $db);
//$dbc ist jetzt eine Verbindung

$table = $dbc->query("SELECT * FROM nachhilfe");

while($row = $table->fetch_assoc()) //$table ist das Result, das verarbeitet werden kann
{
?>
<div class="nachhilfe-element"> <?php
  echo $row["name"]; //gibt den Inhalt der Spalte name aus
  echo " schrieb am "; //achte auf die Leerzeichen vor und nach dem Zwischentext
  echo $row["datum"].":<br />"; //Datum + : + Zeilenumbruch
  echo $row["info"];
?>
</div><?php
}
$dbc->close(); // Macht die Verbindung zu
?>

Du siehst also, es sind kaum Änderungen notwendig.

Ich hoffe, dass hilft dir. Viele Grüße,

TheBodo

edit: . statt + für concat


Noch eine Frage: Wie kann ich die neusten Einträge ober dem Eintrag davor ausgeben ? Bei mir kommen die neusten Einträge nun immer ganz unten "raus" ^^
LG

**Sorry für Doppelpost

Edit: Eine id spalte gibt es auch, falls ich die benötige :)
 
Zuletzt bearbeitet:
Also du willst die Reihenfolge nur umdrehen? Vorausgesetzt, neue Einträge bekommen immer höhere IDs
als die alten (was sowieso gut wäre): Beim SQL einfach ein "ORDER BY id DESC" anhängen.
 
Also du willst die Reihenfolge nur umdrehen? Vorausgesetzt, neue Einträge bekommen immer höhere IDs
als die alten (was sowieso gut wäre): Beim SQL einfach ein "ORDER BY id DESC" anhängen.

Das geht natürlich am besten, wenn du eine Spalte id hast, die auto_increment ist. (https://dev.mysql.com/doc/refman/5.1/de/example-auto-increment.html)

Andernfalls könntest du deine Spalte "datum" in ein Feld des Typs datetime umwandeln und es beim Eintrag mit
PHP:
date("Y-m-d H:i:s");
füllen.

Dann kannst du auch danach sortieren.
Code:
ORDER BY datum DESC

Allerdings müsstest du das Datum dann bei der Ausgabe formatieren...

Viel Erfolg noch
 
Zurück