Vous n'êtes pas identifié(e).
Pages :: 1
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.
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
Saluton,
Tout est là : http://mysql.developpez.com/faq/?page=S … S_comparer
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
Super, merci
Hors ligne
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
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
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
Hors ligne
Rahh, j'avais raté le message de Maljuna Kris. Bon ben redirection le petit manuel pour voir cela
Hors ligne
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
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
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
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.
++
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
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
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
J'ai un cours personnel sur l'utilisation de TIMESTAMP et CURRENT_TIMESTAMP, c'est génial .
Bon ben comme d'habitude, j'imprime la discussion en PDF pour m'en souvenir.
Hors ligne
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
Pages :: 1