select et update kaputt?

Invité
Invité n'ayant pas de compte PHPfrance

14 oct. 2006, 22:01

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: :?

ViPHP
ViPHP | 1961 Messages

14 oct. 2006, 22:07

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'";
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 19672 Messages

15 oct. 2006, 08:43

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 16:04

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é :?:

ViPHP
ViPHP | 1961 Messages

15 oct. 2006, 16:11

Bonjour,

Comment récupères-tu "$id" ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 16:38

C'est à dire? :shock:

Mammouth du PHP | 19672 Messages

15 oct. 2006, 16:45

Des super-globales désactivées ? C'est quoi ce délire ???
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 16:56

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 ....

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 17:11

"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

ViPHP
ViPHP | 1961 Messages

15 oct. 2006, 17:22

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 17:56

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

ViPHP
ViPHP | 1961 Messages

15 oct. 2006, 18:10

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?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 18:23

$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

ViPHP
ViPHP | 1961 Messages

15 oct. 2006, 18:37

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');
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 19:15

voilà la réponse qui s'affiche....



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