PHP/MySQL in Datalist Variablen aus Datenbank anzeigen lassen (Problem ist nur klein, Lösungsansatz groß ;))?

4 Antworten

echo "<option value=\"$row[feldname]\">$row[feldname]</option>";
echo "<option value=\"$row[andererfeldname]\">$row[andererfeldname]</option>";

du kannst auch label nehmen ,wenn es unbeding HTML5 sein soll in kurzform


das gehst du etwas falsch an .


foreach ($pdo->query($sql) as $row) 



echo "<option label={$row['1']}, {$row['2']}, {$row['3']}>".$row['4']."</option>";





deine datenbank hat doch nicht die felder 1 2 3 4

und ich kenne es wenn schon in einem string dann ohne die hochkommas . und bestimmt auch keine klammern




da steht doch im beispiel wie es geht
http://php.net/manual/de/pdo.query.php

echo "<option value=\"$row[feldname]\">";

und das heisst nicht label bei options ... woher hast du das ??


RakonDark  25.03.2017, 20:32

ok das label hab ich mir selber rausgesucht, HTML5 kurzschreibweise .

0
EierBrei 
Beitragsersteller
 25.03.2017, 20:50
@RakonDark

Tut mir Leid, aber ich glaube wir reden hier aneinander vorbei ^^

Ich habe in der DB beispielsweise 3 Wörter gespeichert, die ich nebeneinander in einem Option-Feld (als Label) ausgeben lassen will -> die Wörter sind z.B.: Apfel, Banane, Kirsche. In der DB ist noch ein viertes Wort gespeichert, z.B.: Obst (<- die eigentliche Option).

Wenn jmd. zum Beispiel Banane eingibt, steht im input-Feld Obst.

Ich will also die 3 Ergebnisse aus der DB gemeinsam in ein Label schreiben, das klappt auch mit meinem Code, nur eben nicht für alle Ergebnisse, sondern nur das Erste...

Verstehst du, was ich meine?

0
RakonDark  25.03.2017, 21:03
@EierBrei

ja und nein , wenn du nur 1 zeile zurück bekommst dann wird auch nur eine zeile angezeigt . $row ist die zeile und das in [] sind die felder.
also wird es nur eine reihe geben .

ansonsten probier


$query = $pdo->prepare("select name FROM tbl_name");
      $query->execute();
      $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
     foreach ( $rows as $row) {
       echo "<option label=\"$row[1],$rows[2]\">$row[3]</option>"; 
     }

aber was ich überhaupt nicht verstehe warum die labels mit komma getrennt werden und warum du die nicht in anführungstriche hast .

du machst da sachen die so nicht in HTML5 gewollt sind .

syntax ist

https://www.w3schools.com/tags/att\_option\_label.asp

<option label="text">

wenn du mir sagst wo du das so gefunden hast wäre ich dankbar.

0
RakonDark  25.03.2017, 21:09
@EierBrei

wenn du untereinander optionen haben willst , dann gilt , für jedes feld eine eigene option

<option label="Apfel">

<option label="Birne">


also wäre es bei dir dann

entweder 3 mal echo oder das ganze in ein foreach


foreach ($pdo->query($sql) as $row) {
    foreach($row as $feldname=>$feldwert) {
      echo "<option label=\"$feldwert\">";
    }
}



0

du must bei label auch anführungstriche machen

so wie es im syntax angegeben wird

<option label="text">blablub</option>

also bei dir dann

echo "<option label=\"text\">blablub</option>";

übrigens macht man das bei attributen immer . wir sind ja nciht mehr in 19XX .


RakonDark  25.03.2017, 21:18

btw : nächstes mal schreibst du hin was für eine ausgabe du bekommst , und was du gerne hättest
erklärt hast du es jedenfalls sehr anstrengend . zumal man sich fragt warum solch elementaren fehler gemacht werden .

0
EierBrei 
Beitragsersteller
 25.03.2017, 21:50
@RakonDark

Danke für deine Hilfe, es klappt nun!

ich weiß, ehrlich gesagt auch nicht, wieso mir ein solcher Fehler unterlaufen ist, entweder liegt das an der Uhrzeit oder an dem Highlighten meines Editors, das sah irgendwie nicht richtig aus ^^

Naja: danke!

0

Echoe doch den HTML Code als Datei!

Woher ich das weiß:Berufserfahrung – Arbeite als Informatiker

EierBrei 
Beitragsersteller
 25.03.2017, 20:22

Was meinst du damit? Bist du sicher, dass da das Problem liegt?

0
RakonDark  25.03.2017, 20:27
@EierBrei

lade meine antwort oben nochmal neu .. da steht die lösung

0