Comment obtenir form_dropdown () afficher la valeur sélectionnée dans Codeigniter?
-
27-10-2019 - |
Question
Je suis en train de remplir une liste déroulante de base de données. Dans mon dossier de vue que j'ai le code suivant
$batch= $query ['batch']; // I pull this data from a separate model
echo form_dropdown('shirts', $options, $batch);
Maintenant, la liste déroulante est peuplait fin de données, mais le problème est que je ne comprends pas la valeur - « $ lot » sélectionné automatiquement lorsque la page se charge. Fait intéressant si j'echo $ lot, ailleurs dans la page, il montre les données correctes, ce qui signifie $ lot est correct.
Voici mon contrôleur
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);
}
Et voici mon modèle
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);
}
Pourriez-vous aider de bien vouloir me résoudre ce problème. Je veux avoir la forte valeur « $ lot » automatiquement sélectionné dans la liste déroulante lorsque la page se charge.
Merci à l'avance.
EDit ... mon modèle pour student_get ($ id)
function student_get($id)
{
$query=$this->db->get_where('student',array('studentid'=>$id));
return $query->row_array();
}
Merci:)
La solution
Je pense que ce qui se passe probablement est que la valeur de $ lot peut être mise en correspondance ce qui rend dans le menu déroulant, mais pas la clé réelle $ options pour cette option particulière qui serait la valeur = « » partie du html.
par exemple ...
// 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);
Modifier en réponse au commentaire de l'OP:
La méthode batchget () ressemble à elle retourne vos options de tableau $ dans le format approprié et votre méthode student_get () renvoie une row_array. Il semble que dans la vue que vous affectez la valeur de l'une des clés renvoyées par la méthode student_get à la valeur sélectionnée stockée dans $ lot qui est ensuite passé dans le troisième argument à form_dropdown ().
Tout cela semble correct. Tant que la valeur de $ lot est en effet l'une des clés du tableau qui est en $ Options, puis form_dropdown () établira une des options déroulantes comme ayant été sélectionné.
Autres conseils
choses de débogage.
var_dump()
$options
, var_dump() $batch
, regardez les deux et voir où vous êtes allé mal.
La troisième option doit être la valeur de la clé, pas la valeur de l'étiquette.
Anthony Jack est probablement raison.