Como se llena un select con valores de una tabla de la Base de Datos

Events happening in the community are now at Drupal community events on www.drupal.org.
Mr. NoNaMe's picture

hola a todos...

necesito saber como puedo llenar recursivamente un select con los valores que posee una tabla, yo creo el select de la siguiente forma

<?php
$form
['select'] = array(
'#type' => 'select',
'#title' => t('Values'),
'#options' => values(),
'#required' => TRUE,
);
?>

y la función values() es esta

<?php
function values() {
$result = db_query("SELECT c1, c2 FROM tabla");
foreach (
$result as $record) {
 
$items = array($record->c1=> $record->c2);
}
return
$items;
}
?>

el resultado de esto es el siguiente... el select solamente devuelve el último valor de la tabla y en caso de poner el return dentro del foreach entonces solo me pone el primer valor... como puedo hacer para que salgan todos los valores

Comments

<?phpfunction values()

hatuhay's picture

<?php
function values() {
$result = db_query("SELECT c1, c2 FROM tabla");
foreach (
$result as $record) {
 
$items[] = array($record->c1=> $record->c2);
}
return
$items;
}
?>

eso ya lo había probado y

Mr. NoNaMe's picture

eso ya lo había probado y hace lo que deseo de cierta forma, lo que pasa es el html que retorna es el siguiente y eso no es lo que quiero como tal

<select id="edit-category" name="category" class="form-select"><optgroup label="0"><option value="1">asdasd</option></optgroup><optgroup label="1"><option value="2">fgfghfgh</option></optgroup><optgroup label="2"><option value="3">jghjghjghj</option></optgroup></select>

¿Primero estamos en d7 o en

oskar_calvo's picture

¿Primero estamos en d7 o en d6?

Porque si es d7 la query no esta bien montada.

Mira también la función http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_m... para montar el array que luego devolverás al form api.

Oskar

yo uso d7, y porque dices que

Mr. NoNaMe's picture

yo uso d7, y porque dices que la query esta mal montada??

Ya resolví el problema, aqui

Mr. NoNaMe's picture

Ya resolví el problema, aqui les dejo la solución...

<?php
function values() {
$result = db_select('nombre_tabla', NULL, array('fetch' => PDO::FETCH_ASSOC))
->
fields('nombre_tabla', array('c1', 'c2'))
->
execute();
$values= array();
foreach (
$result as $value) {
$values[$value['c1']] = $value['c2'];
}
return
$values;
}
?>

<?php
$form
['values'] = array(
'#type' => 'select',
'#title' => t('Select'),
'#options' => values(),
);
?>

Argentina

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: