Problème de liste de choix venant d'un BDD

Par kurdtkobane, il y a 5 ans


Base de données MySQL

Bonjour,

Je rencontre un petit problème avec mon code.

Ce que je fais

Je cherche à créer une liste de choix qui a pour value et label le nom et prénom de l'élève

Le formulaire

if(!isset ($_POST['add_note']) AND !isset ($_POST['student_choice'])){ ?> <form action="" method="post"> <label for="student_choice">Choisissez l'élève: </label> <select name="student_choice"> <option value="choose">--- Choisissez ---</option> <?php foreach($student as $studentList){?> <option value="<?= $studentList[0] . ' ' . $studentList[1]?>"><?= $studentList[0] . ' ' . $studentList[1]?></option> <?php }; print_r($studentlist);?> </select><br/> <label for="student_note">Note: </label><input type="number" name="student_note" placholder="Note" /><br/> <p><strong>Voulez-vous ajouter une nouvelle note?</strong></p> <label for="add_note">Oui </label><input type="radio" name="add_note" value="ok"/> <label for="add_note">Non </label><input type="radio" name="add_note" value="not" checked /><br> <input type="submit" value="Envoyer"> </form> <?php print_r($student);

La fonction de $student

<?php function studentSearch() :array{ require 'pdo.php'; $student = [ 'first_name'=> '', 'last_name' => '' ]; $req = $bdd->query('SELECT first_name, last_name FROM students'); foreach($req as $studentName){ $student[] = [$studentName['first_name'], $studentName['last_name']]; }; return $student; };

Ce que j'obtiens

J'obtiens bien une liste, mais dedans j'ai 2X "Uninitialized string offset 0" puis la liste des élèves. Je n'arrive pas à comprendre où est le bug.

Merci de votre aide.

2 réponses

BernardNgandu, il y a 5 ans

Dans ta fonction search_student tu as un tableau comme celui-ci

<?php $student = [ 'first_name'=> '', 'last_name' => '' ]; }

Mais après ta req SQL tu obtiens un tableau du genre

$student = [ 'first_name' => '', 'last_name' => '', ['a', 'b'], // ceci est ajouté dans ta boucle ['a', 'b'] ];

Alors essaie avec un tableau vide par défault $student = []

kurdtkobane, il y a 5 ans

Merci.