MYSQL PHP et Date

Résolu
elti69 Messages postés 5 Statut Membre -  
coeus Messages postés 3296 Statut Membre -
Bonjour,
j'aimerais afficher les champs de ma table cafeteriaMenus si la date n'est pas encore passée.

SELECT * FROM cafeteriaMenus WHERE dateMenu>2011-11-02 ORDER BY dateMenu ASC LIMIT 0,5

mais cela ne m'affiche les 5 premiers menus qui sont passés depuis longtemps...

CREATE TABLE 'cafeteriaMenus' (
'id' int(10) unsigned NOT NULL auto_increment,
'pdf' varchar(255) NOT NULL default '',
'dateMenu' date NOT NULL default '0000-00-00',
PRIMARY KEY ('id')
) TYPE=MyISAM AUTO_INCREMENT=9 ;

--
-- Contenu de la table 'cafeteriaMenus'
--

INSERT INTO 'cafeteriaMenus' VALUES (1, 'test.pdf', '2011-10-24');
INSERT INTO 'cafeteriaMenus' VALUES (2, 'test2', '2011-10-31');
INSERT INTO 'cafeteriaMenus' VALUES (3, 'test3', '2011-11-07');
INSERT INTO 'cafeteriaMenus' VALUES (4, 'test4', '2011-11-14');
INSERT INTO 'cafeteriaMenus' VALUES (5, 'test5', '2011-11-21');
INSERT INTO 'cafeteriaMenus' VALUES (6, 'test6', '2011-11-28');
INSERT INTO 'cafeteriaMenus' VALUES (7, 'test7', '2011-12-05');
INSERT INTO 'cafeteriaMenus' VALUES (8, 'test8', '2011-12-12');

Merci pour votre aide...
je pense que ca vient du format de la date mais je vois pas comment faire d'autre!

6 réponses

  1. coeus Messages postés 3296 Statut Membre 120
     
    Salut !

    Si tu essayais :
    SELECT * FROM cafeteriaMenus WHERE dateMenu > NOW();
    


    Juste pour voir...
    0
  2. epitale Messages postés 4115 Date d'inscription   Statut Membre Dernière intervention   920
     
    bonsoir elti69,
    pour faire des comparaisons et calculs avec les dates c'est plus simple de resté en timestamp... tu repasses en format jj/mm/aaaa au dernier moment pour affichage coté client
    0
  3. elti69 Messages postés 5 Statut Membre
     
    Coeus, ta methhode marche mais elle ne fait pas ce que je veux.

    Je voudrais faire

    SELECT * FROM cafeteriaMenus WHERE dateMenu > NOW() -7 jours;

    et je n'y arrive pas.

    Epitale
    je n'arrive pas a soustraire des jours d'un timestamp...
    0
  4. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Le premier exemple donné dans la doc de mysql devrait répondre à ton problème.
    http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

    Voici un exemple d'utilisation des fonctions de date. La requête suivante sélectionne toutes les lignes dont la colonne date_col représente une date de moins de 30 jours :
    
    mysql> SELECT quelquechose FROM nom_de_table
               WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
    

    Notez que cette requête va aussi sélectionner des lignes dont les dates sont dans le futur.


    Xavier
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. coeus Messages postés 3296 Statut Membre 120
     
    Ouais, je pense qu'avec ce que tu veux faire, le mieux serait effectivement d'utiliser un timestamp.

    C'est un peu confus au début, mais ça s'apprend vite. Regarde ici. Change tes champs de date dans ta BDD pour des Integers assez longs pour contenir un timestamp, et sers-toi de PHP pour faire les calculs nécessaires...

    Un timestamp, c'est un nombre de secondes. Donc pour obtenir un jour, tu dois trouver le nombre de secondes dans 24 heures, soit :

    60 * 60 * 24 = 86400

    Et tu soustrais ça au timestamp, le nombre de fois que tu veux.
    0
  7. elti69 Messages postés 5 Statut Membre
     
    Merci beaucoup,
    les 2 méthodes fonctionnent MERCI mille fois!!!
    0
    1. coeus Messages postés 3296 Statut Membre 120
       
      Super !
      N'oublie pas de mettre ton sujet en résolu, s'il l'est ! ;-)
      Bonne journée !
      0