¿Cómo obtener form_dropdown () mostrar el valor seleccionado en codeigniter?
-
27-10-2019 - |
Pregunta
Estoy tratando de completar una lista desplegable de la base de datos. En mi archivo de vista tengo el siguiente código
$batch= $query ['batch']; // I pull this data from a separate model
echo form_dropdown('shirts', $options, $batch);
Ahora la lista desplegable está llenando bien los datos, pero el problema es que no obtengo el valor: "$ Batch" seleccionado automáticamente cuando la página se carga. Curiosamente, si hago eco de $ por lotes, en otra parte de la página muestra los datos correctos, lo que significa que $ Batch está bien.
Aquí está mi controlador
function update($id){
$this->load->model('mod_studentprofile');
$data['query']= $this->mod_studentprofile->student_get($id);
$data['options']= $this->mod_studentprofile->batchget();
$data['tab'] = "Update Student Information";
$data['main_content']='update_studentprofile';
$this->load->view('includes/template',$data);
}
Y aquí esta mi modelo
function batchget() {
$this->db->select('batchname');
$records=$this->db->get('batch');
$data=array();
foreach ($records->result() as $row)
{
$data[$row->batchname] = $row->batchname;
}
return ($data);
}
¿Podrías ayudarme amablemente a resolver este problema? Quiero tener el valor: "$ Batch" seleccionado automáticamente en la lista desplegable cuando se carga la página.
Gracias de antemano.
Editar ... mi modelo para student_get ($ id)
function student_get($id)
{
$query=$this->db->get_where('student',array('studentid'=>$id));
return $query->row_array();
}
Gracias :)
Solución
Creo que lo que probablemente está sucediendo es que el valor en $ lotes puede estar coincidiendo con lo que está representando en el menú desplegable, pero no la clave real en $ opciones para esa opción en particular, que sería el valor = "" porción del HTML.
por ejemplo...
// this wouldn't select 'foo' as you may be thinking
$options => array('0' => 'foo', '1' => 'bar');
$batch = 'foo';
echo form_dropdown('shirts', $options, $batch);
// this would select foo
$options => array('foo' => 'foo', 'bar' => 'bar');
$batch = 'foo';
echo form_dropdown('shirts', $options, $batch);
Editar en respuesta al comentario de OP:
El método BatchGet () parece devolver su matriz de opciones $ en el formato adecuado y su método student_get () está devolviendo un row_array. Parece que en la vista está asignando el valor de una de las claves devueltas por el método Student_Get para ser el valor seleccionado almacenado en $ Batch, que luego se pasa como el tercer argumento a Form_dropdown ().
Todo esto parece ser correcto. Siempre y cuando el valor de $ Batch sea de hecho una de las claves de matriz que está en $ opciones, entonces Form_dropdown () establecerá una de las opciones desplegables que se han seleccionado.
Otros consejos
Depurar cosas.
var_dump()
$options
, var_dump() $batch
, mira los dos y mira dónde te equivocaste.
La tercera opción debe ser el valor de la clave, no el valor de la etiqueta.
Anthony Jack probablemente tenga razón.