Page 1 sur 2

select et update kaputt?

Posté : 14 oct. 2006, 22:01
par Invité
Bonsoir,

Mes requètes ne fonctionnent plus....
J'ai testé chez un autre hébergeur mais c'est pareil ....

<?php
$db= mysql_connect(localhost, xxxx, xxxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion FROM membres  WHERE id = '. $id'";
 where id='". $id ."'"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'gestion'));
if ($data== './images/jetonrouge.gif')
       {
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
	}
	else
	{
$sql = "UPDATE membres SET vie = vie+0.1, gestion = './images/jetonrouge.gif', mp = ' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.' WHERE id = '. $id'"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
   $_SESSION['gestion']='./images/jetonrouge.gif';
   $_SESSION['vie']=$_SESSION['vie']+0.1;
   $_SESSION['mp']=' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.';

}
header("Location: page_membre.php");
}
mysql_close();
?> 

DONC, CELA affiche à présent le mess erreur suivant:
Erreur SQL SELECT gestion FROM membres WHERE id =
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

ca a fonctionné durant plusieurs mois pourtant ......

J'ai changé la concaténation ainsi:
.....where id='". $id ."'";
Mais l'update ne fonctionne tjrs pas ni meme le select (en mettant auparavant par exemple "jetonrouge" dans la base....)

J'y perds mon latin en fait :roll: :?

Posté : 14 oct. 2006, 22:07
par Ajoloca
Bonsoi,

J'ai pas regardé le reste du code mais ici

Code : Tout sélectionner

WHERE id = '. $id'";
il me semble qu'il y-a QQ chose en trop , non ?
essaye avec un . (point) en moins comme ceci

Code : Tout sélectionner

WHERE id = '$id'";

Posté : 15 oct. 2006, 08:43
par Cyrano
Même pas, il y a des erreurs de concaténation dans les deux requêtes. Corrigé :
<?php
$db = mysql_connect(localhost, xxxx, xxxx) or die("Impossible de se connecter à la base de données");
mysql_select_db('xxxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion ".
       "FROM membres  ".
       "WHERE id = ". $id .";";
$res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$data = mysql_result($res,0,'gestion');
if ($data== './images/jetonrouge.gif')
{
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
}
else
{
    $sql = "UPDATE membres ".
           "SET vie = vie+0.1, 
                gestion = './images/jetonrouge.gif', 
                mp = ' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.' ".
           "WHERE id = ". $id .";";
    $res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
    if($res)
    {
        $_SESSION['gestion']='./images/jetonrouge.gif';
        $_SESSION['vie']=$_SESSION['vie']+0.1;
        $_SESSION['mp']=' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.';
    }
    header("Location: page_membre.php");
}
mysql_close();
?>
La simple observataion du résultat de la coloration syntaxique peut être d'une aide précieuse, compare ton code et celui-ci.

Posté : 15 oct. 2006, 16:04
par Invité
Erreur SQL SELECT gestion FROM membres WHERE id = ;
Erreur de syntaxe près de '' à la ligne 1


J'ai prévenu mon hébergeur qui m'a renvoyé ceci:

Etes vous vraiment sur de ne pas utiliser les variables super globales ? Je vous rappelle qu'elles sont désactivées sur nos serveurs PHP. Si vous les utilisiez avant vous devez mettre dans un fichier .htaccess
xxxxxxxxxx bla bla bla xxxxx

Esct ce que le pb est lié :?:

Posté : 15 oct. 2006, 16:11
par Ajoloca
Bonjour,

Comment récupères-tu "$id" ?

Posté : 15 oct. 2006, 16:38
par Invité
C'est à dire? :shock:

Posté : 15 oct. 2006, 16:45
par Cyrano
Des super-globales désactivées ? C'est quoi ce délire ???

Posté : 15 oct. 2006, 16:56
par Invité
J'en sais rien, Cyrano, c'est ce qu'il m'a répondu.....
il faut que je rentre une ligne de code dans 1 fichier .htaccess pour les superglobales ....

Posté : 15 oct. 2006, 17:11
par Invité
"Quelles sont les logs d'erreurs dans le panneau de controles ?

Pourquoi dites vous que plus rien ne marche logiquement ?

Quel script utilisez vous ? un script *maison* ?

Etes vous vraiment sur de ne pas utiliser les variables super globales ? Je vous rappelle qu'elles sont désactivées sur nos serveurs PHP. Si vous les utilisiez avant vous devez mettre dans un fichier .htaccess
php_flag register_globals 1

Posté : 15 oct. 2006, 17:22
par Ajoloca
Re,
Un petit bout de php.ini
; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.
; Note that register_globals is going to be depracated (i.e., turned off by
; default) in the next version of PHP, because it often leads to security bugs.
; Read http://php.net/manual/en/security.registerglobals.php for further
; information.
donc pour les activer tu dois créer un fichier nommé '.htaccess' (ne pas oublier le point en début du nom) à la racine de ton site qui contient la ligne 'php_flag register_globals 1' et qui soit accessible à php en lecture.

Posté : 15 oct. 2006, 17:56
par Invité
Ok, le fichier .htaccess a été créé et mis à la racine du site..
J'ai juste mis cela dedans

php_flag register_globals 1

ca suffit, parce que mes select et update ne marchent toujours pas.l

Posté : 15 oct. 2006, 18:10
par Ajoloca
Re,

Dans cette requête tu utilies '$id'
$sql = "UPDATE membres ".
           "SET vie = vie+0.1, 
                gestion = './images/jetonrouge.gif', 
                mp = ' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.' ".
           "WHERE id = ". $id .";"; 
mais dans cette partie du script on ne voie pas d'où vient sa valeur. c'estait ma question ut le récupères comment?
il a quelle valeur?

Posté : 15 oct. 2006, 18:23
par Invité
$id est le numéro id du membre dans la base et vient d'une session appelée en tout début de page par un SESSION_START

Posté : 15 oct. 2006, 18:37
par Ajoloca
Pour être sur que tes SESSIONS sont activées fais un essai
$_SESSION['essai'] = 'Test de validite de session';
if(empty($_SESSION['essai'])) die ('Les sessions ne fonctionnent pas');
echo 'Les sessions sont OK! <br />';
// S'assurer de la valeur de $id
if(empty($id)) die ('$id ===> est vide');

Posté : 15 oct. 2006, 19:15
par Invité
voilà la réponse qui s'affiche....



Les sessions sont OK!
$id ===> est vide