Frage zum Auslesen
Grasu
- php
Hi ;)
Also ich will etwas aus meiner Datenbank auslesen und es dann zwischen <img src=...> setzen.
(ich habe den Link zu einem bild in der Datenbank speichern lassen)
<?php
error_reporting(E_ALL);
include 'config.php';
@mysql_connect(HOST, USER, PASS) OR die(mysql_error());
mysql_select_db(DB) OR die(mysql_error());
$sql = "SELECT
Bild
FROM
User;";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
echo "<img src='".$result."'>";
?>
So, das hier ist jetzt zusammengewürfelt, weil ich vieles probiert habe.
Wie geht's richtig? =)
Viele Grüße =)
Hello,
<?php
error_reporting(E_ALL);include 'config.php';
$con = mysql_connect(HOST, USER, PASS) OR die(mysql_error());
mysql_select_db(DB, $con) OR die(mysql_error());
$sql = "SELECT
Bild
FROM
User
WHERE
id = $id"; ## oder welche Einschränkung Du sonst benötigst
$result = mysql_query($sql,$con) OR die(mysql_error());
if (($mysql_errno($con) == 0) and $result)
{
while($row = mysql_fetch_assoc($result))
{
echo "<img src='".htmlspecialchars(urlencode($row['bild']))."'>";
}
}
?>
Fehlermeldungen nicht unterdrücken, sondern immer alle anzewigen lassen, inclusive Notices.
Die kann man nachher im Produktiveinsatz komplett filtern bzw. in eine Log-Datei umleiten.
Select-Statements benötigen meistens auch eine Where-Klausel, es sei denn, man will wirklich ALLE Datensätze auslesen.
Nur, wenn kein fehler auftrat, kannst Du weiterarbeiten
Nur, wenn ein Result vorliegt, kannst Du weiterarbeiten
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Was soll ich bei ID machen?
Das einzige was ich in der Tabelle habe, ist die User ID. Beim Test wäre das jetzt die 1.
Was soll ich bei ID machen?
Das einzige was ich in der Tabelle habe, ist die User ID. Beim Test wäre das jetzt die 1.
Naja, was hast Du denn vom User? Wohl die ID. Die ist doch hoffentlich auch schoen eindeutig und deshalb geeignet alle Datensaetze fuer den User auszulesen.
Ausser Du moechtest gar nicht einen bestimmten User, sondern eine Liste von allen. Dann is dein Code ohne Wherebedingung schon ok.
echo $begrüßung;
echo "<img src='".htmlspecialchars(urlencode($row['bild']))."'>";
Bist du sicher, dass du die URL für den URL-Kontext aufbereiten willst? urlencode() nimmt man sonst nur, wenn man Daten für einen Querystring behandeln will. Siehe Anwendungsbeispiel im Handbuch.
echo "$verabschiedung $name";
Hello,
echo $begrüßung;
echo "<img src='".htmlspecialchars(urlencode($row['bild']))."'>";
Bist du sicher, dass du die URL für den URL-Kontext aufbereiten willst?
urlencode() nimmt man sonst nur, wenn man Daten für einen Querystring behandeln will. Siehe Anwendungsbeispiel im Handbuch.
Nicht Wirklich.
War 'ne dusselige Idee.
Sind ja keine Daten, die in der URL transportiert werden sollen, sondern die URL selber...
drei Varianten, die funktionieren würden.
<p><img src="testdateien/umleitung0cy.gif" alt="ohne Leerzeichen" /></p>
<p><img src="testdateien/kopie von umleitung cy.gif" alt="mit Leerzeichen" /></p>
<p><img src="testdateien/kopie%20von%20umleitung%20cy.gif" alt="mit Leerzeichen encoded" /></p>
eine, die nicht funktioniert:
<p><img src=testdateien/kopie von umleitung cy.gif alt="mit Leerzeichen" /></p>
und dann doch wieder:
<p><img src=testdateien/kopie%20von%20umleitung%20cy.gif alt="mit Leerzeichen encoded" /></p>
Das hatte mich auf die Idee mit urlencode gebracht. :-|
Aber es würde hier sowieso nur rawurlencode funktionieren und dann auch nicht auf den gesamten Pfad angewandt, sondern nur auf seine einzelnen Teile.
Was davon funktioniert denn nun nur, weil die Browser oder der Webserver tolerant sind?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
echo $begrüßung;
Was davon funktioniert denn nun nur, weil die Browser oder der Webserver tolerant sind?
<p><img src="testdateien/umleitung0cy.gif" alt="ohne Leerzeichen" /></p>
Klarer Fall.
<p><img src="testdateien/kopie von umleitung cy.gif" alt="mit Leerzeichen" /></p>
Für HTML ist das ein klarer Fall, weil das Attribut in "" eingeschlossen ist. Wenn der Browser allerdings
GET /testdateien/kopie von umleitung cy.gif HTTP/1.0
auf die Reise schickt, bekommt er Probleme mit der HTTP-RFC, die im Abschnitt 5.1 ein
Method SP Request-URI SP HTTP-Version CRLF
anführt, also Leerzeichen (SP) zwischen den Bestandteilen vorsieht. Er wird also von sich aus die zum gültigen Request nötigen Handlungen ausführen müssen, um keinen Bug-Report zu kassieren. Löst man Request-URI nach den gültigen Zeichen auf, wozu auch RFC 2396 benötigt wird, findet man darunter kein Leerzeichen.
<p><img src="testdateien/kopie%20von%20umleitung%20cy.gif" alt="mit Leerzeichen encoded" /></p>
Hier wurde dem Browser quasi in vorauseilendem Gehorsam seine Arbeit abgenommen.
eine, die nicht funktioniert:
<p><img src=testdateien/kopie von umleitung cy.gif alt="mit Leerzeichen" /></p>
Ganz klar, sind doch Leerzeichen unter HTML als Trennzeichen zwischen den Attributen reserviert. Hier hast du das Attribut alt, src mit dem Inhalt testdateien/kopie und noch drei weitere Attribute namens von, umleitung und cy.gif.
und dann doch wieder:
<p><img src=testdateien/kopie%20von%20umleitung%20cy.gif alt="mit Leerzeichen encoded" /></p>
Kein Leerzeichen, also alles ein Attribut-Wert.
Das hatte mich auf die Idee mit urlencode gebracht. :-|
Aber es würde hier sowieso nur rawurlencode funktionieren und dann auch nicht auf den gesamten Pfad angewandt, sondern nur auf seine einzelnen Teile.
Genau so. urlencode() ist für Daten im Query-Teil zu verwenden, rawurlencode() für Bestandteile der URL, nicht aber für die regulären Trennzeichen (: als Schema-Trenner, / als Pfad-Trenner, ? als Query-Trenner, & oder ; oder was auch immer man verwenden mag (abzüglich #) als Query-Parameter-Trenner, und # für den Anker).
echo "$verabschiedung $name";