Php : ou est l'erreur?

leuntout Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
leuntout Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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 70 Date d'inscription   Statut Membre Dernière intervention  
 
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 353 Date d'inscription   Statut Membre Dernière intervention   72
 
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 70 Date d'inscription   Statut Membre Dernière intervention  
 
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 70 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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 70 Date d'inscription   Statut Membre Dernière intervention  
 
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