Rebonjour, j'ai un problème de syntaxe pour la suppression d'un des enregistrements que je n'arrive pas à résoudre alors que j'ai utilisé à priori la même syntaxe que pour la modification.
J'ai su afficher dans une nouvelle colonne de ma table un bouton supprimer en passant l'id à supprimer (pour l'instant je laisse affiché les identifiants pour être sûr que je ne me trompe pas).
Tout se passe correctement jusqu'au formulaire de suppression où rien ne se passait alors qu'il me mettait que l'enregistrement était modifié avec succès.
J'ai donc mis un ERRMODE dans ma connexion à la base et là il me ressort l'erreur suivante:
L'enregistrement que je veux supprimer est bien le 7 (dans l'exemple pris)Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = '7'' at line 1' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test\formsupp.php:21 Stack trace: #0 C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test\formsupp.php(21): PDOStatement->execute(Array) #1 {main} thrown in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test\formsupp.php on line 21
Voici mes codes.
recherche_ing.php
ingasupprimer.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 <?php $id=$_POST['Id_ing']; try { $bdr= new PDO('mysql:host=localhost;dbname=recettes;charset=utf8', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $requete = $bdr->prepare('SELECT * from ingredients where lib_ing LIKE ?'); $requete->execute(array("$id%")); $nbresult = $requete->rowcount(); echo '<br>'; if ($nbresult == 0) { echo "ingrédient non trouvé. Voulez-vous rajouter cet ingrédient à la liste?"; ?> <form name = "ajout_ing" method= "post" action= "ajout_ing.php"> <input type = "submit" value = "Oui" name ="valid"/> </form> <form name = "retour" method= "post" action= "index.php"> <input type = "submit" value = "Non" /> <?php } else { while($donnees = $requete->fetch(PDO::FETCH_OBJ)) { ?> <table border = 1> <th> identifiant </th> <th> nom de l'ingrédient </th> <tr> <td> <?php echo $donnees->id;?> </td> <td> <?php echo $donnees->lib_ing; ?> </td> <td> <form action="ingaafficher.php" method="post"> <input type="text" name="id_ing" value="<?php echo $donnees->id; ?>" /> <button type="submit" name="btn_modifier_form" title="Modifier">Modifier</button> </form> </td> <td> <form action = "ingasupprimer.php" method="post"> <input type="text" name="id_supping" value="<?php echo $donnees->id; ?>" /> <button type = "submit" name = "btn_supprimer_form" title = "Supprimer">Supprimer</button> </form> </td> </tr> </table> <?php } } ?>
formsupp.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php echo $_POST['id_supping']; echo "<br>"; echo "Voulez vous supprimer cet ingrédient?"; ?> <form action = "formsupp.php" method = "post" > <input type = "text" name = "id_supping" value = "<?php echo $_POST['id_supping'];?>"> <button type = "submit" name = "btn_supp_valider"> Oui </button> </input> </form> <form action = "index.php" method= "post" > <button type = "submit" name = "btn_supp_annuler"> Non </button> </form>
Pour information j'ai fait des echo et des champs type text et non pas hidden à chaque étape pour être sûr de récupérer la bonne valeur. Ces lignes disparaîtront ou modifiées en hidden une fois que je serai sûr de mon code et que çà fonctionnera.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <?php $ing_modid=$_POST['id_supping']; echo "<br>"; try { $bdr= new PDO('mysql:host=localhost;dbname=recettes;charset=utf8', 'root', ''); $bdr->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } // ------------- // TRAITER le formulaire de Modification if( isset($_POST['btn_supp_valider']) ) { // ICI, on fait la requête DELETE $sql_delete = "DELETE ingredients WHERE id = ?"; $res_delete = $bdr->prepare($sql_delete); $res_delete->execute([$_POST['id_supping']]); echo 'ingrédient ' .$ing_modid . ' supprimé avec succès' ; } ?> <form action = "index.php" method="post" > <input type= "submit" name = "retour" value = "retour à la page principale"; /> </form>
Merci de votre compréhension et de vos réponses.
Cordialement,
Christophe.
Partager