Options/Value fuer ein Form-Select Element
Eingetragen von gaertner_markus (45)
am 04.11.2008 - 08:59 Uhr in
am 04.11.2008 - 08:59 Uhr in
Hallo,
in einem Formular habe ich ein Select-Feld eingebunden. Mein Problem ist wie ich diesem Element die anzuzeigenden Werte und die "Values" beibringen.
Meine Daten kommen aus einer DB, und sind Werte wie folgende: 2,4,1,34,23. Ich kann die Zahlen als einzelnen String aber auch in einem Array uebergeben.
Wie muss ich den unten stehenden Code umschreiben, damit sowohl auch die Values angezeigt werden
$form['x']['xxx'] = array(
'#type' => 'select',
'#title' => t('XXX'),
'#options' => array(
'title' => t('Titles only'),
'teaser' => t('Titles plus teaser'),
),
Dank im Vorraus!
mfg
- Anmelden oder Registrieren um Kommentare zu schreiben
Zwischenstand
am 04.11.2008 - 09:40 Uhr
so, durch testen bin ich meinem Ziel schon etwas naeher gekommen. Hier mein Code:
... SQL-QUERY ...
while ($row = db_fetch_object($result)) {
$v[] = array($row->id => $row->name);
}
$all_ids = $v;
...
$form['datas']['saison'] = array(
'#type' => 'select',
'#title' => t('Saison'),
'#options' => $all_ids,
);
Problem ist nur das die Select-Liste mit bei jedem Eintrag unterbrochen/gruppiert wird. Dies soll nicht sein ...
Wenn die Form-API ein
am 04.11.2008 - 10:17 Uhr
Wenn die Form-API ein mehrdimensionales Array für die Options erhält, werden die Einträge automatisch gruppiert. Brauchst du unbedingt die id's als Values?
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
RE: Wenn die Form-API ein
am 04.11.2008 - 12:02 Uhr
ich hielt die Values bisher immer fuer die Werte welche dann beim Auswerten des Formular genutzt werden koennen.
Ich wuerde auch gern einen Namen anzeigen, und nicht irgend eine ID womit man nichts anfangen kann.
Wenn die Form-API ein mehrdimensionales Array für die Options erhält, werden die Einträge automatisch gruppiert. Brauchst du unbedingt die id's als Values?
Key => Value
am 04.11.2008 - 13:46 Uhr
Also ich habe das bisher meist so gelöst:
$select = array();
loop:
...
$select[$key]= $value;
...
endloop:
Wenn ich dann $select als options-Feld nehme werden die Inhalte der Values angezeigt und der Key der Auswahl zurückgeliefert.
Gruß
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
RE:Key => Value
am 04.11.2008 - 14:42 Uhr
Danke!
laeuft jetzt.
Also ich habe das bisher meist so gelöst:
$select = array();
loop:
...
$select[$key]= $value;
...
endloop:
Wenn ich dann $select als options-Feld nehme werden die Inhalte der Values angezeigt und der Key der Auswahl zurückgeliefert.
Ähnliches Problem
am 13.04.2009 - 21:31 Uhr
Vielleicht kann mir ja jemand helfen. Ich möchte auch in einer Select-Liste alle Werte aus einer DB anzeigen. Momentan bekomme ich aber noch einen Fehler:
warning: Invalid argument supplied for foreach() in /var/www/steffen/web/pewiha/includes/form.inc on line 1420. <- Ich denke, das müsste an meinem form-Feld liegen.
Ich rufe in der Methode mymodule_form($node) folgende Methode auf.
$dub_studio_options = studio_entries();
Mein form-Element sieht so aus:
$form['studio'] = array(
'#type' => 'select',
'#title' => t('Studio'),
'#description' => t('The dubstudios.'),
'#options' => $dub_studio_options,
);
Die Methode, die ich aufrufe, sieht so aus:
function studio_entries(){
$result = db_query(
'SELECT field_dub_studio_value FROM {content_type_dub_studio}'
);
while($row = db_fetch_array($result)){
$studio_entry[] = array($row->field_dub_studio_value);
}
return $studio_entry;
}
Hoffe mir kann jemand helfen.
Objekt vs. Array
am 13.04.2009 - 22:52 Uhr
Moin!
Wenn Du
db_fetch_array()
verwendest, solltest Du auch dementsprechend auf das Ergebnis zugreifen. Du versuchst, auf ein Attribut eines Objekts$row
zuzugreifen.Da
$row
jedoch ein Array ist, existiert kein Attributfield_dub_studio_value
, so dass$studio_entry
nie gefüllt wird (und auch kein Array ist, da die Variable nie initialisiert wird).Richtig wäre also:
<?php
function studio_entries() {
$studio_entries = array();
$result = db_query('SELECT field_dub_studio_value FROM {content_type_dub_studio}');
while ($row = db_fetch_object($result)) {
$studio_entries[] = $row->field_dub_studio_value;
}
return $studio_entries;
}
?>
Btw.: Coder ist auch Dein Freund.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke. Hat geklappt
am 14.04.2009 - 06:28 Uhr
Super für den Tipp, hat geklappt.
Coder habe ich auch installiert, hatte da aber jetzt nicht mit geguckt. Werde das Modul in Zukunft wohl genauer nutzen.