• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP SQL Abfrage und Ausgabe als Image

AgidoMedia

Neues Mitglied
Moin in die Runde,

habe per PHP eine SQL Abfrage erstellt um einen bestimmten Wert einer Zelle auszulesen. Das funktioniert und wird per echo ausgegeben.

Nun würde ich gerne, bei bestimmten Werten statt den Zellenwert einen HTML Befehl ausgeben und ein Image einbinden.

Wie gesagt, funzt die Abfrage bereits und gibt einen Zellenwert per PHP aus.

VG und danke vorab
 
hier der Code

<?php
$pdo = new PDO('mysql:host=mysql;dbname=db......', 'db.........', '..........');
$statement = $pdo->prepare("SELECT * FROM app_websites_history WHERE websiteid = 19 ORDER BY id DESC limit 1");
$result = $statement->execute();
while($data = $statement->fetch()) {
echo "".$data['statuscode']."";
}$pdo = null;
?>

Als Statuscode wird als Beispiel 200 oder 500 ausgegeben. Nun würde ich gerne bei beiden unterschiedliche Bilder mit HTML anzeigen.
 
PHP:
echo "".$data['statuscode']."";
Was sollen die "" am Anfang und am Ende?

PHP:
while($data = $statement->fetch()) {
   if ($data['statuscode'] == 200)
      echo "Bild1";
   else if ($data['statuscode'] == 500)
      echo "Bild2";
   else
      echo $data['statuscode'];
}
 
PHP:
echo "".$data['statuscode']."";
Was sollen die "" am Anfang und am Ende?

PHP:
while($data = $statement->fetch()) {
   if ($data['statuscode'] == 200)
      echo "Bild1";
   else if ($data['statuscode'] == 500)
      echo "Bild2";
   else
      echo $data['statuscode'];
}
Danke, Probiere ich gleich einmal aus. Am Anfang und am Ende sind Platzhalter für Texte. VG
 
PHP:
while($data = $statement->fetch()) {
   if ($data['statuscode'] == 200)
      echo "Bild1";
[…]
}
die while-Schleife ist unnötig da der Query nur einen Datensatz liefert - einfach nur »$data = $statement->fetch();« reicht. Zudem würde ich empfehlen immer geschweifte Klammern zu verwenden um potentielle Fehlerquellen auszuschließen.

$pdo = new PDO('mysql:host=mysql;dbname=db......', 'db.........', '..........');
$statement = $pdo->prepare("SELECT * FROM app_websites_history WHERE websiteid = 19 ORDER BY id DESC limit 1");
In der ersten Zeile fehlt noch ein »;charset=utf8mb4« am Ende des DSN damit die Datenbank weiß wie die Daten zurückgegeben werden sollen. Und: verwende niemals »SELECT *«, gib *immer* die benötigten Spalten an.

Nun würde ich gerne, bei bestimmten Werten statt den Zellenwert einen HTML Befehl ausgeben und ein Image einbinden.
HTML ist keine Programmiersprache, und kennt deswegen keine Befehle.
 
Moin und danke, habe es getestet. Funktioniert mit Textausgabe. Image Einbindung geht leider nicht. Wo mache ich noch einen Fehler?

Code:
<?php
$pdo = new PDO('mysql:host=mysql;dbname=db..........', 'db...........', '...............');
$statement = $pdo->prepare("SELECT * FROM app_websites_history WHERE websiteid = 27 ORDER BY id DESC limit 1");
$result = $statement->execute();
while($data = $statement->fetch()) {
    if ($data['statuscode'] == 200)
       echo "<img height="20" src="images/good.png" width="">";
    else if ($data['statuscode'] == 500)
       echo "<img height="20" src="images/alert.png" width="">";
    else if ($data['statuscode'] == 301)
       echo "<img height="20" src="images/alert.png" width="">";
    else
       echo $data['statuscode'];
 }
?>
 
Zuletzt bearbeitet:
Moin und danke, habe es getestet. Funktioniert mit Textausgabe. Image Einbindung geht leider nicht. Wo mache ich noch einen Fehler?
Schalte mal dein errorepoting ein , dann solltest du bei deinen echo Ausgaben Meldungen kommen.
Nutze " und ' richtig , dann geht das auch

Und wenn du deinen Code hier postest und ihn ichtig postest
PHP:
<?php
$pdo = new PDO('mysql:host=mysql;dbname=db..........', 'db...........', '...............');
$statement = $pdo->prepare("SELECT * FROM app_websites_history WHERE websiteid = 27 ORDER BY id DESC limit 1");
$result = $statement->execute();
while($data = $statement->fetch()) {
    if ($data['statuscode'] == 200)
       echo "<img height="20" src="images/good.png" width="">";
    else if ($data['statuscode'] == 500)
       echo "<img height="20" src="images/alert.png" width="">";
    else if ($data['statuscode'] == 301)
       echo "<img height="20" src="images/alert.png" width="">";
    else
       echo $data['statuscode'];
 }
?>

Dann kannst du hier an den Farben schon erkennen, dass die Zeilen ein Problem haben.
Echo Ausgaben, die einen Puren String erhalten sollten, komplett rot sein , falls ich mich jetzt nicht irre
 
Zuletzt bearbeitet:
Image Einbindung geht leider nicht. Wo mache ich noch einen Fehler?
Wenn es denn nur einer wäre … Du ignorierst jegliche Syntaxregeln in PHP und verwendest (wie basti1012 schon schrieb) einfach immer die gleichen Anführungszeichen - ein Forum ist nicht dafür da Grundlagen einer Programmiersprache zu vermitteln.

Zudem ignorierst du alles was ich in #7 geschrieben hatte und deine img-Element enthalten auch noch Fehler: das width-Attribut darf nicht leer sein und das alt-Attribut muss zwingend vorhanden sein!
 
Ich habe noch eine Fage /Ausage.
Code:
$statement = $pdo->prepare("SELECT * FROM app_websites_history WHERE websiteid = 27 ORDER BY id DESC limit 1");
Das in dem Fall die Schleife unnötig ist, wurde dir ja schon gesagt.
Du suchst nach eine Webseitenid , sollte die nicht eigentlich nur einmalig in der Datenbank vorhanden sein?
Wenn ja kann de query ja auch gekürzt werden
Code:
$statement = $pdo->prepare("SELECT * FROM app_websites_history WHERE websiteid = 27 ");
Das Select * sollte dann aber noch geändert werden , wurde aber auch schon mal gesagt.

Der Query brauch natürlich dann auch keine Schleife (Falls die Webseiten Id einmalig ist)
 
Du suchst nach eine Webseitenid , sollte die nicht eigentlich nur einmalig in der Datenbank vorhanden sein?
Am Tabellennamen hängt noch ein "history" - ich würde also mal vermuten dass da Änderungen rein geschrieben werden womit es natürlich mehrere Datensätze für jede webseitenid geben kann. Es sei aber noch erwähnt dass sich IDs idR nicht dazu eignen um danach zu sortieren, hier könnte es aber eine Ausnahme sein (ich würde wohl trotzdem eine DATE(TIME)-Spalte zum Sortieren nehmen).
 
Zurück
Oben