rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Timestamp et condition sql...

Posté par jeje59350, le mercredi 22 août 2007 à 18:57:59
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
Configuration: Windows XP
Firefox 2.0.0.6
Répondre à jeje59350  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ohm-WorK, le mercredi 22 août 2007 à 19:05:01
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 :) La vie est une maladie mortelle, sexuellement transmissible ­(Woody Allen)
Répondre à Ohm-WorK

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje59350, le mercredi 22 août 2007 à 20:51:00
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...
Répondre à jeje59350

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeje59350, le mercredi 22 août 2007 à 21:43: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...
Répondre à jeje59350

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Adrien, le jeudi 20 décembre 2007 à 16:17:15
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.
Répondre à Adrien