Bonjour
Je suis en train d'ajouter une fonctionnalité à un programme réaliser par un autre développeur qui était en stage dans la boite où je bosse. Il s'agit d'un agenda, il marche assez bien sauf il manque une fonctionnalité indispensable, la vérification des évènements, en gros ne pas enregistrer un rendez vous dans le même créneau d'horaire.
J'ai donc décidé de l'ajouter mais j'ai un problème pour réaliser la fin de ma requete.
Voici la table qui me pose problème:
CREATE TABLE IF NOT EXISTS `evenement` (
`id_evenement` int(11) NOT NULL auto_increment,
`agenda_id` int(11) NOT NULL,
`objet` varchar(255) collate utf8_unicode_ci NOT NULL,
`description` longtext collate utf8_unicode_ci NOT NULL,
`debut` timestamp NOT NULL default '0000-00-00 00:00:00',
`fin` timestamp NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id_evenement`),
KEY `agenda_id` (`agenda_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=875
Je n'arrive pas, avec cette table à faire mon WHERE. En fait je veux vérifier dans la base de donnée, s'il y a un rdv entre le créneau que j'ai.
Voici ma requete:
<?php
$requete="SELECT * FROM evenement
LEFT JOIN agenda ON agenda.id_agenda=evenement.agenda_id
WHERE
( agenda.user_id ='19'
AND evenement.debut>='".$datedepart."'
AND evenement.fin=<'".$datefin."')";
?>
Il faut donc vérifier si durant le créneau d'horaire en question, il y a un evenement entre, ou un évènement qui comment mais ne fini pas ou un évènement qui fini durant ce créneau.
Pourriez vous m'aider svp?
Merci d'avance
Finalement avec l'aide de nombreuses personnes, voici la solution:
<?php
$requete="SELECT
count(*)
FROM
evenement e
LEFT JOIN agenda a ON a.id_agenda = e.agenda_id
WHERE
a.user_id = '1'
AND (e.debut BETWEEN '".$datedepart."' AND '".$datefin."'
OR e.fin BETWEEN '".$datedepart."' AND '".$datefin."'
OR (e.debut<'".$datedepart."' AND e.fin>'".$datefin."')
?>
leknoppix