Page 1 sur 1

Enregistrement en base de donnée

Posté : 07 oct. 2012, 15:51
par Michel6359
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 { ?>

Re: Enregistrement en base de donnée

Posté : 07 oct. 2012, 15:59
par moogli
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.


@+

Re: Enregistrement en base de donnée

Posté : 07 oct. 2012, 16:15
par Michel6359
Oui je vois

Mais j'ai pourtant 4 champs partout

Re: Enregistrement en base de donnée

Posté : 07 oct. 2012, 16:24
par moogli
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 ?

@+

Re: Enregistrement en base de donnée

Posté : 07 oct. 2012, 16:34
par Michel6359
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

Re: Enregistrement en base de donnée

Posté : 08 oct. 2012, 12:32
par moogli
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.


@+

Re: Enregistrement en base de donnée

Posté : 08 oct. 2012, 12:39
par Michel6359
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