555clR
Messages postés36Date d'inscriptionmardi 23 novembre 2010StatutMembreDernière intervention 4 avril 2013
-
19 nov. 2011 à 02:22
555clR
Messages postés36Date d'inscriptionmardi 23 novembre 2010StatutMembreDernière intervention 4 avril 2013
-
21 nov. 2011 à 05:50
Bonjour !
voilà quelques jours que je réfléchis à une manière de questionner une base de données.
Dans une table d'évènements, on trouve un champ date, un champ durée(qui peut s'étendre sur plusieurs jours).
l'idée serait d'afficher les événements d'un jour particulier, sachant que la fin de certains évènements est après le début de la journée et d'autres se terminent après la fin.
Je ne vois pas comment tourner la requête.
j'avais d'abord fait comme ça :
'SELECT *
FROM events
WHERE (
(MONTH(date_debut_event)='.$numero_mois.'
OR MONTH(date_fin_event)='.$numero_mois.')
AND (YEAR(date_debut_event) = '.$annee.'
OR YEAR(date_fin_event) = '.$annee.'))
&& '.$jour_lu.' BETWEEN UNIX_TIMESTAMP(date_debut_event) AND UNIX_TIMESTAMP(date_fin_event)
ORDER BY date_debut_event';
Et puis j'ai finalement fait ça :
'SELECT *
FROM
evenements E,
evnmt_type T
WHERE
day(E.event_date_debut) = '.$this->_timstp_jr['jr'].'
&& month(E.event_date_debut) = '.$this->_timstp_jr['mois'].'
&& year(E.event_date_debut) = '.$this->_timstp_jr['an'].'
&& E.event_type = T.evnmt_type_id
ORDER BY hour(E.event_date_debut)';
mais ça ne filtre pas les résultats comme il faudrait (la sélection ne se fait qu'à partir du champ date de début d'evenement).
auriez-vous une idée? Merci d'avance de votre aide
555clR
Messages postés36Date d'inscriptionmardi 23 novembre 2010StatutMembreDernière intervention 4 avril 2013 19 nov. 2011 à 18:00
Bonjour cgandco,
pour répondre à tes questions :
1/ mon champ mysql pour la date de début est de type datetime, et mon champs pour la durée est de type varchar... et puis après récupération je transforme.
Je devrais sans doute mettre le 1er en type timestamp, et le second en secondes/mn... ce serait plus logique en effet.
2/ je me suis sans doute mal exprimée.
L'idée est d'afficher un jour, et visualiser tous les évènements qui sont dans cette journée.
par exemple :
je veux voir ce qu'il se passe le 12juillet...
Je verrais de ma base de données tous les évènements qui se déroulent le 12 (qui commencent et terminent), mais aussi tous les événements qui ont débuté avant le 12 et qui se terminent après... c'est bien là mon pb. comment calculer ça?
Merci en tous les cas de ta réponse et de ton intérêt. Bonne fin de journée
555clR
Messages postés36Date d'inscriptionmardi 23 novembre 2010StatutMembreDernière intervention 4 avril 2013 19 nov. 2011 à 20:02
oui, c'est exactement ça. Je vais tourner un peu autour ce soir mais je crois que c'est exactement ce que je cherche à faire.
je ne parvenais pas à trouver un moyen d'y arriver.
Je te remercie beaucoup.
Je reviendrais par là lorsque j'aurais qqchose d'opérationnel.
merci encore et bonne soirée également.
PS : et sinon oui pour mysql, annee/mois/jour tjs.
555clR
Messages postés36Date d'inscriptionmardi 23 novembre 2010StatutMembreDernière intervention 4 avril 2013 21 nov. 2011 à 05:50
J'ai mit le temps mais j'ai finit par faire :
en php pour récupérer le jour qui m'intéresse :
//affichage du jour (à 00:00:00)
if(!isset($_GET['d']) && !isset($_GET['m']) && !isset($_GET['y']))
{
// Si rien dans l'url, récupération de la date du jour
$timestamp_jour = @mktime(0, 0, 0, date('m'), date('d'), date('Y'));
}
else
{
//sinon récupération de la date envoyée ds url
$timestamp_jour = @mktime(0, 0, 0, $_GET['m'], $_GET['d'], $_GET['y']);
}
et ma requête :
(la durée de l'évenement est enregistrée en time dans ma base de données)
SELECT *
FROM evenements E, evnmt_type T
WHERE
(date(E.event_date_debut) <= date("'.$timestamp_transfo_date.'"))
&& (date("'.$timestamp_transfo_date.'") < date(DATE_ADD(DATE_ADD(E.event_date_debut,INTERVAL E.event_duree HOUR_SECOND), INTERVAL 1 DAY)))
&& E.event_type = T.evnmt_type_id
ORDER BY day(hour(E.event_date_debut))
tout marche impec.
je suis aux anges
Je te remercie encore de ton aide précieuse cgandco: manquant cruellement de logique, je n'aurais jamais trouvé seule.