pb requete sql

Eléphant du PHP | 250 Messages

27 sept. 2007, 22:00

Bonjour,

ce petit script fonctionne dans le sens ou il met bien à jour la base de données mais affiche un message erreur sql que je voudrais voir disparaitre:
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 '' at line 1

<?php
session_start();
$id = $_SESSION['id'];
include 'connexion.php';
$requete = mysql_query("SELECT pause FROM membres WHERE id = ". $id .";") or die(mysql_error());
$data= mysql_fetch_assoc($requete);
$pause= $data['pause'];
switch ($pause){
case "NON":
$maj = mysql_query ("UPDATE membres SET pause= 'OUI', gestion= './images/jetonrouge.gif', deplacement='./images/jetonrouge.gif',
action='./images/jetonrouge.gif' WHERE id = " . $id ."  "); 
mysql_query($maj) or die('Erreur SQL '.$maj.'<br>'.mysql_error());
break;
echo '<script language="Javascript">
<!--
document.location.replace("son_boire.htm");
// -->
</script>';
case "OUI":
echo'<center><strong><font size="3" face="Calligraph421 BT">Votre perso est déjà en pause !</font></strong></center>';
break;
}		
mysql_close();
?>
je ne peux plus passer par un header, apparemment, le nouvel hebergeur ne les accepte pas :roll:
j'ai aussi décalé le javascript en l'intégrant avant le break, mais ce n'est pas mieux...

Mammouth du PHP | 19672 Messages

28 sept. 2007, 06:43

Fais voir la requête SQL générée, on ne pourra pas forcément détecter d'erreur sans ça. Si la suite du programme passe par un header, il est normal que ça plante si tu as un message d'erreur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

d0m
Mammouth du PHP | 1141 Messages

28 sept. 2007, 09:10

Tu fais simplement un double mysql_query dans cette partie :
$maj = mysql_query ("UPDATE membres SET pause= 'OUI', gestion= './images/jetonrouge.gif', deplacement='./images/jetonrouge.gif',
action='./images/jetonrouge.gif' WHERE id = " . $id ."  "); 
mysql_query($maj) or die('Erreur SQL '.$maj.'<br>'.mysql_error()); 
en gros tu fais l'équivalent de :
mysql_query(mysql_query($requete_sql));
ta première requete est donc bien executée, mais ensuite tu essaies d'executer le résultat de la requete, et ça ça ne marche pas ;)

Eléphant du PHP | 250 Messages

30 sept. 2007, 20:43

J'ai simplifié le code (redondant?) et ai mis un include.
Ca marche et plus de message d'erreur. :)
<?php
session_start();
$id = $_SESSION['id'];
include 'connexion.php';
$requete = mysql_query("SELECT pause FROM membres WHERE id = ". $id .";") or die(mysql_error());
$data= mysql_fetch_assoc($requete);
$pause= $data['pause'];
switch ($pause){
case "NON":
$maj = mysql_query ("UPDATE membres SET pause= 'OUI', gestion= './images/jetonrouge.gif', deplacement='./images/jetonrouge.gif',
action='./images/jetonrouge.gif' WHERE id = " . $id .";")or die (mysql_error());  
include('pauseOK.htm');
break;
case "OUI":
echo'<center><strong><font size="3" face="Calligraph421 BT">Votre perso est déjà en pause !</font></strong></center>';
break;
}		
mysql_close();
?>