Erreur SQL après envoi du formulaire

Résolu/Fermé
yohanimusha Messages postés 60 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 26 juillet 2012 - 14 juin 2012 à 13:01
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 14 juin 2012 à 20:48
Bonjour,

Je rencontre un dernier soucis avec mon formulaire qui me sert à poster mes news sur mon site.

Pour commencer voici l'odre des colonnes :
ID => auteur => titre => date => avatar => lien => texte_news

(avatar et lien peuvent rester null)

Et quand je remplis tous les champs du formulaire, voici ce que ça donne:

Erreur SQL !INSERT INTO news VALUES("", "Elorfiwen", "News de test 2", "2012-06-14 12:55:53", "Ceci est une news de test...")
Column count doesn't match value count at row 1

D'après ce que j'ai compris le nombre de colonnes ne correspond pas au nombres de valeur. Mais vu que je débute dans le php après avoir essayé de "désactiver" les colonnes avatar et lien qui ne sont pas comprit dans le formulaire (je ne les ai pas encore intégré) l'erreur subsiste :/

Voilà le code source des requêtes et du formulaire:

<?php
// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
	// on se connecte à notre base
	$base = mysql_connect ('serveur', 'login', 'password');
	mysql_select_db('nom_base', $base);

	// on teste la déclaration de nos variables
	if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['news'])) {
		$erreur = 'Les variables nécessaires au script ne sont pas définies.';
	}
	else {
		if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['news'])) {
			$erreur = 'Au moins un des champs est vide.';
		}
		// si tout est bon, on peut commencer l'insertion dans la base
		else {
			// lancement de la requête d'insertion
			$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['news']).'")';

			// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

			// on ferme la connexion à la base de données
			mysql_close();

			// on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site.
			header('Location: ../index.php');
			// on termine le script courant
			exit();
		}
	}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_news.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras">News :</span>
</td><td>
<textarea name="news" cols="50" rows="10"><?php if (isset($_POST['news'])) echo htmlentities(trim($_POST['news'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster la news">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>


Merci d'avance au personnes qui prennent le temps de m'aider :)




3 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
14 juin 2012 à 13:11
Essai:
INSERT INTO news (auteur, titre, date, texte_news) VALUES ("Elorfiwen", "News de test 2", "2012-06-14 12:55:53", "Ceci est une news de test...") 

J'ai spécifié les colonnes dans lesquelles vont les données.
Si tu ne le fait pas, tu dois spécifier toutes les colonnes dans VALUES.
0
yohanimusha Messages postés 60 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 26 juillet 2012 1
14 juin 2012 à 13:13
je te remerci arthezius :)

Je vais essayer ça et je te dirais si ça a fonctionné :) Encore merci!
0
yohanimusha Messages postés 60 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 26 juillet 2012 1
14 juin 2012 à 13:26
Super merci ! effectivement vu que je n'avais pas listé la colonne avatar et lien dans VALUES il ne voulait rien savoir ^^ Milles merci !! :)
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
14 juin 2012 à 20:48
De rien! :)
0