Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2011, 20h06   #1
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
Par défaut Question sur algorithme d'enregistrement et d'affichage

Bonjour à tous,

J'ai un souci d'algorithme et non pas de programmation.

Je m'explique :

J'ai une table qui contient différents évènements, certains évènements sont datés, d'autres ne le sont pas.

Pour afficher les évènements datés, pas de problème, je les affiche avec une simple requête qui contient un ORDER BY date_evenement.

J'obtiens alors une liste avec des évènements, les autres évènements, ceux qui ne sont pas datés, sont dans une liste à côté.

Mon plugin me permet de déplacer un évènement non daté dans la liste des évènements datés.

Je me pose la question suivante :

Comment afficher la liste des évènements datés incluant les évènements non datés (la date est en fait 0000-00-00), ils seront classés par défaut tout en dessous alors qu'il faut les classer là où on les glisse.

Je pourrais utiliser deux champs supplémentaires :

- event before et event after mais à nouveau, comment afficher la liste avec les évènements dans l'ordre.

Exemple :

2011-10-01 Fête du moulin
2010-11-10 Fête du vin
2007-12-02 Fête du raisin

Je viens ajouter dans cette liste la fête du Web dont la date est 0000-00-00, je le mets entre la fête du moulin et la fête du vin.

1) comment l'enregistrer dans la bd (pas niveau code)
2) comment l'afficher à l'écran dans le bon ordre ?

Pour la question 2, il serait simple d'utiliser une chaine sql qui classe par date, j'aurais alors la fête du web en dernier, alors qu'il devrait apparaître en 2e position.

Merci d'avance pour l'aide.

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 20h21   #2
Membre confirmé
 
Avatar de provirus
 
Homme Simon Levesque
Consultant informatique
Inscription : février 2009
Messages : 97
Détails du profil
Informations personnelles :
Nom : Homme Simon Levesque
Âge : 26
Localisation : Canada

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : février 2009
Messages : 97
Points : 279
Points : 279
Bonjour,

Une idée qui me vient comme ça serait de mettre une date qui est supérieure de quelques secondes à l’évènement précédent. Il faudrait avoir un champ qui dit quel évènement vient avant comme tu avais mentionné, mais elle ne servirait pas à l'affichage. Elle servirait à mettre à jour l'entrée si l'évènement précédent change de date pour ne pas oublier de changer la date à un temps supérieure à la nouvelle date.

Avec cela, pour afficher, il suffirait d'ordonner comme tu fais, mais tu caches les dates pour les entrées avec une valeur à l’évènement précédent.
__________________
Blog - Tutoriels vidéos - Espace DVP
provirus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 20h21   #3
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 329
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 329
Points : 1 657
Points : 1 657
Pourquoi ne pas tout simplement mettre une date à ta fête du web ?
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 20h24   #4
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
Citation:
Envoyé par Seb33300 Voir le message
Pourquoi ne pas tout simplement mettre une date à ta fête du web ?
Salut,

Merci pour ta réponse.

Je vais commencer par répondre à ta réponse et relire attentivement la réponse de provirus (que je remercie au passage).

Je ne peux pas donner de date pour la fête du web (évènement inventé bien sûr) car nous ne connaissons pas la date de cette fête.

En réalité, on parle d'examens médicaux, on ne sait pas toujours quand l'examen a été effectué.

Merci encore pour l'aide.
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 00h55   #5
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 329
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 329
Points : 1 657
Points : 1 657
Bah du coup, il faut alors y mettre une date prévisionnelle qui sera éventuellement mise à jour plus tard

il y a aussi la possibilité d'ajouter une champ supplémentaire booléen "date_previsionnelle" ou "afficher_date" qui va déterminer si la date doit etre affiché ou pas.
Du coup, si une date est renseignée mais qu'elle ne doit pas être affiché, alors elle ne sera pas visible. Mais tu pourras quand même trier sur la date.
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h17   #6
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 240
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 240
Points : 1 048
Points : 1 048
Merci pour vos réponses.

Voici ce que me propose mon collègue :

Citation:
On a à gauche:

ID1 -- Evénement daté: 2010-07-01
ID2 -- Evénement daté: 2010-08-12

On a à droite:

ID3 -- Evénement non daté 1: avant 2010-07-01
ID4 -- Evénement non daté 2: entre 2010-07-01 et 2010-08-12
ID5 -- Evénement non daté 3: entre 2010-07-01 et 2010-08-12
ID6 -- Evénement non daté 4: après 2010-08-12

En définitive il faut arriver à la ligne du temps complète suivante:

ID3-- Evénement non daté 1: avant 2010-07-01
ID1 -- Evénement daté: 2010-07-01
ID4 -- Evénement non daté 2: entre 2010-07-01 et 2010-08-12
ID5 -- Evénement non daté 3: entre 2010-07-01 et 2010-08-12
ID2 -- Evénement daté: 2010-08-12
ID6 -- Evénement non daté 4: après 2010-08-12

La manière de faire la plus simple est sans-doute celle-ci (on ne met dans "event-before" ou "event-after" que des événements datés:

+------------+------------+------------+------------+------------+------------+------------+
| |ID1 |ID2 |ID3 |ID4 |ID5 |ID6 |
+------------+------------+------------+------------+------------+------------+------------+
|event_date |2010-07-01 |2010-08-12 |NULL |NULL |NULL |NULL |
+------------+------------+------------+------------+------------+------------+------------+
|event_before|NULL |NULL |NULL |ID1 |ID1 |ID2 |
+------------+------------+------------+------------+------------+------------+------------+
|event_after |NULL |NULL |ID1 |ID2 |ID2 |NULL |
+------------+------------+------------+------------+------------+------------+------------+
|position |2 |5 |1 |3 |4 |6 |
+------------+------------+------------+------------+------------+------------+------------+

Ou alternativement, on crée un chaîne au sens strict et on se sert des id pour classer les évènements non datés où il y ambiguité:

+------------+------------+------------+------------+------------+------------+------------+
| |ID1 |ID2 |ID3 |ID4 |ID5 |ID6 |
+------------+------------+------------+------------+------------+------------+------------+
|event_date |2010-07-01 |2010-08-12 |NULL |NULL |NULL |NULL |
+------------+------------+------------+------------+------------+------------+------------+
|event_before|ID3 |ID5 |NULL |ID1 |ID4 |ID2 |
+------------+------------+------------+------------+------------+------------+------------+
|event_after |ID4 |ID6 |ID1 |ID5 |ID2 |NULL |
+------------+------------+------------+------------+------------+------------+------------+
|position |2 |5 |1 |3 |4 |6 |
+------------+------------+------------+------------+------------+------------+------------+
Je ne vois toujours pas comment je peux procéder, même avec son explication.
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h42.


 
 
 
 
Partenaires

Hébergement Web