Timestamp et condition sql...

Fermé
jeje59350 Messages postés 18 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 22 novembre 2007 - 22 août 2007 à 18:57
Jean-François Pillou Messages postés 19261 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 - 25 mars 2010 à 12:48
Bonjour!!

j'ai un probleme, je veux faire un systeme qui fasse en sorte que dans une certaine periode donnée d'un an , des images s'affichent, puis cette periode dépassée ou alors non encor entammé, les images ne s'affichent pas!

pour ca j'ai donc créé un formulair pour l'upload de l'image, aucun probleme, on rentre la date a laquelle on souhaite publier l'image sur le site (les 15/10/2007 par exemple) cette date est traduite en seconde et est stockée dans ma bdd , j'effectue ensuite un autre calcul pour obtenir la date en seconde de "dans un an" (donc ici le 15/10/2008) !

ces deux dates sont stockées dans la bdd ce qui ressemble a sa (pour une photo):

id numero photographe date publication(date) datepublication+1an(date2)
25 20008 potter 1187733600 1219252320

mon probleme est lors de la requete sql, je ne sais pas quoi ecrire pour lui demander de ne publier l'image uniquement quand la date actuelle est comprise entre "date" et "date2"

je suis tres mauvais en php et j'avais tenté un truc comme sa :
$sql = "SELECT id, numero, nomphoto, date, date2 FROM cartes WHERE date<='$timestamp'<date2";

mais sa ne fonctionne pas(pas etonnant, sa doi etre du n'importe quoi mon code!!^^)
, il m'affiche les photos, meme celles qui ne devraient pas l'etre

quelqu'un pourrait'il m'éclairer?

merci
A voir également:

3 réponses

jeje59350 Messages postés 18 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 22 novembre 2007
22 août 2007 à 21:43
Ah je viens de trouver la source du probleme, mais si quelqu'un peut tout de meme m'expliquer...

en fait quand je mettait une date trop anterieure ( dans les années 1990') sa ne fonctionnait pas
tandisqu'une date du genre 2002 fonctionne...

et pourtant il ne prend pas en compe que les deux derniers chiffres donc pas de probleme de ce coté là...
et la traduction de la date en seconde est correcte , meme pour les dates des années 19.. !
donc je ne comprend pas... si quelqu'un sait d'ou vient ce bug...
2
Jean-François Pillou Messages postés 19261 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
25 mars 2010 à 12:48
Un timestamp désigne le nombre de secondes depuis le 1er janvier 1970, donc par essence, ça ne fonctionnera jamais pour des dates antérieures au 1er janvier 1970.
0
Ohm-WorK Messages postés 1464 Date d'inscription mardi 25 octobre 2005 Statut Contributeur Dernière intervention 29 octobre 2019 420
22 août 2007 à 19:05
Salut

T'a requète était pas loin d'etre ok !

Essaye comme ca :

" Select id, numero, nomphoto, date, date2 FROM cartes WHERE date <= '$timestamp' AND date2 >= '$timestamp' "

Tchuss :)
1
jeje59350 Messages postés 18 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 22 novembre 2007
22 août 2007 à 20:51
merci!

j'ai modifié un peu en remplacent le timestamp par autre chose... bref ça fonctionne!

mais maintenan la page qui doit afficher les images quand la date actuelle est superieure a la date2 d'une image ne fonctionne toujours pas... voici le code

$actu= time();

$sql = "Select id, numero, nomphoto, date, date2 FROM cartes WHERE date2 <= '$actu' ";


alors que sa :
$actu= time();
$sql = "Select id, numero, nomphoto, date, date2 FROM cartes WHERE date <= '$actu' AND date2 >= '$actu' ";

sa fonctionne ... c'est presque pareil mais pourtant...
-1
Alors déjà, ta requète est fausse.

$sql = "Select id, numero, nomphoto, date, date2 FROM cartes WHERE date <= '$actu' AND date2 >= '$actu' ";

Ca devrait être:

$sql = "Select id, numero, nomphoto, date, date2 FROM cartes WHERE date <= '".$actu ."' AND date2 >= '".$actu."' ";

il faut ABSOLUMENT fermer la chaine et concaténer la variable car le php utilisera sa valeur et non son nom.
Tente des echo $sql; sur tes anciennes requêtes, tu risques d'avoir de jolies surprises...

Ensuite, le timestamp fonctionne à partir du 01/01/1970 mais pas sur une date antérieure.

Désolé pour la réponse ultra tardive au vieux post, mais cette erreur devait être corrigée.
-1