[RESOLU] affichage avec une période de date

Eléphanteau du PHP | 11 Messages

14 janv. 2012, 18:15

Bonjour et Bonne et heureuse année à toutes et à tous,

voila j'ai besoin d'un peu d'aide.

J'ai une base de donnée dans laquelle il y à:

- un champ debut au format date,
- un champ fin au format date, (YYYY-mm-dd)
- un champ periode au format varchar.
- un champ id

j'iterroge cette base avec ceci:
  $date = date("Y-m-d");
  

  mysql_select_db($database_dbprotect, $bdd);

  $query_users = "SELECT * FROM periodes WHERE (debut <= $date) AND (fin >= $date) "; 

  $users = mysql_query($query_users, $bdd) or die(mysql_error());
	while (	$row_users = mysql_fetch_assoc($users)) {

   $session = $row_users['periode'];
  } 
mais je n'arrive pas à afficher l'enregistrement qui correspont à:
:oops:
compris entre debut, aujourd'hui, fin

un peu d'aide SVP!!!
merci par avance.....

ViPHP
xTG
ViPHP | 7331 Messages

14 janv. 2012, 20:14

Essayes cela :
SELECT * FROM periodes WHERE (debut <= NOW()) AND (fin >= NOW())

Invité
Invité n'ayant pas de compte PHPfrance

15 janv. 2012, 01:37

Merci
c'est génial ca fonctionne a merveille.

mais alors

POURQUOI ?????

ViPHP
xTG
ViPHP | 7331 Messages

15 janv. 2012, 10:41

Parce que ton $date est une chaîne de caractère et qu'il devait pas faire la conversion vers un timestamp tout seul.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 janv. 2012, 12:43

Parce que ton $date est une chaîne de caractère et qu'il devait pas faire la conversion vers un timestamp tout seul.
En fait c'est surtout parce que comme toute chaine de caractère en sql, celle-ci doit être délimitée par des apostrophes ;)
$query_users = "SELECT * FROM periodes WHERE debut <= '$date' AND fin >= '$date' ";
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
xTG
ViPHP | 7331 Messages

15 janv. 2012, 12:53

Certes mais l'auteur n'a pas annoncé d'erreur alors que son code est bien construit pour en afficher si c'est le cas.
Donc je pense pas que cela ait posé problème dans la requête.

A moins que du coup il ai transformé les tirets par des moins et ai effectué le calcul ? #-o

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 janv. 2012, 13:00

Ben si :)

Puisqu'il n'y a pas d'apostrophe autour, pour mysql c'est qu'il ne s'agit pas d'une chaine. Du coup il va exécuter les soustractions demandées avant de vérifier si la date est inférieure au nombre obtenu... ce qui est syntaxiquement correct :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
xTG
ViPHP | 7331 Messages

15 janv. 2012, 14:35

Si c'est pas du détournement de code ça. |(X