Récuperer des selections en checkbox avec une requete SQL - SQL/NoSQL - Programmation
Marsh Posté le 14-05-2006 à 13:42:26
tibere a écrit : echo"<tr><td class=\"col1\">$auteur</td><td class=\"col2\">$resultat3</td><td class=\"col3\">$date</td><td class=\"col4\"><input type=\"checkbox\" name=\"$id\" value=\"checkbox\"></tr> |
C'est dommage, en mettant "name=$id" tu obtiens une variable impossible à retrouver ensuite. Tu peux pas, dans ton script php, retrouver les valeurs de cette variable car tu ne connais pas son nom (il est lui-même variable)
Il serait plus fin de mettre name="checkbox[]" => ce qui te donne un tableau et value="$id" comme cela tu obtiens l'identifiant dans chaque case du tableau "checkbox"
Ensuite, dans ton script php qui est appelé par ce formulaire et qui récupère donc les valeurs de ses input, tu fais
$tabID=$_POST["checkbox"] si le formulaire est en méthode "post"
$tabID=$_GET["checkbox"] si le formulaire est en méthode "get"
et tu récupères ton tableau dans "$tabID"
Ensuite, avec une simple boucle, tu balayes chaque id qui aura été sélectionnée
foreach ($tabID as $id)
{
$query=sprintf("delete from mp where id=%d", $id);
mysql_query($query);
}
Marsh Posté le 14-05-2006 à 14:37:31
Je vais essayer ca merci beaucoup
Bon j'ai essayer ca marche niquel
Merci beaucoup pour la rapidité de reponse
Marsh Posté le 14-05-2006 à 15:56:30
Une autre question si possible.
J'aimerai maintenant pouvoir supprimer tous les messages privés avec une condition.
A savoir tout supprimer de la table MP la ou le destinataire du mp est l'utilisateur en cours.
La requete suivant ne fonctionne pas :
$requete= "delete * from mp where destinataire='$_SESSION[login]";
$sql=mysql_query($requete) or die ('Erreur SQL !'.sql.'<br>'.mysql_error());
J'ai une erreur et je ne vois pas trop comment faire.
Voila l'ereur :
Notice: Use of undefined constant sql - assumed 'sql' in c:\program files\easyphp1-8\www\suprmp.php on line 28
Erreur SQL !sql
Table inconnue 'id' dans MULTI DELETE
Si quelqu'un peu m'aider merci
Marsh Posté le 14-05-2006 à 21:10:32
tibere a écrit : $requete= "delete * from mp where destinataire='$_SESSION[login]"; |
3 erreurs
$requete= "delete from mp where destinataire='".$_SESSION["login"]."'"
ou bien (ce que je préfère)
$requete=sprintf("delete from mp where destinataire='%s'", $_SESSION["login"]);
tibere a écrit : |
C'est quoi ce ".sql." ??? entre le "Erreur" et le "<br>" ???
Marsh Posté le 14-05-2006 à 23:14:20
Ok pour * je pensais que le delete marchais comme le select.
Il me semble que avec $_SESSION[login] il recupere la valeur stocké non ?
Tu peux m'expliquer ta methode de requete ?
Merci.
Heu pour le .sql. c'est l'explication de l'erreur non ?
Je viens de tester mais rien n'est supprimer.
Marsh Posté le 15-05-2006 à 10:37:31
tibere a écrit : Ok pour * je pensais que le delete marchais comme le select. |
Ben non
tibere a écrit : Il me semble que avec $_SESSION[login] il recupere la valeur stocké non ? |
oui, mais avec des guillemets autour de l'index => $_SESSION["login"]
tibere a écrit : Tu peux m'expliquer ta methode de requete ? |
De quelle méthode parles-tu ???
tibere a écrit : Heu pour le .sql. c'est l'explication de l'erreur non ? |
"chaine1".sql."chaine2" => tu concatènes à "chaine1" un truc nommé "sql" (kekcékça ???) auquel tu concatènes "chaine2"
Personnellement je préfère le sprintf où on arrive à mieux contrôler ce qui est fixe de ce qui est expression
Sinon, la chaîne renvoyant la cause de l'erreur sql est donnée par la fonction "mysql_error()" => conclusion "sql" est totalement inconnu !!!!
tibere a écrit : Je viens de tester mais rien n'est supprimer. |
probablement à cause de [login] au lieu de ["login"]. Sinon essaye à la main
tu tapes "mysql ta_bdd" => tu entres en session sql et là tu tapes
puis
histoire de voir si le delete fonctionne bien
Ensuite, dans ton script php, tu affiches ce fameux $_SESSION["login"] voir s'il a la bonne valeur. Bref, tu essayes un peu de te débrouiller par toi-même à débugger la cause de l'erreur...
Marsh Posté le 16-05-2006 à 13:09:24
J'ai trouver la ligne de code
$requete=" DELETE from mp where destinataire= '$_SESSION[login] ' ";
$_SESSION["login"] dans une requete SQL ne marche pas, une erreur de code est retourner disant qu'une variable de type string est attendu.
Enfin bon mon probleme est resolu merci beaucoup
Marsh Posté le 14-05-2006 à 13:13:54
Bonjour, je suis en train de créer un forum en php et sql et j'ai un probleme.
Je souhaite pouvoir effacer des messages privés en les selectionant avec des checkbox.
Les checkbox sont créés en php. Chaques checkbox recoit pour nom l'id du mesage privé.
"
$requete="select id,auteur,message,date from mp where destinataire='$login' ORDER BY date DESC";
$resultat=mysql_query($requete);
while ($ligne=mysql_fetch_array($resultat))
{
$auteur = $ligne['auteur'];
// $destinataire=$ligne['destinataire'];
$id=$ligne['id'];
$message=$ligne['message'];
$date=$ligne['date'];
$resultat3 = str_replace($smiley, $image, $message);
echo"<tr><td class=\"col1\">$auteur</td><td class=\"col2\">$resultat3</td><td class=\"col3\">$date</td><td class=\"col4\"><input type=\"checkbox\" name=\"$id\" value=\"checkbox\"></tr>
<tr><td class=\"vide\" colspan=\"3\"></tr>";
}
"
je souhaite ensuite créer une requete qui va supprimer de la table MP les messages qui seront cochés.
Comment créer ma requete ?
Merci.