IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Probléme d'envoie des données d'un formulaire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.

  2. #2
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    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.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Hum pourtant ma table est correctement construite. Je regarde tout ça. Merci de ta reponse.

  4. #4
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    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 .

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Le probléme est venu depuis que j'ai rajouter les champs nom prenom et email.





    Uploaded with ImageShack.us

  6. #6
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Modifie ta requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci mais j'ai toujours la même erreur. La voici :

    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

  8. #8
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    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.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    C'est ce que je pensais mais je vois pas d'ou ils viennent

  10. #10
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Ils viennent de mysql_escape_string : doc.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci mais comment les retirer ?

  12. #12
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par iMano38 Voir le message
    Merci mais comment les retirer ?
    Pourquoi utilises-tu cette fonction ? Essaye sans, ça devrait marcher tout autant.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    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.

  14. #14
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    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.

  15. #15
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    Par défaut
    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

  17. #17
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 .

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  19. #19
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2011, 13h22
  2. [MySQL] Envoi des données d'un formulaire avec une check box ?
    Par kenjiendo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/08/2011, 12h32
  3. Réponses: 19
    Dernier message: 16/01/2008, 17h41
  4. Réponses: 1
    Dernier message: 01/10/2007, 16h43
  5. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo