Php : ou est l'erreur?

Fermé
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010 - 8 oct. 2010 à 18:44
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010 - 11 oct. 2010 à 22:19
Bonjour,
Alors voila, j'ai fait un script et lorsque je l'exécute, il me met une erreur sur mes requêtes, que je ne trouves pas (revérifié 15000 fois, ma bdd est correctement créée, remplis...)
Je vous explique le fonctionnement de ma page :
1- je choisis un site parmis ceux enregistrés dans ma bdd (ca marche)
2- les 5 derniers taux de fréquentation s'affichent(ca marche)
3- sur la même page, j'entre un taux pour un nouveau moi (ca ne marche pas)

Si vous voyez d'où vient le problème... la je suis dépassé!

Merci!

<?php
session_start();
if (isset($_POST['enregistrer']) && $_POST['enregistrer'] == 'Enregistrer') { //si le formulaire des taux est validé
	if (isset($_POST['mois']) && !empty($_POST['mois']) && isset($_POST['taux']) && !empty($_POST['taux'])) { //si bien renseigné
		$mois=$_POST['mois'];
		$taux=$_POST['taux'];
		mysql_query("INSERT INTO $site VALUES('','".$mois."','".$taux."')") or die ('Erreur insertion : '.mysql_error()); //enregistrement du taux
		echo '<h2>'.$site.'</h2>';
		$lister_taux=mysql_query("SELECT * FROM $site ORDER BY id DESC LIMIT 0,5") or die ('Erreur : '.mysql_error()); //Affichage des 5 derniers taux
			while ($afficher_taux=mysql_fetch_array($lister_taux)) { 
				echo $afficher_taux['mois'];
				echo ' - '.$afficher_taux['tau'].'€<br>';
			}
		echo '<br><a href="taux.php">Entrer un nouveau taux</a>';
	}
	else {
		header("Location: taux.php"); //si le mois et le taux ne sont pas renseignée, on redirige
		exit(); 
	}
}	
else {
	if (isset($_POST['site'])) { // Vérification du choix du site
		$site=$_POST['site'];
		$_SESSION['site']=$site; $site=$_SESSION['site'];
		echo '<h2>'.$site.'</h2>';
		$lister_taux=mysql_query("SELECT * FROM $site ORDER BY id DESC LIMIT 0,5");
		while ($taux=mysql_fetch_array($lister_taux)) { //Affichage des 5 derniers taux
			echo $taux['mois'];
			echo ' - '.$taux['tau'].'€<br>';
		}
		echo '<form action="taux.php" method="post">'; // Formulaire d'ajout un taux
		echo '<label>Mois : </label><input type="text" name="mois" />';
		echo '<label>Taux : </label><input type="text" name="taux" />';
		echo '<input type="submit" name="enregistrer" value="Enregistrer" />';
		echo '</form>';
		echo '<br/><a href="taux.php">Choisir un autre site</a>';
	}
	else {
		?>
		<form method="post" action="taux.php">
		<select name="site">
			<option selected>Choisir un site</option>
			<?php
			$lister_sites=mysql_query("SHOW TABLES");
			while($sites=mysql_fetch_array($lister_sites)) {
				echo'<option value="'.$sites[0].'">'.$sites[0].'</option>';
			}
			?>
		</select>
		<input type="submit" name="envoyer" value="Envoyer">
		</form>
		<?php
	}
}
?>
A voir également:

7 réponses

MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
8 oct. 2010 à 20:02
Bonsoir,
J'ai vérifier avec Dreamweaver CS5, aucune erreur de syntaxe signalé, j'ai vérifier par moi même, et je en trouve aucune erreur, j'essai en localhost, et aucun message d'erreur ne vient. Pourrais-tu nous en dire plus sur ta requête, ou de ton erreur ?
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
Modifié par leuntout le 8/10/2010 à 20:35
Bonsoir, et merci.
Voici l'erreur, qui intervient sur la requête d'insertion des données dans la BDD :
Erreur insertion : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES('','Octobre','53')' at line 1
le premier champ de la BDD est l'id, puis mois, puis une valeur.
0
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
Modifié par duweb le 8/10/2010 à 21:48
la requête d'insertion est fausse.
pour éviter les erreurs il est préférble d'indique le nom des champs :
INSERT INTO $site(id,mois,taux) VALUES('','".$mois."','".$taux."')

de plus si l'id est la clé primaire et est généré automatiquement(ce qui est sûrement le cas) , pourquoi mettre une valeur vide ?
correction de la requête :
INSERT INTO $site(mois, taux) VALUES('".$mois."','".$taux."')
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
8 oct. 2010 à 22:22
ben non, toujours pas!
je trouve ça dingue, j'en ai pourtant codé du PHP et je ne comprends pas ce qui coince...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
8 oct. 2010 à 22:30
J'ai trouvé un élément de réponse, lors de la requête la variable $site n'est pas connue (car ca marche en entrant directement le nom de la table).
Mais ce qui bloque, en fait c'est l'affichage des 5 derniers taux une fois le nouveau enregistré. Quand je retire cette partie du code, cela fonctionne. je pense qu'il me faut un rechargement de la page entre l'enregistrement et l'affichage mis à jour. Qu'en pensez-vous?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
8 oct. 2010 à 23:11
tu utilises une variable $site qui n'est pas définie dans les lignes précédentes:

essayes

<?php
session_start();
if (isset($_POST['enregistrer']) && $_POST['enregistrer'] == 'Enregistrer') { //si le formulaire des taux est validé
	if (isset($_POST['mois']) && !empty($_POST['mois']) && isset($_POST['taux']) && !empty($_POST['taux'])) { //si bien renseigné
		$mois=$_POST['mois'];
		$taux=$_POST['taux'];
		$site=$_SESSION['site'];
		mysql_query("INSERT INTO $site VALUES('','".$mois."','".$taux."')") or die ('Erreur insertion : '.mysql_error()); //enregistrement du taux

.......
0
leuntout Messages postés 67 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 11 octobre 2010
11 oct. 2010 à 22:19
oui, ca marche comme ca, merci.
En revanche ce qui bloque toujours c'est le réaffichage actualisé des taux après l'enregistrement.
0