utiliser Case à cochée pour modifier la BDD

Petit nouveau ! | 6 Messages

05 nov. 2006, 17:05

j'ai une liste de message ou j'ai mis a côter de chaqu'un d'entre eux une case a coché et un bouton supprimer a la fin de cette liste;

-lorseque je coche les message que je veut supprimer de la base de données; et que je valide ensuite avec le bouton supprimer

je voudrai que les messages sélectionner se supprime de la BDD;

et je ne sais pas comment faire...... :(
Deja que je ne connais même pas les propriétés des case a coché et a quoi il servent .... :oops:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

06 nov. 2006, 13:22

Par la case à cocher tu peux passer une variable. Dans ton cas l'ID du message en question est idéal.

Ensuite dans ta requête, tu récupères cet ID et tu supprimes en fonction ;)

Mais là du coup ça devient du PHP !

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2006, 18:26

voici un fragment de code

 while($reponse=mysql_fetch_array($message))
        {
        $titre=$reponse['titre_nw'];
        $corp=$reponse['corp_nw'];
        $date=$reponse['date_nw'];
      
echo"sujet:".$corp;echo"<input type='checkbox' name='spprimer'>";

       {
comme tu vois la j'ai utiliser une boucle qui affiche tt les message se trouvant dans la base j fait de tels sorte que les case a coché soit générer automatiquement autant de fois qui a de message.

le probleme c'est comment je peu récuperer l'ID que du message que j'aurai coché, et puis aussi dans le cas ou j'aurai coché plusieurs.. :?

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

07 nov. 2006, 12:39

Tout d'abord, il te faut donner une valeur à tes cases de manière à pouvoir les distinguer et surtout à savoir lesquelles ont été cohées. L'idéal serait pour cela d'utiliser un identifiant unique, tant qu'à faire celui de ta base de données. Il te faut donc dans un premier temps le récupérer via ta requête et l'utiliser dans ta case :)
echo '<input ... value="'.$id.'">';
Il te suffit alors de récuperer ensuite $_POST['nomDeLaCase'] pour connaitre l'identifiant, sachant que si la case n'est pas cochée, $_POST['nomDeLaCase'] n'est pas défini.

Le problème c'est que si jamais tu as plusieurs cases avec le même nom qui sont cochées, les valeurs vont s'écraser et tu n'auras que la dernière, et si tu donnes un nom différent à chaque case, tu vas te galérer pour savoir lesquelles sont définies (et donc cochées) ou pas.

La solution se trouve dans les crochets : si tu donne le même nom à tes cases et que tu y ajoutes des [] cela va générer un tableau et les valeurs ne s'écraseront plus

Code : Tout sélectionner

<input name="maCase[]" ... value="1"> <input name="maCase[]" ... value="2"> ...
$_POST['nomDeLaCaseSansLesCrochets'] devient alors un tableau contenant les id des cases cochées. Il ne te reste plus alors qu'à parcourir ce tableau à l'aide d'une boucle pour y trouver les id cochés :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...