Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2011, 10h41   #1
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Par défaut Probléme d'envoie des données d'un formulaire

Bonjour,

J'ai un probléme lors de l'écriture de mes données entrées dans un formulaire dans ma base de donnée. L'érreur a l'air de provenir de ma requete sql que voici :

Code :
$sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass']).'", "'.mysql_escape_string($_POST['email']).'", "'.mysql_escape_string($_POST['nom']).'", "'.mysql_escape_string($_POST['prenom'])).'")';
Le message d'erreur obtenu est le suivant : Column count doesn't match value count at row 1

Merci de votre aide.
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 10h48   #2
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Bonjour,

L'erreur signifie que tu essaye d'insérer un nombre de champs (ici tu en insère 5) différents du nombre de champs dans la table.

Tu dois donc spécifié les champs que tu souhaites remplir, voir la documentation MySQL.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 10h57   #3
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Hum pourtant ma table est correctement construite. Je regarde tout ça. Merci de ta reponse.
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h02   #4
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par iMano38 Voir le message
Hum pourtant ma table est correctement construite. Je regarde tout ça. Merci de ta reponse.
Je n'ai pas dit qu'elle était mal construite. Montre moi la structure de ta table .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 14h55   #5
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Le probléme est venu depuis que j'ai rajouter les champs nom prenom et email.





Uploaded with ImageShack.us
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h25   #6
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Modifie ta requête comme ceci :

Code :
1
2
3
4
5
6
$sql = 'INSERT INTO membre (login, pass_md5,email,nom,prenom)
VALUES("'.mysql_escape_string($_POST['login']).'",
 "'.mysql_escape_string(md5($_POST['pass']).'",
 "'.mysql_escape_string($_POST['email']).'",
 "'.mysql_escape_string($_POST['nom']).'",
 "'.mysql_escape_string($_POST['prenom'])).'")';
Tu lui dis quels champs tu veux remplir, et tu mets les valeurs correspondantes.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h40   #7
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Merci mais j'ai toujours la même erreur. La voici :

Citation:
Erreur SQL !INSERT INTO membre (login, pass_md5,email,nom,prenom) VALUES("test", "098f6bcd4621d373cade4e832627b4f6\",\n \"test@test.com\",\n \"test\",\n \"test")
Column count doesn't match value count at row 1
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h45   #8
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Han oui forcement, tu as des "\" devant certaines doubles quotes, du coup elles sont ignorées. Il ne faut pas que tu insère les "\" et "\n" dans ta table.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h47   #9
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
C'est ce que je pensais mais je vois pas d'ou ils viennent
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 15h56   #10
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Ils viennent de mysql_escape_string : doc.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/05/2011, 16h09   #11
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Merci mais comment les retirer ?
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 16h12   #12
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par iMano38 Voir le message
Merci mais comment les retirer ?
Pourquoi utilises-tu cette fonction ? Essaye sans, ça devrait marcher tout autant.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/05/2011, 17h16   #13
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Oui c'est ce que j'ai fait et ça marche. Mais bon je ne comprend pas pourquoi il me rajoutais des / et /n sachant que dans les deux premiéres variables il ne me les rajoutaient pas.
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 07h54   #14
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
C'est vrai qu'il est bizarre que la fonction ne rajouter pas ces caractères pour les deux premières chaines, si quelqu'un sait pourquoi, ça m’intéresse.

La solution d'enlever la fonction n'en est pas vraiment une, l'idéal serait de comprendre pourquoi elle rajoute les slash devant certains caractères et pas d'autres.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 14h54   #15
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
La fonction n'y est pour rien, le problème vient du fait qu'il manque une parenthèse pour fermer le 2e mysql_escape_string. Du coup, on imbrique les mysql_escape suivants dans le 1er...
Code :
1
2
3
4
5
6
$sql = 'INSERT INTO membre (login, pass_md5,email,nom,prenom)
VALUES("'.mysql_escape_string($_POST['login']).'",
 "'.mysql_escape_string(md5($_POST['pass'])).'",
 "'.mysql_escape_string($_POST['email']).'",
 "'.mysql_escape_string($_POST['nom']).'",
 "'.mysql_escape_string($_POST['prenom']).'")';
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 24/05/2011, 15h05   #16
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : mai 2011
Messages : 2
Points : 3
Points : 3
J'ajoute qu'il n'est pas la peine d'échapper un hash md5 puisqu'il n'y a rien à y échapper.
Aussi, j'ai remarqué que vous utilisez mysql_escape_string, or cette fonction est dépréciée et il est désormais préférable d'utiliser mysql_real_escape_string à sa place
Scroph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 15h22   #17
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par Celira Voir le message
La fonction n'y est pour rien, le problème vient du fait qu'il manque une parenthèse pour fermer le 2e mysql_escape_string. Du coup, on imbrique les mysql_escape suivants dans le 1er...
Code :
1
2
3
4
5
6
$sql = 'INSERT INTO membre (login, pass_md5,email,nom,prenom)
VALUES("'.mysql_escape_string($_POST['login']).'",
 "'.mysql_escape_string(md5($_POST['pass'])).'",
 "'.mysql_escape_string($_POST['email']).'",
 "'.mysql_escape_string($_POST['nom']).'",
 "'.mysql_escape_string($_POST['prenom']).'")';
Bien vu , j'avais même pas penser à vérifier cela .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h22   #18
Invité de passage
 
Inscription : mai 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 8
Points : 0
Points : 0
Citation:
Envoyé par Celira Voir le message
La fonction n'y est pour rien, le problème vient du fait qu'il manque une parenthèse pour fermer le 2e mysql_escape_string. Du coup, on imbrique les mysql_escape suivants dans le 1er...
Code :
1
2
3
4
5
6
$sql = 'INSERT INTO membre (login, pass_md5,email,nom,prenom)
VALUES("'.mysql_escape_string($_POST['login']).'",
 "'.mysql_escape_string(md5($_POST['pass'])).'",
 "'.mysql_escape_string($_POST['email']).'",
 "'.mysql_escape_string($_POST['nom']).'",
 "'.mysql_escape_string($_POST['prenom']).'")';

Merci

C'est noté Scroph
iMano38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h27   #19
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Un petit ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h04.


 
 
 
 
Partenaires

Hébergement Web