J'ai un soucis avec une variable intégrée à une requète sql.
Lorsque je lance la commande:
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:
TIMESTAMP( date_fin )
devient
TIMESTAMP( '" . $assoc['date_fin'] . "' )
et
id_joueur = '20'
devient
WHERE id_joueur = '" . $_SESSION['id_joueur'] . "'
Ce qui fait:
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
TIMESTAMP( '" . $assoc['date_fin'] . "' ) qui est la seule différence...C'est pourtant la même syntaxe que
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...