2012-01-16 18 views
7

Me pregunto si alguien me puede ayudar. Tengo un form_dropdown que estoy completando con opciones de la base de datos. Quiero agregar un valor "Seleccionar por defecto" en la parte superior de la lista, pero no puedo encontrar la manera de hacerlo sin agregar eso a la base de datos.CodeIgniter - Agregar un valor predeterminado a form_dropdown

Mi código es el siguiente:

Respuesta

11

Otra manera de escribir sería:

function populatedropdown() 
{ 
    $query = $this->db->query('SELECT * FROM '.$this->table_name.' WHERE active=1 ORDER BY brand'); 

    if ($query->num_rows() > 0) { 
     $dropdowns = $query->result(); 

     $dropDownList[''] = 'Please Select'; // default selection item 
     foreach($dropdowns as $dropdown) { 
      $dropDownList[$dropdown->brand] = $dropdown->brand; 
     } 

     return $dropDownList; 
    } else { 
     return false;  // return false if no items for dropdown 
    } 
} 
+2

Debe usar '''' como la clave o '0' se pasará en el valor del formulario. es decir, '$ dropDownList [''] = 'Seleccione';' a menos que quiera eso ...? –

+0

@Madmartigan, gracias, hecho, también actualicé mi respuesta para incluir el control del número de fila. – Jakub

+0

No lo necesita ya que 'result()' siempre devuelve una matriz. Carece de sentido. Devolver falso quizás no sea una buena idea para una función que debería devolver una matriz, una matriz vacía podría ser más apropiada. Entonces +1 y -1: / –

7

sólo tiene que añadir a la matriz antes de devolverlo.

function populatedropdown() 
{ 
    $query = $this->db->query('SELECT * FROM '.$this->table_name.' WHERE active=1 ORDER BY brand'); 
    $dropdowns = $query->result(); 

    foreach($dropdowns as $dropdown) { 
     $dropDownList[$dropdown->brand] = $dropdown->brand; 
    } 
    $finalDropDown = array_merge(array('' => 'Please Select'), $dropDownList); 

    return $finalDropDown; 
} 
+0

+1 mejor y más fácil forma de hacerlo – Jakub

+1

Mejor aún, defina '$ dropDownList = array ('' => 'Please Select');' first en caso de que no haya resultados de DB. Además del pequeño impulso de no llamar a una función. –

+0

+1 - también, solo use la validación para mantener el resultado vacío fuera de la base de datos y forzar una selección (si es necesario). – swatkins

0

También existe la posibilidad de cambiar el form_helper.php y para añadir algo como:

$form .= '<option value =0 >...</option>'; 

a la func form_dropdown . Sin embargo, no lo selecciono como predeterminado, pero la segunda entrada en el formulario.

Pero el problema es que cambia los archivos de núcleo que generalmente no deberían estar caídos.

Cuestiones relacionadas