Page 1 sur 1

[PHP] - Supression de données via ComboBox

Posté : 26 août 2015, 13:19
par Arkhall
Hello, voici mon code.
$reponseA = $db->query("SELECT EQU_ID, EQU_NOM FROM equipes");
?>

<form method="POST">
    <select name="equipes" id="equipes">

        <?php
        while($data = $reponseA->fetch()){
            echo "<option value=" . $data['EQU_ID'] . "'>". $data['EQU_NOM']."</option>";
        }
        ?>
    </select>
        <?php
        if(isset($_POST['submit'])) {
            //Préparation de la requête lorsqu'on permet à une valeur d'être entrée via PHP, donc l'insertion d'une variable.
            //Au moment de la préparation, j'ai mis un marqueur "?" au niveau du WHERE. PDO me dira qu'il attend un paramètre.
            $reponseB = $db->prepare("SELECT JOU_ID, JOU_PSEUDO FROM joueur LEFT JOIN integre ON JOU_ID = INT_JOU_ID LEFT JOIN equipes ON EQU_ID = INT_EQU_ID WHERE EQU_ID = ?");
            $reponseB->execute(array($_POST['equipes']));
    if (!empty($_POST['equipes'])) {
        echo "<select name=\"joueur\">";
        while ($data = $reponseB->fetch()) {
            echo "<option value = " . $data['JOU_ID'] . ">" . $data['JOU_PSEUDO'] . "</option>";
         }
    }
}
        ?>
    </select>
    <input type="submit" name="submit" value="Rechercher les joueurs">
    <input type="submit" name="delete" value="Supprimer">

    <?php //Supression du joueur.
    if(isset($_POST['delete']) && isset($_POST['joueur'])) {
        $reponseC = $db->prepare("DELETE FROM joueur LEFT JOIN integre ON JOU_ID = INT_JOU_ID WHERE JOU_ID :=idJoueur");
        $reponseC->bindValue('idJoueur',$_POST['joueur'],PDO::PARAM_INT); //Permet d'associer une valeur à un paramètre.,
        if (!$reponseC->execute()); { //Si la suppression ne s'exécute pas, l'erreur suivante s'affiche.
           echo 'ERREUR SUPPRESSION JOUEUR ID '.$_POST['joueur'];
         }
    }
?>

Le principe est le suivant, je sélectionne une équipe $reponseA qui va me les sortir dans une première comboBox. Après avoir cliqué sur le boutton "Rechercher les joueurs", il me recherche les joueurs de l'équipe que j'ai sélectionné grâce à une autre requête dont la variable s'appelle $réponseB. Jusque là tout va bien.

Problème :

La variable $réponseC qui est censé supprimer le joueur que j'ai envie de sélectionner dans la comboBox ne marche pas et me sort un Uncaught Exception et je sais jamais comment les interpréter. Apparemment c'est dans la ligne où il y a le !execute affichant le message d'erreur d'où vient le problème.

Re: [PHP] - Supression de données via ComboBox

Posté : 26 août 2015, 14:18
par Elie
:=idJoueu ...

=:idJoueu better ...

Re: [PHP] - Supression de données via ComboBox

Posté : 26 août 2015, 14:27
par Arkhall
<input type="submit" name="delete" value="Supprimer">

    <?php //Supression du joueur.
    if(isset($_POST['delete']) && isset($_POST['joueur'])) {
       $reponseC = $db->prepare("DELETE FROM joueur WHERE JOU_ID =:idJoueur");
       $reponseC->bindValue('idJoueur',$_POST['joueur'],PDO::PARAM_INT); //Permet d'associer une valeur à un paramètre.,
        if (!$reponseC->execute()) {
            echo 'ERREUR SUPPRESSION JOUEUR ID '.$_POST['joueur'];
        }
    }
?>
Je pouvais pas faire de jointure avec un DELETE alors j'ai procédé ainsi mais j'ai toujours la même erreur "Uncaught Exception"....
Mais merci en tout cas pour l'erreur de syntaxe :)

Re: [PHP] - Supression de données via ComboBox

Posté : 26 août 2015, 14:33
par Elie
Bah maintenant il faut juste savoir débugger ca ...
Est-ce que $_POST['joueur'] retourne bien un chiffre ?
Est-ce réellement utilse de passe idJoueur via bindValue ...
<?php //Supression du joueur.
    if(isset($_POST['delete']) && isset($_POST['joueur'])) {
       $reponseC = $db->prepare("DELETE FROM joueur WHERE JOU_ID = ?");
        if (!$reponseC->execute(array$_POST['joueur']))) {
            echo 'ERREUR SUPPRESSION JOUEUR ID '.$_POST['joueur'];
        }
    }
?>
Comme d'hab par teamviewer c'est plus facile d'y voir clair :)

Re: [PHP] - Supression de données via ComboBox

Posté : 26 août 2015, 15:40
par Arkhall
On fait comment pour ce "TeamViewer" ? Je suis nouveau ici donc je connais pas ^^