Salut amis codeurs !
J'effectue un petit projet pour un amis. Contraite, il ne veut aucun framework donc je suis partie sur du natif en orienté objet. Cependant, j'ai un petit soucis sur un foreach.

Le code

Ici, le foreach fonctionne parfaitement bien, j'arrive a bien afficher le nom, prénom et le group de l'utilisateur. Mais ce qui est le plus étrange, c'est que sur le code source HTML, j'ai bien les différents ID de tous les users, mais en back-end, je récupére uniquement l'ID du premier.

<?php foreach ($students as $user) { ?>
            <tr>
                <td><?= $user['name'] ?></td>
                <td><?= $user['firstname'] ?></td>
                <td><?= $user['group_user'] ?></td>
                <td>NOTE</td>

                <td>
                    <form id="deleteForm" action="" method="post">
                        <input type="hidden" name="delete" value="<?= $user['id'] ?>"/>
                    </form>
                    <a href="#editEmployeeModal" data-toggle="modal" class="edit"><i class="material-icons" data-toggle="tooltip" title="Editer">&#xE254;</i></a>
                    <a href='#' onclick='document.getElementById("deleteForm").submit()' class="delete"><i class="material-icons" data-toggle="tooltip" title="Supprimer">&#xE872;</i></a>
                </td>
            </tr>
<?php } ?>

Ici, le code en back-end pour débug ce que je reçois depuis le post.

if(!empty($_POST['delete'])) {
        var_dump($_POST['delete']);
        die();
}

J'avoue que je calle un peu :( Merci pour votre aide !

2 réponses


Lartak
Réponse acceptée

Bonsoir.
C'est tout à fait normal, ton problème ne vient ni du PHP, ni du HTML, mais du Javascript, pour rappel, un ID doit être unique, sauf que là tu as plusieurs éléments qui ont comme valeur deleteForm pour l'attribut id.
Par conséquent, le Javascript séléctionne le premier élément qui a comme valeur deleteForm pour l'attribut id.
Soit celui de la première boucle de ton foreach.
Il te faudrait donc par exemple faire :

<?php foreach ($students as $user) { ?>
    <tr>
        <td><?= $user['name'] ?></td>
        <td><?= $user['firstname'] ?></td>
        <td><?= $user['group_user'] ?></td>
        <td>NOTE</td>
        <td>
            <form id="deleteForm-<?= $user['id'] ?>" action="" method="post"><!-- modif. ici -->
                <input type="hidden" name="delete" value="<?= $user['id'] ?>"/>
            </form>
            <a href="#editEmployeeModal" data-toggle="modal" class="edit"><i class="material-icons" data-toggle="tooltip" title="Editer">&#xE254;</i></a>
            <a href='#' onclick='document.getElementById("deleteForm-<?= $user['id'] ?>").submit()' class="delete"><i class="material-icons" data-toggle="tooltip" title="Supprimer">&#xE872;</i></a><!-- et ici aussi -->
        </td>
    </tr>
<?php } ?>
ARATIX
Auteur
Réponse acceptée

Merci pour ta réponse :) Mais je m´en suis rendu compte après avoir posté le msg! Je vais faire autrement ;)