Bonjour a tous,
en souhaitant récupérer des valeurs d'un formulaires d'une page afin de les insérer dans ma bdd je tombe sur ce message d'erreur :
Array ( [0] => 21S01 [1] => 1136 [2] => Column count doesn't match value count at row 1 ).
J'ai essayé de lire un peu de doc sur ce genre d'erreur qui semble être dû au fait que les colonnes ne soient pas remplies convenablement.
Mon code : formulaire
Ma page de traitement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 <h1> Ajouter un contact </h1> <form action="traitementajoutcontact.php" method="post"> <p> Les informations suivies d'un symbole * sont a compléter obligatoirement </p> <label for="contact_nom"> Nom : *</label> <!-- Nom du contact --> <input type= "text" name= "contact_nom"> </br> <label for="contact_prenom"> Prenom : * </label> <!-- Prenom du contact --> <input type="text" name="contact_prenom"> </br> <label for="contact_numtel"> Numéro de téléphone fixe : </label> <!-- Numéro du contact --> <input type="text" name="contact_numtel" minlength="9" maxlength="14"> </br> <label for="contact_numtelmobil"> Numéro de téléphone mobile : </label> <!-- Rôle du contact --> <input type="text" name="contact_numtelmobil" minlength="9" maxlength="14"> </br> <label for="contact_email"> Adresse Email : </label> <!-- Email du contact --> <input type="email" name="contact_email"> </br> <label for="contact_adresse"> Adresse : </label> <!-- Adresse du contact (à modifier ajouter champ cp/ville/...) --> <input type="text" name="contact_adresse"> </br> <label for="contact_cp"> Code Postal : </label> <!-- Code postal du contact --> <input type="number" name="contact_cp" min="0"> </br> <label for="contact_ville"> Ville : </label> <!-- Vile du contact --> <input type="text" name="contact_ville"> </br> <label for="contact_association"> Association : </label> <select name="contact_association" id="contact_association"> <option> </option> <!-- Ajout d'une option vide --> <?php $reponse = $bdd->query('SELECT * FROM association'); while($donnees = $reponse->fetch()) { ?> <option value="<?php echo $donnees['ID']; ?>"> <?php echo $donnees['ID'] ." ". $donnees['LIBELLE']; ?> </option> <?php } ?> </select> </br> <label for="contact_activite"> Activité : </label> <select name="contact_activite" id="contact_activite"> <option> </option> <!-- Ajout d'une option vide --> <?php $reponse2 = $bdd->query('SELECT * FROM activite'); while ($donnees2 = $reponse2->fetch()) { ?> <option value="<?php echo $donnees2['ID']; ?>"> <?php echo $donnees2['ID'] ." ". $donnees2['LIBELLE']; ?> </option> <?php } ?> </select> </br> </br> <input type= "submit" value= "Valider"> </br> </form>
Le but de ces pages et de récupérer un formulaire pour l'ajout d'un contact et de l'entrer dans la base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <?php include 'connectionbdd.php'; // permet la connection à la base de données grâce au fichier connectionbdd.php $testnom_contact = !empty($_POST['contact_nom']) ? $_POST['contact_nom'] : NULL; // On regarde si le champ est rempli ou non $testprenom_contact = !empty($_POST['contact_prenom']) ? $_POST['contact_prenom'] : NULL; $contact_nom = $_POST['contact_nom']; $contact_prenom = $_POST['contact_prenom']; $contact_numtel = $_POST['contact_numtel']; $contact_numtelmobil = $_POST['contact_numtelmobil']; $contact_email = $_POST['contact_email']; $contact_adresse = $_POST['contact_adresse']; $contact_cp = $_POST['contact_cp']; $contact_ville = $_POST['contact_ville']; $contact_association = $_POST['contact_association']; $contact_activite = $_POST['contact_activite']; $req = $bdd->prepare('SELECT * FROM contact WHERE NOM = :nom'); // Permet de vérifier que le nom ne soit pas déjà entré $req->bindValue(':nom',$_POST['contact_nom'], PDO::PARAM_STR); $req->execute(); $data=$req->fetch(); if($testnom_contact==NULL || $testprenom_contact==NULL) // Si les champs obligatoire (*) ne sont pas remplis -> message d'erreur { $message = '<p> Des renseignements manquent, essayez de nouveau.'; // include 'ajoutcontact.php'; } elseif($data['NOM']==$contact_nom AND $data['PRENOM']==$contact_prenom) // Sinon si les informations sont déjà entrées --> message d'erreur { $message = '<p> Un contact de cette association possède déjà ces informations </p>'; } else // Si aucun soucis --> met les informations dans la base de données { $req2 = $bdd->prepare('INSERT INTO contact(NOM, PRENOM, NUMTEL, NUMTELMOBIL, EMAIL, ADRESSE, CP, VILLE, ID_ASSOCIATION, ID_ACTIVITE) VALUES(:NOM, :PRENOM, :NUMTEL, :NUMTELMOBIL :EMAIL, :ADRESSE, :CP, :VILLE, :ID_ASSOCIATION, :ID_ACTIVITE)'); // prépare une requête d'insertion $req2->execute(array('NOM' => $contact_nom, 'PRENOM' => $contact_prenom, 'NUMTEL' => $contact_numtel, 'NUMTELMOBIL' => $contact_numtelmobil, 'EMAIL' => $contact_email, 'ADRESSE' => $contact_adresse, 'CP' => $contact_cp, 'VILLE' => $contact_ville, 'ID_ASSOCIATION' => $contact_association, 'ID_ACTIVITE' => $contact_activite)); print_r($req2->errorInfo()); $message = '<p> Le contact ' . $contact_nom . ' a été ajouté avec succès </p>'; } echo $message; // Affiche le message correspondant ?>
Le formulaire récupère bien les données (testé avec echo $nomdonnees).
Le problème est-il dû à un problème dans la table d'insertion ? Je suis allé voir de ce côté là, il ne semble pas avoir de faute au niveau des champs entrés dans la requête mais peut-être que les types de variables sont mal choisis ?
Voici la configuration de la table ou les données doivent être ajoutées :
Partager