PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 31-05-2011 09:32:31

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Faire un tri par date, choix des variables ?

Bonjour à tous,

j'étais entrain de me faire un petit agenda en PHP. Et une fois que j'ai voulu afficher par mois et jour, je me suis aperçu que je m'y étais pris comme un manche, soyons honnête, il faut le dire. hmm

Donc, du coup, quand je veux faire un tri de la façon suivante, je pleure :

30 juin
18 juin
26 mai
16 mai
01 mai
30 avril
24 avril
12 avril

Je m'étais prévu un champ "date" auto à l'insertion sous la forme Y-M-D.
Et puis j'ai rajouté 3 champs : "jour_debut" , "mois_debut" , "annee_debut" , pour la date de évènements.

Et puis j'ai décidé de lancer mon tri ....

ORDER BY mois_debut DESC, jour_debut DESC

La ou je me retrouve coincé, c'est que j'ai completement zappé que mois_debut n'ai pas une date, puisqu'il contient par ex "avril" et quand je classe ben avril = A > Mai = M

Donc, j'avoue que je bloque. Je suis entrain de penser au champ date tout seul qui va me servir, mais ce matin je suis pas très frais...

Hors ligne

#2 31-05-2011 09:48:38

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Faire un tri par date, choix des variables ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 31-05-2011 09:59:10

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Re : Faire un tri par date, choix des variables ?

Super, merci smile

Hors ligne

#4 31-05-2011 10:36:46

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Faire un tri par date, choix des variables ?

Bonjour,

Créer un système d'agenda ou de calendrier interne à une application est toujours très spécifique à l'application concernée. En d'autres termes il peut exister autant de systèmes de gestion que d'applications qui les exploitent.
Cependant, il éxiste un système de base basé sur de l'évènementiel, comme le ferait un agenda avec des rendez-vous. Pour ce système, un simple timestamp ou datetime Y-M-D hh:mm:ss suffit par évènement pour gérer ton calendrier. Tes "jour_debut", "mois_debut", "annee_debut" sont inutiles et dénormalisent pas mal la structure de ta table.

Tu parles d'un champ date auto, pour ceci le mieux est de définir ton champ en TIMESTAMP avec valeur par défaut CURRENT_TIMESTAMP, ainsi l'heure à la seconde sera associé au moment de la création de ton enregistrement, sinon cela t'oblige pour automatiser simplement la chose à faire un now() en valeur d'insertion pour mémoriser l'heure en plus de la date.

Si tu as besoin de plus d'informations n'hésite pas à demander.

Cordialement,

jc


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 31-05-2011 12:56:33

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Faire un tri par date, choix des variables ?

Jc a écrit :

Tu parles d'un champ date auto, pour ceci le mieux est de définir ton champ en TIMESTAMP avec valeur par défaut CURRENT_TIMESTAMP, ainsi l'heure à la seconde sera associé au moment de la création de ton enregistrement, sinon cela t'oblige pour automatiser simplement la chose à faire un now() en valeur d'insertion pour mémoriser l'heure en plus de la date

Dommage, MySQl ne supporte pas cela en valeur par défaut pour un champ date, il faut passer par un trigger sur BEFORE ou AFTER UPDATE.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 31-05-2011 15:08:40

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Re : Faire un tri par date, choix des variables ?

Merci pour ce complément d'info, je n'ai pas arreter de lire, et en sus ,tu m'apportes de nouvelles informations. Je ne savais pas que l'on pouvait remplacer NOW (que j'utilisais constamment)  par la valeur par defaut CURRENT_TIMESTAMP.

Je pense que je m'en suis sorti, mais il me reste un gros nettoyage de code à faire lol

Hors ligne

#7 31-05-2011 15:10:03

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Re : Faire un tri par date, choix des variables ?

Rahh, j'avais raté le message de Maljuna Kris. Bon ben redirection le petit manuel pour voir cela wink

Hors ligne

#8 31-05-2011 17:44:04

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Faire un tri par date, choix des variables ?

Oui MK a raison,

le CURRENT_TIMESTAMP ne fonctionne pas avec DATETIME mais uniquement avec TIMESTAMP. En même temps je n'ai jamais dit que CURRENT_TIMESTAMP fonctionnait avec DATETIME.:rolleyes:
En gros TIMESTAMP et DATETIME font la même chose sauf ce que je viens de dire et que les valeurs de type TIMESTAMP ne peuvent pas prendre de valeur antérieure à 1970 ou postérieure à 2037.

Pour Now(), utilises-le avec un champ DATETIME.


Voilou wink

EDIT: Je vais pousser un peu l'information en te précisant que lorsque tu cherches à optimiser des requêtes qui utilisent des champs dates, il faut éviter d'utiliser la fonction CURRENT_DATE() et privilégier les champs indéxés avec valeurs calculées dans la mesure du possible. Pourquoi? Tout simplement parceque la fonction CURRENT_DATE() empêche le serveur MySQL de mettre en cache la requête.

Dernière modification par Jc (31-05-2011 18:23:35)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 31-05-2011 19:11:15

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Faire un tri par date, choix des variables ?

Soyons clairs

Extrait du manuel mysql :
Une valeur DEFAULT doit être une constante, et ne peut être une fonction ou une expression. Cela signifie notamment que vous ne pouvez pas donner une valeur par défaut à une colonne de date, le résultat de la fonction NOW() ou CURRENT_DATE.

D'où ma proposition de passer par un trigger.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#10 31-05-2011 19:51:00

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Faire un tri par date, choix des variables ?

Bonjour,

Sauf que c'est quelque chose que j'utilise dans tous mes développements depuis pas mal de temps déjà, et ce que j'ai dit precedemment fonctionne parfaitement. Et au même titre que pour un auto_increment, sur un insert, pas besoin de citer le champ et de lui insérer une valeur, cela se fait automatiquement. Idéal aussi pour des tables de log.

Un peu de lecture

++

Dernière modification par Jc (31-05-2011 19:59:07)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#11 31-05-2011 20:28:39

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Faire un tri par date, choix des variables ?

http://dev.mysql.com/doc/refman/5.0/fr/ … table.html

Pour les types dates et heures autres que TIMESTAMP, la valeur par défaut est la date zéro appropriée. Pour les colonnes TIMESTAMP, la valeur par défaut est la date et l'heure courante..


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 31-05-2011 21:10:59

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Faire un tri par date, choix des variables ?

MK, Je ne comprends pas ce que tu cherches à me démontrer. En tout cas, le manuel en français est beaucoup moins explicite que celui en anglais, raison pour laquelle j'ai mis le lien en anglais.
En gros, il n'est possible d'attribuer une valeur par défaut CURRENT_TIMESTAMP qu'au PREMIER CHAMP TIMESTAMP de la table concernée. Sur le 2e on peut le faire uniquement sur un ON UPDATE et que sur le 2e.
Pour valider l'insertion automatique, soit faut faire comme je fais, c'est à dire omettre le champ de type TIMESTAMP concerné (celui qui à le CURRENT_TIMESTAMP par défaut), soit définir sa valeur à NULL si on ne l'omet pas.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#13 01-06-2011 10:51:22

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Re : Faire un tri par date, choix des variables ?

J'ai un cours personnel sur l'utilisation de TIMESTAMP et CURRENT_TIMESTAMP, c'est génial big_smile .
Bon ben comme d'habitude, j'imprime la discussion en PDF pour m'en souvenir.

Hors ligne

#14 01-06-2011 12:31:06

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Faire un tri par date, choix des variables ?

Jc a écrit :

MK, Je ne comprends pas ce que tu cherches à me démontrer.

Rien, rien, j'abondais dans ton sens.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums