[RESOLU] Formulaire de suppresion en php

Eléphanteau du PHP | 12 Messages

19 avr. 2016, 08:06

Bonjour, suite de mes aventures, je souhaite aujourd'hui réaliser un formulaire de suppression, en php (ce n'est pas mon choix, je dois le faire comme ca)

Voici ma première partie sur une première page

Code : Tout sélectionner

<?php /*<!--connexion à la base de donnée-->*/ $link = mysqli_connect("127.0.0.1","root","","h15478"); /*<!-- test de la connexion à la base de donnée -->*/ if ($link != FALSE) { } else { die("Impossible de se connecter : ".mysqli_error()); } echo "</br>"; /*<!-- création de la requete d'affichage -->*/ $requete1 = "SELECT annonces.titre AS Titre, annonces.texte AS Objet, annonces.dates AS Dates, annonces.visible AS Visible FROM annonces INNER JOIN categories ON annonces.IDcategorie=categories.IDcategorie ORDER BY annonces.dates DESC, annonces.titre ASC"; /*<!-- test de la requete -->*/ $result = mysqli_query($link,$requete1) or die(mysqli_error($link)); /*<!-- création de la requete de selection du numero d'identifiant -->*/ /*<!-- création du tableau-->*/ if ( mysqli_num_rows($result) != 0) { /* <!-- creation de l'en-tete du tableau --> */ echo"<form action='supprimer_annonces.php' method='POST'>"; echo "<table border=2px><tr>"; echo "<th>Titre</th>"; echo "<th>Objet</th>"; echo "<th>Date d'ajout</th>"; echo "<th>Visible</th>"; echo "<th>Supprimer</th>"; echo "</tr>"; while ($row = mysqli_fetch_assoc($result)) { /*<!-- création de la requete de selection du numero d'identifiant -->*/ $requete2 = "SELECT IDannonce FROM annonces"; echo "<tr>"; echo "<td>" . $row["Titre"] . "</td>"; echo "<td>" . $row["Objet"] . "</td>"; echo "<td>" . $row["Dates"] . "</td>"; echo "<td>" . $row["Visible"] . "</td>"; echo "<td>"; echo "<input type=checkbox name='ID[]' value='$requete2'>"; echo "</td>"; echo "</tr>"; } echo "</table>"; echo"<center><input type='submit' name='Supp' value='Valider la suppression'></center>"; echo"</form>"; } else { echo "La requête ne renvoie pas de résultat !"; } ?>

Le problème sur cette partie semble venir de l'ajout de la checkbox puis que le click sur le bouton "Valider la suppression" me renvoit $requete2 et non le résultat de $requete2

Code : Tout sélectionner

<?php if(isset($_POST['ID']) != FALSE){ foreach($_POST['ID'] as $IDchoisie); } else{ echo"<p>Pas de sélection</p>"; die; } echo $IDchoisie; $link = mysqli_connect("127.0.0.1","root","","h15478"); /* test de la connexion à la base de donnée */ if ($link != FALSE) { echo "Connexion r&eacute;ussie"; } else { die("Impossible de se connecter : ".mysqli_error()); } echo "</br>"; /* création de la requete */ $requete = "DELETE FROM annonces WHERE IDannonce='$IDchoisie'"; /* test de la requete */ $result = mysqli_query($link,$requete) or die(mysqli_error($link)); ?>
Dans cette deuxième partie, je ne suis pas sur du codage de mon foreach, si vous pouviez me dire si vous la trouvez correcte j'apprécierais beaucoup.

Merci d'avance aux lecteurs et aux aides

Cordialement

Mammouth du PHP | 1967 Messages

19 avr. 2016, 08:34

essaie comme sur les lignes précédentes
echo "<input type=checkbox name='ID[]' value='".$requete2."'>";
Pour ton foreach, il ne sert à rien sans instruction à l'intérieur.
Il te faut ouvrir une accolade et utiliser $IDchoisie
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 12 Messages

19 avr. 2016, 08:56

Merci Spols, je viens d'essayer mais je n'ai aucune différence avec ce que j'avais fais avant

Je joins la capture du résultat
http://www.cjoint.com/c/FDtg3GI6brC

Eléphanteau du PHP | 12 Messages

24 avr. 2016, 12:42

Bonjour,

Personne n'a d'idée sur ce qui pourrait poser problème maintenant que la modification de Spols à été ajoutée et que le résultat est celui de mon message précédent?

Mammouth du PHP | 2703 Messages

24 avr. 2016, 14:28

$requete2 = "SELECT IDannonce FROM annonces";
echo "<input type=checkbox name='ID[]' value='$requete2'>";

dans le script de suppression, tu reçois donc comme valeur : SELECT IDannonce FROM annonces
la suppression va marcher si la table annonces a un champ qui a comme IDannonce : "SELECT IDannonce FROM annonces". si ce n'est pas le cas, alors pas de suppression.

Eléphanteau du PHP | 12 Messages

25 avr. 2016, 14:53

Merci or 1,

Comment dans ce cas, effectuer la requète, car au final ce que je voudrais c'est avoir comme valeur pour chaque checkbox, le résultat de la requète2.
J'ai essayé comme spols proposait

Code : Tout sélectionner

echo "<input type=checkbox name='ID[]' value='".$requete2."'>";

mais l'action effectuée me renvoit quand même SELECT IDannonce FROM annonces, et après vérification dans la base de donnée, la ligne n'a toujours pas été supprimée.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2016, 17:13

Bonjour,

Ta variable $requete2 contient une chaîne de caractère correspondant à une requête SQL. Il te faudrait exécuter cette requête et en récupérer le résultat, mais en l'état, ça ne correspondra à rien...

Si tu veux l'id de l'annonce à supprimer, il te suffit de rajouter annonces.IDannonce dans le SELECT de ta requête 1, et d'aller lire le contenu de $row["IDannonce"] pour l'inclure dans ton formulaire, comme tu le fais pour les autres valeurs :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 12 Messages

25 avr. 2016, 19:43

Merci beaucoup Ryle, ça fonctionne parfaitement (bon je suppose que tu t'en doutais mais quand même ;-))

C'est vrai que c'était la solution logique, j'aurai du y penser tout seul lol