[gelöst]Datenbankwerte in eine Selectbox einlesen
am 29.08.2012 - 13:00 Uhr in
Hallo Drupalfreunde,
danke erstmal, dass ihr meine anfängerfrage Anschaut :-)
nun zu meinem Probelm:
Ich möchte aus meiner Datenbank Wete auslesen und diese in eine Auswahlliste. hier ist mein Code den ich soweit schon habe:
<?php
$sql_weather = db_select("wetterdaten_staedte", "u")->fields('u', array("id" ,"staedte"))->execute()->fetchAll();
foreach($sql_weather as $result_weather) {
$plz = $result_weather->staedte;
$form['staedte_option'] = array(
'#type' => 'value',
'#value' => array(t($plz))
);
$form['staedte_name'] = array(
'#title' => t('Ort/Stadt'),
'#type' => 'select',
'#description' => t('Bitte wählen Sie eine/n Stadt/Ort aus.'),
'#options' => $form['staedte_option']['#value']
);
}
?>Leider wird ja bei meinem Code nur das letzte ergebnis in die Selectbox geschrieben.
Meine Frage:
Gibt es noch eine andere möglichekit sachen dynamisch in so eine liste laden zu lassen? Was habe ich hier falsch gemacht?
Über eine Anmerkung zu meinem Fehler würde ich mich freuen :-)
- Anmelden oder Registrieren um Kommentare zu schreiben

Du musst die foreach-Schleife
am 29.08.2012 - 13:57 Uhr
Du musst die foreach-Schleife umbauen. Dort darfst Du nur die Postleitzahlen in einen Array packen, den Du dann bei den options angibst. Die Form muss außerhalb dieser Schleife stehen.
Beste Grüße
Werner
Hallo werner! das hatte ich
am 29.08.2012 - 14:09 Uhr
Hallo werner!
das hatte ich zwischenzeitlich schon probiert mein codestelle sieht nun so aus
<?php
$sql_weather = db_select("wetterdaten_staedte", "u")->fields('u', array("id" ,"staedte"))->execute()->fetchAll();
foreach($sql_weather as $result_weather) {
$plz = $result_weather->staedte;
$plz_test = array($plz);
}
$form['staedte_option'] = array(
'#type' => 'value',
'#value' => array($plz_test)
);
$form['staedte_name'] = array(
'#title' => t('Ort/Stadt'),
'#type' => 'select',
'#description' => t('Bitte wählen Sie eine/n Stadt/Ort aus.'),
'#options' => $form['staedte_option']['#value']
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Absenden'),
);
?>
wenn ich diesen code ausführe bekomme ich nur warnings und es geht nicht mehr.
Ich weiß ehrlich nicht, was
am 29.08.2012 - 14:45 Uhr
Ich weiß ehrlich nicht, was das Konstrukt
$form['staedte_option'] = array(
'#type' => 'value',
'#value' => array($plz_test)
);
überhaupt soll. Das hat da nichts zu suchen. Du weist mittels
'#options' => $plz_test,die Optionen direkt zu. Außerdem sollte man nach Coding Standards immer ein Komma am Ende der Zeile im Array haben, auch wenn das beim letzten Eintrag nicht notwendig wird. So vermeidet man Probleme, wenn man mal "auf die Schnelle" etwas ändert und das fehlende Komma dabei übersieht.Beste Grüße
Werner
Danke
am 29.08.2012 - 15:02 Uhr
ok ja ich habs gemerkt. Ich hab dieses konstrukt aus dem Pro Drupal 7 Development abgekupfert und versucht es für meine zwecke zu missbrauchen.
Hab jetzt nochmal bisschen rumprobiert und das rausbekommen:
<?php
$sql_weather = db_select("wetterdaten_staedte", "u")->fields('u', array("id" ,"staedte"))->execute()->fetchAll();
$p = 0;
$plz = array();
foreach($sql_weather as $result_weather) {
$plz[$p] = $result_weather->staedte;
//echo $plz;
$p++;
}
$form['staedte_name'] = array(
'#title' => t('Ort/Stadt'),
'#type' => 'select',
'#required' => TRUE,
'#description' => t('Bitte wählen Sie eine/n Stadt/Ort aus.'),
'#options' => $plz,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Absenden'),
);
?>
jetzt funktioniert es auch danke für dein Engagement. :-)