Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

MySQL-Tabelle auslesen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
ben78
PostRank 4
PostRank 4
Beiträge: 153
Registriert: 30.03.2007, 17:15

Beitrag von ben78 » 20.01.2010, 00:53

Hey Leutz,

ich habe in meiner PHP Datei folgende Zeile:

echo "<td>". $zeile['Bildurl'] . "</td>";

Meine PHP-Datei, greift auf eine MySQL-DB zu, in der Datensätze gespeichert sind. Je Datensatz ist eine Bild-URL hinterlegt. Mein Problem ist, dass mir bei der Ausgabe nicht das gewünschte Bild angezeigt wird. Es erscheint immer nur der Pfad zum Bild. Selbiges Problem habe ich bei den Links, die in meiner Tabelle gespeichert sind. Also kein Blauer Text mit aktivem Link, sondern nur der Pfad. Dann habe noch das Problem, dass alle Umlaute in komische Zeichen angezeigt werden. Z. B. für ö = ö. UTF8 ist das bestimmt nicht. Als Zeichencodierung habe ich bei meiner MySQL-DB Latin 1 general gewählt.

Wie ihr sehen könnt, bin ich ein absoluter Anfänger in Sachen PHP und MySQL. Ich habe 4 qualvolle Tage und Nächte gebraucht, damit wenigstens eine Verbindung (per PHP) zur MySQL-DB aufgebaut werden kann. Ich B I T T E um Eure Hilfe. Wenn mehr Input zum Thread benötigt wird, dann lasst es mich wissen. Ich bin langsam am verrecken. :bad-words:


VERY BBIIGG THX an alle, die mir helfen können!

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

e-fee
PostRank 10
PostRank 10
Beiträge: 3893
Registriert: 08.05.2007, 12:53

Beitrag von e-fee » 20.01.2010, 01:18

Und auch Anfänger in HTML? Sonst müsste Dir doch beim Blick in den Quelltext aufgefallen sein, dass was was fehlt:

Code: Alles auswählen

echo "<td><img src=\"". $zeile&#91;'Bildurl'&#93; . "\" alt=\"Hier rein, was auf dem Bild zu sehen ist, das schreibst Du am besten gleich mit in die DB\" /></td>"; 

Code: Alles auswählen

echo "<td><a href=\"". $zeile&#91;'url'&#93; . "\">Linktext</a></td>"; 
Bezüglich UTF8 oder sonstiger gewünschter Zeichencodierung, das am besten im Header des Browsers mit angeben. Sonst nimmt der Browser des Nutzers u.U. einfach seine Voreinstellung / die des Nutzers.

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 20.01.2010, 10:08

ben78 hat geschrieben:Dann habe noch das Problem, dass alle Umlaute in komische Zeichen angezeigt werden. Z. B. für ö = ö. UTF8 ist das bestimmt nicht.
Doch, das ist utf-8. Du musst dem Browser allerdings sagen, dass er die ankommenden Bytes als utf-8 dekodieren soll und nicht als iso-8859-1 o.ä. Das lässt sich aus den Bytewerten alleine nicht zweifelsfrei erkennen, die gehen immer von 0 bis 255.

Gleiches gilt für die Datenbank bzw. den Weg zwischen Skript und Datenbank:
Als Zeichencodierung habe ich bei meiner MySQL-DB Latin 1 general gewählt.
Dazu fehlt noch die Kodierung bei der Eingabe, bei der Übermittlung in die Datenbank, bei der Übermittlung aus der Datenbank und bei der Ausgabe. Die Kodierung in der Datenbank selbst ist, was deinen Unfall angeht, die unwichtigste, sie besagt lediglich, was in die Datenbank passt (in einer Latin-1-Spalte kannst du, wie der Name schon sagt, nur lateinische Buchstaben und etwas Drumherum speichern, kein Kyrillisch, Hebräisch, Arabisch, Chinesisch, nicht einmal alle polnischen Zeichen) und wie es sortiert wird (nach Buchstabe aäbc, nicht nach Bytewert abcä).

Die Kodierung der Verbindung zur Datenbank setzt du mit mysql_set_charset(), die Kodierung der HTML-Seite mit header("Content-Type: text/html; charset=xyz") (xyz wird bei dir entweder windows-1252 oder utf-8 sein müssen).
Das solltest du unbedingt durchgängig, Eingabe, Verarbeitung, Ausgabe, mit derselben Kodierung fahren. Machst du das nicht, kommt es zu besagtem Problem.

Möglicherweise stehen die Daten jetzt auch bereits kaputtkodiert in der Datenbank. Setze erstmal durchgängig dieselbe Kodierung ein, dann kann man weiterschauen.

Davon unabhängig:
echo "<td>". $zeile['Bildurl'] . "</td>";
Das möchtest du in Zukunft lieber so schreiben: echo "<td>". htmlspecialchars($zeile['Bildurl']) . "</td>"; und damit verhindern, dass dir HTML-Code in der Variablen die Seite zerschießt (es sei denn, du willst explizit HTML zulassen). Bei Daten, die du selbst eingetragen hast, ist das sicherlich keine große Gefahr, aber wenn die Daten von draußen kommen, kann dir ein pöser Pube beliebigen Code unterjubeln, einschließlich Verweisen zu manipulierten Grafiken oder Javascript, und -schwupps- wird deine Seite zur Virenschleuder.
In der anderen Richtung, in die Datenbank rein, möchtest du aus ähnlichem Grund alle Daten mit mysql_real_escape_string() entschärfen.