Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'inscription a la base de donnée

    7 juin 2007 à 16:34:33

    Bonjour tout le monde ,

    J'ai un soucis lors d'une inscription a la base de donnée pour s'inscire sur mon site , le problème est celui ci :

    Column count doesn't match value count at row 1


    Je n'arrive pas a comprendre l'erreur , j'ai trouvé ceci http://www.vulgarisation-informatique.com/faq-98--column-count-doesnt-match-value-at-row-1.php , mais j'ai toujours pas réussi a corriger mon problème .

    Voici les codes :

            //--------------------------------------------------------------------------------------------
            // Inscription dans la base de donnée
            //--------------------------------------------------------------------------------------------
            function Inscrire() {
                   
                    $sql = "INSERT INTO ".$this->SQLBaseUser." VALUES(''";
                    foreach($_POST as $cle=>$valeur)
                    {
                            if($cle != "FormInscription") {
                                    if($cle == "Password") $sql .= ",'".md5($valeur)."'";
                                    else $sql .= ",'".$valeur."'";
                            }
                    }
                    $sql .= "'0')";
                    $req = mysql_query($sql) or die(mysql_error());
                    CreateSoldeCompte(mysql_insert_id());
                    if($req) Alert("Votre inscription est effectué.");
                    else Alert("L\'inscription à échoué.");
                   
            }
         


    Et la base de donnée :
    --
    -- Structure de la table `ps_user`
    --

    DROP TABLE IF EXISTS `ps_user`;
    CREATE TABLE IF NOT EXISTS `ps_user` (
      `ID` int(10) NOT NULL AUTO_INCREMENT,
      `Nom` varchar(50) NOT NULL,
      `Prenom` varchar(50) NOT NULL,
      `Adresse` varchar(70) NOT NULL,
      `Ville` varchar(70) NOT NULL,
      `CodePostal` int(5) NOT NULL,
      `Pays` varchar(30) NOT NULL,
      `Mail` varchar(50) NOT NULL,
      `Login` varchar(30) NOT NULL,
      `Password` varchar(50) NOT NULL,
      `Admin` tinyint(1) NOT NULL DEFAULT '0',
      PRIMARY KEY  (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1


    En vous espérant qu'on va pouvoir m'aider ^^.
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2007 à 16:37:49

      Salut tu as du oublier un champ compte le nombre d'élément dans ta base et dansta requete oublie pas id si tu en a un ^^
      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2007 à 16:42:11

        J'ai cherché mais je ne comprend pas , je ne vois pas d'erreur .
        • Partager sur Facebook
        • Partager sur Twitter
          7 juin 2007 à 16:54:31

          Toujours utiliser
          INSERT INTO TABLE(champ1,champ2,champ3) VALUES(v1, v2, v3)
          , et jamais
          INSERT INTO TABLE VALUES (v1,v2,v3)


          Tu gagnes 3 mots sur la 2ème version, mais ça rend tes requêtes très fragiles : si tu modifies la table, toutes les requêtes utilisant cette syntaxe planteront, et tu devras les modifier une par une. Alors qu'avec la première syntaxe, ça ne plantera pas (Sauf si tu *supprimes* des champs, ou que t'en renommes, ce qui est normalement plus rare que d'en ajouter).
          • Partager sur Facebook
          • Partager sur Twitter
            7 juin 2007 à 17:24:00

            Ok mais sa ne fonctionne toujours pas mais j'ai une erreur différente , j'ai essayé ceci :

            //--------------------------------------------------------------------------------------------
                    // Inscription dans la base de donnée
                    //--------------------------------------------------------------------------------------------
                    FUNCTION Inscrire() {
                           
                            $sql = "INSERT INTO ".$this->SQLBaseUser."(ID,Nom,Prenom,Adresse,Ville,CodePostal,Pays,Mail,Login,Password,Admin) VALUES('', '', '', '', '','' , '', '', '', '', 1)";
                            foreach($_POST AS $cle=>$valeur)
                            {
                                    IF($cle != "FormInscription") {
                                            IF($cle == "Password") $sql .= ",'".md5($valeur)."'";
                                            else $sql .= ",'".$valeur."'";
                                    }
                            }
                            $sql .= "'0')";
                            $req = mysql_query($sql) OR die(mysql_error());
                            CreateSoldeCompte(mysql_insert_id());
                            IF($req) Alert("Votre inscription est effectué.");
                            else Alert("L\'inscription à échoué.");
                           
                    }



            Et j'ai l'erreur suivante :
            You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''','','','','','','','','d41d8cd98f00b204e9800998ecf8427e''0')' at line 1

            Désolé je vous embetez avec ca ^^ mais j'ai du mal ^^
            • Partager sur Facebook
            • Partager sur Twitter
              7 juin 2007 à 17:30:58

              Elle est bizarrement conçue ta requête.

              fais un echo $sql juste avant d'exécuter la requête. Il manque une virgule entre la valeur du mot de passe et la valeur "admin".
              • Partager sur Facebook
              • Partager sur Twitter
                7 juin 2007 à 17:42:20

                Enfaite je n'ai pas réaliser ce script , c'est un codeur qui me la réalisé le site mais il y a un soucis avec le systeme d'inscription mais il n'a pas vraiment envie de se bouger donc j'essaye de résoudre le problème moi même mais je ne m'y connais pas très bien .

                Et ca ne fonctionne toujours pas , tu n'aurais pas une autre idée , désolé de t'embéter mais sans se système d'inscription impossible de mettre mon site en ligne .


                Enfin si quelqu'un pourrait me contacter par msn a xav07@hotmail.com et me corriger ca , je le paierai 10 euro via paypal pour celui qui pourra résoudre le problème .
                • Partager sur Facebook
                • Partager sur Twitter

                Problème d'inscription a la base de donnée

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown