PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 07-12-2012 05:12:08

huret
Membre
Inscription : 07-12-2012
Messages : 4

Querry is empty sur insert multiple en provenance de checkbox

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"
roll
Merci de votre aide

Dernière modification par huret (07-12-2012 08:51:35)

Hors ligne

#2 07-12-2012 09:42:09

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Querry is empty sur insert multiple en provenance de checkbox

Saluton,
Tout d'abord si la colonne id de la table essai est en autoincrement tu devrais plutôt faire la requête suivante

foreach($_POST['choix'] as $val)
{
"INSERT INTO essai ('variable') VALUES ('$val')";  
}

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

#3 07-12-2012 14:02:10

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Querry is empty sur insert multiple en provenance de checkbox

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

#4 07-12-2012 18:11:41

huret
Membre
Inscription : 07-12-2012
Messages : 4

Re : Querry is empty sur insert multiple en provenance de checkbox

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

#5 07-12-2012 18:43:02

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Querry is empty sur insert multiple en provenance de checkbox

huret a écrit :

        $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

#6 07-12-2012 19:46:40

huret
Membre
Inscription : 07-12-2012
Messages : 4

Re : Querry is empty sur insert multiple en provenance de checkbox

Oups !

Merci et excuses moi du dérangement, je vais tenter de revoir mes neurones.
neutral

Hors ligne

#7 07-12-2012 20:54:17

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Querry is empty sur insert multiple en provenance de checkbox

ya pas que çà roll

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

a++

Hors ligne

#8 08-12-2012 06:11:04

huret
Membre
Inscription : 07-12-2012
Messages : 4

Re : Querry is empty sur insert multiple en provenance de checkbox

Merci à tous, maintenant cela fonctionne
wink

Hors ligne

Pied de page des forums