[RESOLU] Enregistrement en base de donnée

Eléphant du PHP | 134 Messages

07 oct. 2012, 15:51

Bonjour

J'ai erreur lors de l'envoi d'un formulaire et je ne trouve pas

Column count doesn't match value count at row 1


Merci d'avance pour une aide

Code : Tout sélectionner

<?php // Contôle des accès if($_SESSION['privilege'] < 1 OR $_SESSION['login'] == NULL OR $_SESSION['etat'] != 2) exit('<META HTTP-EQUIV="Refresh" CONTENT="0; URL=http:/**********.php">'); if (isset($_POST['nom']) AND isset ($_POST['mail']) AND isset($_POST['sujet']) AND isset($_POST['commentaire'])) { if ($_POST['nom'] != NULL AND $_POST['mail'] != NULL AND $_POST['sujet'] != NULL AND $_POST['commentaire'] != NULL) { $nom = htmlentities($_POST['nom'], ENT_QUOTES); $mail = htmlentities($_POST['mail'], ENT_QUOTES); $sujet = htmlentities($_POST['sujet'], ENT_QUOTES); $commentaire = nl2br(htmlentities($_POST['commentaire'], ENT_QUOTES)); if(ereg("@.",$mail)) { // Connexion au serveur MySQL mysql_connect("$mysql_acces_host", "$mysql_acces_user", "$mysql_acces_password"); mysql_select_db("$mysql_bdd"); $requete = mysql_query ("INSERT INTO ticket VALUES('','$nom','$mail','$sujet','$commentaire')")or die ('Vous avez une Erreur sur le serveur,Problème de Requête votre sql'.$sql.'<br>'.mysql_error ()); $requete = mysql_query ("INSERT INTO film_attendu VALUES('','$titre','$video','$url','$commentaire')")or die ('erreur de sql'.$sql.'<br>'.mysql_error ()); //mysql_query("INSERT INTO ticket VALUES('','$nom','$mail','$sujet','$commentaire','', NOW()) "); // Message de success echo '<div class="formulairevalider">'; echo '<center><h2> -- SERVICE REQUÊTE -- </h2></center><br/>'; echo '<center><h2>Votre Demande à bien était envoyé à l\'administrateur. Merci</h2></center><br/>'; echo'<p><center><img src="images/icons/loading3.gif" alt="" width="50" height="50"<p><strong><br/></p>'; echo '</div>'; echo '<meta http-equiv="Refresh" CONTENT="5; URL=index.php">'; // lien retour après saisie ajout // Envoi du mail à l'administrateur mail($mail_proprio, $sujet, $commentaire, $headers); // Envoi du mail au destinataire du message mail($mail, $mail_sujet_destinataire, $message2, $headers); // Déconnection de la MySQL mysql_close(); } else { // Message d'erreur si le mail de comporte pas de . ou de @ echo '<div class="formulairevalider">'; echo '<center><form><input type="button" value="Veuillez saisir un Email Valide !," onclick="history.go(-1)"></form></center'; echo '</div>'; } } else { echo '<div class="formulairevalider">'; echo '<center><form><input type="button" value="Corriger votre saisie champ formulaire vide !," onclick="history.go(-1)"></form></center'; echo '</div>'; } } else { ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 oct. 2012, 15:59

Salut,

Tu as trop ou pas assez de champs.

En général c'est que tu indique des colonnes dans la requête et que tu ne donne pas le même nombre de valeur.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 134 Messages

07 oct. 2012, 16:15

Oui je vois

Mais j'ai pourtant 4 champs partout

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 oct. 2012, 16:24

Reste un cas : il y a un champ obligatoire (not null) qui n'est pas utilisé dans la requête ?

Qu'elle est la requête qui pose problème ?
Quel est le message d'erreur complet ?
Peux tu nous montrer la structure de la table ?

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 134 Messages

07 oct. 2012, 16:34

Seul le champ prenom n'est plus utilisé


La table

Structure de la table `ticket`
--

CREATE TABLE IF NOT EXISTS `ticket` (
`id` mediumint(255) NOT NULL AUTO_INCREMENT,
`nom` varchar(50) NOT NULL,
`prenom` varchar(50) DEFAULT NULL,
`mail` varchar(100) NOT NULL,
`sujet` varchar(100) NOT NULL,
`commentaire` text NOT NULL,
`reponse` text NOT NULL,
`dateaffiche` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=47 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;




La requête :

Code : Tout sélectionner

$nom = htmlentities($_POST['nom'], ENT_QUOTES); $mail = htmlentities($_POST['mail'], ENT_QUOTES); $sujet = htmlentities($_POST['sujet'], ENT_QUOTES); $commentaire = nl2br(htmlentities($_POST['commentaire'], ENT_QUOTES)); if(ereg("@.",$mail)) { // Connexion au serveur MySQL mysql_connect("$mysql_acces_host", "$mysql_acces_user", "$mysql_acces_password"); mysql_select_db("$mysql_bdd"); $requete = mysql_query ("INSERT INTO ticket VALUES('','$nom','$mail','$sujet','$commentaire')")or die ('Vous avez une Erreur sur le serveur,Problème de Requête votre sql'.$sql.'<br>'.mysql_error ());
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 oct. 2012, 12:32

8 champs dans la table, 5 dans la requêtes.
Quand tu n'indique pas les champs à remplir il faut fournir une valeur pour tout les champs et ce n'est pas ton cas.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 134 Messages

08 oct. 2012, 12:39

Bonjour

OK merci le précédent message que vous m'avez envoyé ma aidé à résoudre ce problème.


Merci encore et bonne journée