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
Réponse acceptée

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 = []

Merci.