Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Datenbank mit php auslesen
Tempo
2020-11-22, 00:24:33
Ich habe eine MySQL Datenbank die ich mittels php auslese.
Das funktioniert soweit alles gut. In einer Zeile der Ausgabe stehen dann:
Vorname | Name | Anschrift | Straße | Postleitzahl |Ort
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysqli_error());
}
echo '<table border="1">';
while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC))
{
echo "<tr>";
echo "<td>". $zeile['Vorname'] . "</td>";
echo "<td>". $zeile['Name'] . "</td>";
echo "<td>". $zeile['Anschrift'] . "</td>";
echo "<td>". $zeile['Strasse'] . "</td>";
echo "<td>". $zeile['Postleitzahl'] . "</td>";
echo "<td>". $zeile['Ort'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_free_result( $db_erg );
Ich will aber die Formatierung folgendermaßen:
Vorname Name
Anschrift
Straße
Postleitzahl Ort
und das für jeden Datensatz untereinander!
Wie gehe ich nun am geschicktesten vor?
Screemer
2020-11-22, 01:09:18
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysqli_error());
}
while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC))
{
echo "<table border="1">";
echo "<tr><td>". $zeile['Vorname'] . " " . $zeile['Name'] "</td></tr>";
echo "<tr><td>". $zeile['Anschrift'] . "</td></tr>";
echo "<tr><td>". $zeile['Strasse'] . "</td></tr>";
echo "<tr><td>". $zeile['Postleitzahl'] . " " . $zeile['Ort']"</td></tr>";
echo "</table>";
}
mysqli_free_result( $db_erg );
Thorwan
2020-11-22, 01:27:59
echo "<tr>";
echo "<td>". $zeile['Vorname'] . " " . $zeile['Name'] "</td>";
echo "<td>". $zeile['Anschrift'] . "</td>";
echo "<td>". $zeile['Strasse'] . "</td>";
echo "<td>". $zeile['Postleitzahl'] . " " . $zeile['Ort']"</td>";
echo "</tr>";
Müsste es nicht eher so sein?:
echo "<table border="1">";
echo "<tr><td>". $zeile['Vorname'] . " " . $zeile['Name'] "</td></tr>";
echo "<tr><td>". $zeile['Anschrift'] . "</td></tr>";
echo "<tr><td>". $zeile['Strasse'] . "</td></tr>";
echo "<tr><td>". $zeile['Postleitzahl'] . " " . $zeile['Ort']"</td></tr>";
echo "</table>";
Edit: Ok, ich hab nichts gesagt ;)
Screemer
2020-11-22, 01:29:07
siehe oben. mir dann auch aufgefallen, dass das ja immer noch in einer tablerow steht ;)
Gliese
2020-11-22, 11:38:20
Man sollte sich direkt angewöhnen, die Ausgabe richtig zu formatieren. Was ist, wenn jemand "</td></tr></table>Bitte spenden Sie an: ..." eingibt? Dann habt ihr das direkt 1:1 als HTML-Code. Und wenn ihr dann die Nutzer-Eingabe auch noch 1:1 in die SQL-Query ohne Prepared Statement oder wenigstens mit addslashes() schreibt, habt ihr eine waschechte SQLi-Sicherheitslücke, womit man die gesamte Nutzerdatenbank auslesen kann.
Ich weiß, es ist lästig, aber ich finde, das muss dennoch sein. Besser von Anfang an richtig.
echo "<table border=\"1\">";
echo "<tr><td>" . htmlentities($zeile['Vorname']) . " " . htmlentities($zeile['Name']) . "</td></tr>";
echo "<tr><td>" . htmlentities($zeile['Anschrift']) . "</td></tr>";
echo "<tr><td>" . htmlentities($zeile['Strasse']) . "</td></tr>";
echo "<tr><td>" . htmlentities($zeile['Postleitzahl']) . " " . htmlentities($zeile['Ort']) . "</td></tr>";
echo "</table>";
Tempo
2020-11-22, 13:17:20
Super, soweit funktioniert die Umformatierung! Wie schaffe ich es noch die Schriftgröße zu verändern und ich will den Rahmen um einen kompletten Datensatz.
ezzemm
2020-11-23, 06:28:39
Man sollte sich direkt angewöhnen, die Ausgabe richtig zu formatieren. Was ist, wenn jemand "</td></tr></table>Bitte spenden Sie an: ..." eingibt? Dann habt ihr das direkt 1:1 als HTML-Code. Und wenn ihr dann die Nutzer-Eingabe auch noch 1:1 in die SQL-Query ohne Prepared Statement oder wenigstens mit addslashes() schreibt, habt ihr eine waschechte SQLi-Sicherheitslücke, womit man die gesamte Nutzerdatenbank auslesen kann.
Ich weiß, es ist lästig, aber ich finde, das muss dennoch sein. Besser von Anfang an richtig.
echo "<table border=\"1\">";
echo "<tr><td>" . htmlentities($zeile['Vorname']) . " " . htmlentities($zeile['Name']) . "</td></tr>";
echo "<tr><td>" . htmlentities($zeile['Anschrift']) . "</td></tr>";
echo "<tr><td>" . htmlentities($zeile['Strasse']) . "</td></tr>";
echo "<tr><td>" . htmlentities($zeile['Postleitzahl']) . " " . htmlentities($zeile['Ort']) . "</td></tr>";
echo "</table>";
Oder die Dateneingaben vor dem Speichern in die Datenbank behandeln, z.B. mit filter_var ($_POST['XYZ'], FILTER_SANITIZE_STRING)
Aber das Prinzip ist das gleiche.
Super, soweit funktioniert die Umformatierung! Wie schaffe ich es noch die Schriftgröße zu verändern und ich will den Rahmen um einen kompletten Datensatz.
Sogenannte Cascading Style Sheets sind dein Freund. Im Notfall kannst du die Tabelle auch direkt formatieren: <table style="border: 1px solid black"> Das border="1" kannst du löschen
Tempo
2020-11-23, 21:59:10
Konnte nun die Daten schön mittels CSS formatieren. Ein Problem habe ich dennoch. In der Datenbank habe ich die Codierung UTF8_bin. Wenn ich mittels php die Datenbank auslese, werden die Namen die einen Umlaut enthalten erst gar nicht angezeigt. Wo setze ich nun an. Welche Konfigurationsdatei muss ich bearbeiten?
maximum
2020-11-23, 23:54:23
Konnte nun die Daten schön mittels CSS formatieren. Ein Problem habe ich dennoch. In der Datenbank habe ich die Codierung UTF8_bin. Wenn ich mittels php die Datenbank auslese, werden die Namen die einen Umlaut enthalten erst gar nicht angezeigt. Wo setze ich nun an. Welche Konfigurationsdatei muss ich bearbeiten?
Lies dir das mal durch:
https://php-de.github.io/jumpto/utf-8/
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.