PHP|Débutant :: Forums

Advertisement

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

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

#1 09-02-2011 15:46:16

jpp
Membre
Inscription : 09-02-2011
Messages : 1

Erreur SQL !INSERT INTO

Bonjour,

Cela fait maintenant deux mois que je me suis mis à coder en html & en javascript et j'avoue y trouver mon plaisir mais voilà j'ai vite trouvé des limites c'est pourquoi je débute avec php qui sera bien plus adapté à mes besoins.

J'ai déjà parcouru pas mal de tuto et compris pas mal de chose sur la puissance de ce langage que j'aimerai exploiter.

Je construit donc pour le moment un petit site "test" sur lequel je souhaiterai inclure une zone membre, google étant mon ami aussi j'ai parcouru pas mal de chose et mis en application certain tuto dont un qui m'a parue très simple à comprendre et qui fonctionne très bien.

Seulement lorsque que je modifie le code du fichier inscription.php et son formulaire j'ai une erreur :
Erreur SQL !INSERT INTO membre VALUES("", "test ", "ab4f63f9ac65152575886860dde480a1")
Column count doesn't match value count at row 1

J'ai fait quelques recherches et j'ai pu lire ici et la que cette erreur se produit lorsque vous tentez d'insérer une requête alors que vous n'avez pas spécifié le nombre de champs corrects lors de l'insertion. Si votre table comporte par exemple 4 champs, vous devez spécifier une valeur pour chacun des champs dans la requête...j'ai beau chercher je ne trouve pas ou est l'erreur car j'ai bien spécifié chaque champs dans mon script dont je vous fait copie ci dessous :

<div id="blocgauche">
    <?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
  // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
  if ((isset($_POST['login']) && !empty($_POST['login']))
  && (isset($_POST['pass']) && !empty($_POST['pass']))
  && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))
  && (isset($_POST['nom']) && !empty($_POST['nom']))
  && (isset($_POST['prenom']) && !empty($_POST['prenom']))
  && (isset($_POST['datedenaissance']) && !empty($_POST['datedenaissance']))
  && (isset($_POST['villedenaissance']) && !empty($_POST['villedenaissance']))
  && (isset($_POST['adresse']) && !empty($_POST['adresse']))
  && (isset($_POST['codepostal']) && !empty($_POST['codepostal']))
    && (isset($_POST['ville']) && !empty($_POST['ville']))
  && (isset($_POST['tel']) && !empty($_POST['tel']))
  && (isset($_POST['email']) && !empty($_POST['email']))
  ) {
    // on teste les deux mots de passe
    if ($_POST['pass'] != $_POST['pass_confirm']) {
      $erreur = 'Les 2 mots de passe sont différents.';
    }
    else {
      $base = mysql_connect ('localhost', 'jpp', 'xxxxxxxxxx');
      mysql_select_db ('base_jpp', $base);

      // on recherche si ce login est déjà utilisé par un autre membre
      $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $data = mysql_fetch_array($req);

      if ($data[0] == 0) {
        $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'",
        "'
.mysql_escape_string($_POST['nom']).'",
        "'
.mysql_escape_string($_POST['prenom']).'",
        "'
.mysql_escape_string($_POST['datedenaissance']).'",
        "'
.mysql_escape_string($_POST['villedenaissance']).'",
        "'
.mysql_escape_string($_POST['adresse']).'",
        "'
.mysql_escape_string($_POST['codepostal']).'",
        "'
.mysql_escape_string($_POST['ville']).'",
        "'
.mysql_escape_string($_POST['tel']).'",
        "'
.mysql_escape_string($_POST['email']).'",
        "'
.mysql_escape_string(md5($_POST['pass'])).'")';
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

        session_start();
        $_SESSION['login'] = $_POST['login'];
        header('Location: membre.php');
        exit();
      }
      else {
        $erreur = 'Un membre possède déjà ce login.';
      }
    }
  }
  else {
    $erreur = 'Au moins un des champs est vide.';
  }
}
?>


    <h2><img src="images/icones/inscrition.png" width="48" height="48" align="absmiddle" /> Inscription</h2>
    <p><form action="inscription.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
Nom : <input type="text" name="nom" value="<?php if (isset($_POST['nom'])) echo htmlentities(trim($_POST['nom'])); ?>"><br />
Prénom : <input type="text" name="prenom" value="<?php if (isset($_POST['prenom'])) echo htmlentities(trim($_POST['prenom'])); ?>"><br />
Date de naissance : <input type="text" name="datedenaissance" value="<?php if (isset($_POST['datedenaissance'])) echo htmlentities(trim($_POST['datedenaissance'])); ?>"><br />
Ville de naissance : <input type="text" name="villedenaissance" value="<?php if (isset($_POST['villedenaissance'])) echo htmlentities(trim($_POST['villedenaissance'])); ?>"><br />
Adresse : <input type="text" name="adresse" value="<?php if (isset($_POST['adresse'])) echo htmlentities(trim($_POST['adresse'])); ?>"><br />
Code postal : <input type="text" name="codepostal" value="<?php if (isset($_POST['codepostal'])) echo htmlentities(trim($_POST['codepostal'])); ?>"><br />
Ville : <input type="text" name="ville" value="<?php if (isset($_POST['ville'])) echo htmlentities(trim($_POST['ville'])); ?>"><br />
Téléphone : <input type="text" name="tel" value="<?php if (isset($_POST['tel'])) echo htmlentities(trim($_POST['tel'])); ?>"><br />
E-Mail : <input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"><br /><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>
</p></div>

Ma table "membre" comporte 12 champs : les 11 champs du formulaire + 1 champs id auto incrémenté qui est déclaré comme clé primaire.

Je m'arrache les cheveux depuis ce matin je ne vois pas ou j'ai fait l'erreur si quelqu'un pouvait me venir en aide il ne me reste plus beaucoup de cheveux [confus] merci

Hors ligne

#2 09-02-2011 19:29:23

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

Re : Erreur SQL !INSERT INTO

jpp a écrit :

Seulement lorsque que je modifie le code du fichier inscription.php et son formulaire j'ai une erreur :
Erreur SQL !INSERT INTO membre VALUES("", "test ", "ab4f63f9ac65152575886860dde480a1")
Column count doesn't match value count at row 1

Saluton,
Pour nous permettre de nous faire une idée très précise de l'origine de l'erreur (même si j'ai déjà ma petite idée), peux-tu nous poster le résultat de cette requête

Merci


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 09-02-2011 19:41:21

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

Re : Erreur SQL !INSERT INTO

si tu n'indiques pas le nom des champ dans la requete insert, il faut donner toutes les valeurs.
donc, pour que ta requete soit bonne il faut faire comme suivant :
INSERT INTO membre (nomduchamp1, nomduchamp2,nomduchamp3) VALUES ("", "test ", "ab4f63f9ac65152575886860dde480a1")

a++

Hors ligne

#4 09-02-2011 19:50:11

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

Re : Erreur SQL !INSERT INTO

Sauf si d'autres colonnes (parmi les onze que compte la table) ont reçu la contrainte NOT NULL.
D'où ma demande pour voir la structure complète avec


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

#5 09-02-2011 20:20:14

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

Re : Erreur SQL !INSERT INTO

en cas de NOT NULL, la valeur par DEFAULT sera donnée, si elle a été indiqué.
a++

Hors ligne

#6 09-02-2011 21:15:43

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

Re : Erreur SQL !INSERT INTO

si elle a été indiquée, bref, seule la vision de la structure créée lèverait toutes ces supputations.


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

#7 09-02-2011 21:37:58

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

Re : Erreur SQL !INSERT INTO

ca fait une plombe que j'te l'dis mon pti MK roll
faut suivre !!:rolleyes:

big_smile:D
a++

Hors ligne

Pied de page des forums