Remplir une liste déroulante en fonction de la sélection d’une autre liste à l’aide de Jquery dans Codeigniter

J’utilise Codeigntier et j’ai la liste suivante dans mon fichier de vue qui remplit une liste de sujets.

 

Maintenant, lorsque quelqu’un sélectionne une valeur dans le menu déroulant ci-dessus, je souhaite envoyer la valeur à mon contrôleur à l’aide de jquery et query dans le tableau suivant ( SELECT teacherid from table3 WHERE subjectid=$subjectid) liste teacherid dans un autre menu déroulant, sélectionnez. Si un utilisateur modifie sa sélection dans le premier menu déroulant, je souhaite également que les valeurs du deuxième menu déroulant soient modifiées.

Nom de la table: table3

 subjectid teacherid 1 1001 2 1003 

Donc, au bout du compte, je veux renseigner une liste déroulante sur la base d’une autre liste déroulante. J’ai trouvé quelques tutoriels sur ce sujet mais je ne comprenais pas vraiment ceux-ci (je sais que je suis stupide).

Pourriez-vous s’il vous plaît me montrer comment mon écran et mon contrôleur devraient ressembler si je veux atteindre cet objective?

Merci 🙂

Modifier

Bonjour, voici à quoi ressemblent mon contrôleur et mon fichier de vue:

Mon contrôleur

  $id= $this->input->post('subject_id'); //receiving the ajax post from view $this->db->select('teachername,teacherid'); $this->db->from('subject_teacher'); $this->db->join('teacher', 'teacher.teacherid = subject_teacher.teacherid'); $this->db->where('subjectid',$id); $records = $this->db->get(''); $data=array(); $data[''] = 'Select'; foreach ($records->result() as $row) { $data[$row->teacherid] = $row->teachername; } return ($data); // I need help here... How to send the data as json? 

Mon avis:

   $(function(){ $("#subject").change(function(){ $.ajax({ url: "mycontroller/function", data: {subject_id: $(this).val()}, type: "post", success: function(msg){ $("#teacher").html(); // I need help here...how do I get the value from controller and append to my another dropdown named teacher? }) }) }); // function ends here    Select  

Veuillez apporter les modifications nécessaires dans ma vue et mon contrôleur.

Merci d’avance 🙂

Vous pouvez le faire en utilisant jquery ajax. D’abord, vous postez subject_id sur la page ajax, la page ajax renverra la liste des enseignants dans la liste déroulante, puis le résultat sera renseigné sur la première page.

 $("#subject").change(function(){ $.ajax({ url: "your-ajax-page-url", data: {subject_id: $(this).val()}, type: "post", success: function(msg){ $("#teacher").html(); }) }) 

C’est le contrôleur édité

  $id= $this->input->post('subject_id'); //receiving the ajax post from view $this->db->select('teachername,teacherid'); $this->db->from('subject_teacher'); $this->db->join('teacher', 'teacher.teacherid = subject_teacher.teacherid'); $this->db->where('subjectid',$id); $records = $this->db->get(''); $output = null; foreach ($records->result() as $row) { $output .= ""; } echo $output; // HTML example 

vous pouvez le faire comme ceci:

vous devrez créer une fonction dans votre contrôleur qui remplira les données mais au lieu de sortir votre vue, vous devrez la mettre dans un var comme celui-ci

 $outout = $this->load->view('myselect_output',$data,TRUE); 

et ensuite dans votre vue principale, vous devrez manipuler le DOM avec jquery ou n’importe quelle autre bibliothèque js.