Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1708 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Récuperer des selections en checkbox avec une requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récuperer des selections en checkbox avec une requete SQL

n°1365873
tibere
Posté le 14-05-2006 à 13:13:54  profilanswer
 

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.

mood
Publicité
Posté le 14-05-2006 à 13:13:54  profilanswer
 

n°1365879
Sve@r
Posté le 14-05-2006 à 13:42:26  profilanswer
 

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>
  <tr><td class=\"vide\" colspan=\"3\"></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);
}


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1365887
tibere
Posté le 14-05-2006 à 14:37:31  profilanswer
 

Je vais essayer ca merci beaucoup :)
 
Bon j'ai essayer ca marche niquel :)
Merci beaucoup pour la rapidité de reponse


Message édité par tibere le 14-05-2006 à 15:31:22
n°1365905
tibere
Posté le 14-05-2006 à 15:56:30  profilanswer
 

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 :)

n°1366026
Sve@r
Posté le 14-05-2006 à 21:10:32  profilanswer
 

tibere a écrit :

$requete= "delete * from mp where destinataire='$_SESSION[login]";


 
3 erreurs

  • C'est "delete from" et non "delete * from"
  • C'est $_SESSION["login"] et non $_SESSION[login]
  • on concatène des chaînes avec "." =>

$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 :


$sql=mysql_query($requete) or die ('Erreur SQL !'.sql.'<br>'.mysql_error());
Notice: Use of undefined constant sql - assumed 'sql' in c:\program files\easyphp1-8\www\suprmp.php on line 28
Erreur SQL !sql


C'est quoi ce ".sql." ??? entre le "Erreur" et le "<br>" ???


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1366097
tibere
Posté le 14-05-2006 à 23:14:20  profilanswer
 

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.

Message cité 1 fois
Message édité par tibere le 14-05-2006 à 23:25:34
n°1366228
Sve@r
Posté le 15-05-2006 à 10:37:31  profilanswer
 

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"

  • Soit tu veux y mettre une variable => "chaine1".$sql."chaine2"
  • Soit tu veux y mettre une fonction => "chaine1".sql()."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  

  • delete from machin where truc = chose;

puis

  • select * from machin;

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...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1367418
tibere
Posté le 16-05-2006 à 13:09:24  profilanswer
 

J'ai trouver la ligne de code :p
 
$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 :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Récuperer des selections en checkbox avec une requete SQL

 

Sujets relatifs
[php/Mysql] Probleme requete selectmacro excel pour récupérer cellules
[JSP/DB2] Problème avec une requête d'insertion - RésoluAsp, Vb et Access, Problème requête! A l'aide
Pb requête accessproblème de requete
[Résolu] Passer une variable dans une requete SQLrequete mysql :s [résolu]
Plus de sujets relatifs à : Récuperer des selections en checkbox avec une requete SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR