Vous n'êtes pas identifié(e).
Bonjour à tous,
Le problème : faire plusieurs "insert" de valeurs envoyées par un input checkbox, les variables sont bien récupérées mais l'insert ne s'effectue pas.
Mon code simplifié pour que cela soit plus lisible
Formulaire
<p><input type="checkbox" name="choix[]" value="' . $data[id_activite] . '" />' . $data[activite] .'</p>';
Traitement des données
foreach($_POST['choix'] as $val)
{
"INSERT INTO essai ('id,variable') VALUES ('','$val')";
}
Le message d'erreur qui s'affiche
Erreur SQL !
Query was empty
Avec les tests ci-dessous, voila ce qu'il répond
echo $val,'<br />'; (les valeurs s'affichent)
var_dump($val); la réponse est
1 string(1) "1"
7 string(1) "7"
6 string(1) "6"
Merci de votre aide
Dernière modification par huret (07-12-2012 08:51:35)
Hors ligne
Saluton,
Tout d'abord si la colonne id de la table essai est en autoincrement tu devrais plutôt faire la requête suivante
Ensuite, d'aucuns te diront que ton code est laxiste en termes de veille contre les injections.
Personnellement j'ajouterais, il serait temps de te mettre à PDO.
Amike.
MoKo.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Juste une autre petite remarque, en passant :
Quand, dans la boucle de ton code les requêtes sont-elles soumises au SGBDR ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci de ta réponse mais j'ai toujours le même problème.
J'ai créer une table essai pour tester si tout fonctionnait bien avant d'intégrer cela au code définitif.
a) est ce que je récupère les variables oui
b) est ce que l'insertion des x enregistrements ce fait dans la table et c'est la que j'obtiens querry was empty ?
Il y a 3 tables, une table membre, une table activite et une table lien_membre_activite avec une clef double pour la table lien_membre_activite (id_membre,id_activite) puisque la relation membre activite est n<-->n.
Pour la soumission je ne comprends pas bien, est ce le fait que dans le process
je verifie si la clef id_membre, id_activite existe,
si oui echo le membre est deja inscrit a cet activite
else insert. ? j'ai verifie que le if fonctionne
Ci dessous la table lien
CREATE TABLE IF NOT EXISTS `essai` (
`id_activite` bigint(20) unsigned NOT NULL,
`id_membre` bigint(20) unsigned NOT NULL,
UNIQUE KEY `id_activite` (`id_activite`,`id_membre`)
)
La requete
include("../connect_db.php");
foreach($_POST['choix'] as $val)
{
echo 'id_membre = '.$id_membre.' id_activite = '.$val.'<br>';
$res="INSERT INTO essai ('id_membre,id_activite') VALUES ('$id_membre','$val')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
mysql_close();
Réponse a l'envoi de la requête
id_membre=1 id_activite=7
Erreur SQL !
Query was empty
Pour la securite ".$valeur." pour les valeurs des variables dans les requetes sql avec une fonction qui verifie chaque valeur a l'enregistrement avec une verif sur HTTP_REFERER et sur un cookie avec passe crypte, il y a sans doute mieux a faire, mais bon, il s'agit de sites faits bénévolement (bien que se ne soit pas une raison) pour des associations locales avec des données non confidentielles mis à par des adresses mail.
Merci de ta mise en garde et je vais regarder PDO
Hors ligne
$res="INSERT INTO essai ('id_membre,id_activite') VALUES ('$id_membre','$val')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
Tu soumets $sql alors que la requête est dans $res
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Oups !
Merci et excuses moi du dérangement, je vais tenter de revoir mes neurones.
Hors ligne
ya pas que çà
>>$res="INSERT INTO essai ('id_membre,id_activite') VALUES ('$id_membre','$val')";
c'est pas bon -> ('id_membre,id_activite')
faut enlever les côtes de porc
a++
Hors ligne
Merci à tous, maintenant cela fonctionne
Hors ligne