JeuWeb - Crée ton jeu par navigateur
[REGLE]Variable au sein d'une requête sql - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [REGLE]Variable au sein d'une requête sql (/showthread.php?tid=404)



[REGLE]Variable au sein d'une requête sql - fiatt - 06-11-2006

C'est encore moi!

J'ai un soucis avec une variable intégrée à une requète sql.

Lorsque je lance la commande:
Code PHP :
<?php 
UPDATE habitations SET qtt_poss
= qtt_poss + 1, date_fin = '' WHERE id_joueur = '20' AND TIMESTAMPDIFF( SECOND, CURRENT_TIMESTAMP(), TIMESTAMP( date_fin )) < '0' AND date_fin != '0000-00-00 00:00:00'


dans mon gestionnaire de base de donnée alors tout se passe comme prévu. cad le calcul TIMESTAMPDIFF se fait correctement et la condition < '0' est respectée.

Maintenant j'intègre cette requète dans mon script de cette manière:
Code PHP :
<?php 
TIMESTAMP
( date_fin )
devient
Code PHP :
<?php 
TIMESTAMP
( '" . $assoc['date_fin'] . "' )
et
Code PHP :
<?php 
id_joueur
= '20'
devient
Code PHP :
<?php 
WHERE id_joueur
= '" . $_SESSION['id_joueur'] . "'

Ce qui fait:
Code PHP :
<?php 
while ($assoc = mysql_fetch_assoc ($result))
{
//CONSTRUCTION TERMINEE: METTRE A JOUR LES POSSESSIONS ET LES PLACES MAX/DISPO
$sql2 = " UPDATE habitations SET qtt_poss = qtt_poss + 1, date_fin = '' WHERE id_joueur = '" . $_SESSION['id_joueur'] . "' " .
"AND TIMESTAMPDIFF( SECOND, CURRENT_TIMESTAMP(), TIMESTAMP( '" . $assoc['date_fin'] . "' )) < '0' AND date_fin != '0000-00-00 00:00:00' " ;
$result2 = mysql_query($sql2) or die(mysql_error());
}

Et c'est le drame.
La condition de l'id_session est respectée, pas de soucis à ce niveau là.
Par contre l'UPDATE se fait sans tenir compte de la condition TIMESTAMPDIFF() < '0' alors je suppose que l'erreur viens de
Code PHP :
<?php 
TIMESTAMP
( '" . $assoc['date_fin'] . "' )
qui est la seule différence...
C'est pourtant la même syntaxe que
Code PHP :
<?php 
id_joueur
= '" . $_SESSION['id_joueur'] . "'
Cela peut-il être du à la boucle WHILE? Pourtant je fais un UPDATE sur le champs date_fin en le mettant à '0000-00-00 00:00:00' (qui d'ailleurs s'effectue correctement) pour qu'il ne soit pas re-selectionner...


RE: Variable au sein d'une requête sql - Loetheri - 06-11-2006

Mais es-tu sur qu'il faille des quotes ou doubles quotes pour l'argument de TIMESTAMP?

Je ne crois pas ... Confused


RE: Variable au sein d'une requête sql - fiatt - 13-11-2006

Loetheri a écrit :Mais es-tu sur qu'il faille des quotes ou doubles quotes pour l'argument de TIMESTAMP?

Je ne crois pas ... Confused

Les doubles quotes " sont là pour faire la jointure mysql/php et si j'enleve les simples quotes ' alors j'ai une erreur de syntaxe sql.


RE: Variable au sein d'une requête sql - pascal - 13-11-2006

tes requetes ne sont pas identiques:
http://www.phpfrance.com/forums/voir_sujet-24234.php

A+

Pascal


RE: Variable au sein d'une requête sql - fiatt - 13-11-2006

Merci tout le monde mais j'ai modifier mon script et c'est mieux ainsi!

J'ai maintenant plus de clarté et moins de code! lol

Néanmoins si quelqu'un connait la solution...