rebonjour à tous, je suis en train de créer un agenda en ligne sur des bases trouvées à droite et à gauche. Mon problème est dans un test si un rdv existe déjà sur une plage horaire pour un membre. Mon souci est que le test se fait pour toute la base. Donc je ne peux créer qu'un rendez-vous par heure pour n'importe quel membre.
- Le membre "A" a créé un rdv le 29/02/2008 de 14h à 17h
- Le membre "B" veux créer un rdv le 29/02/2008 de 14h à 17h, il ne peut pas.

je poste un bout du code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
	function rtrn_month_daynb($dmonth, $dyear) 
    {      
        return date("t",mktime(0,0,0,$dmonth,1,$dyear)); //caractère t =>nombre de jours dans le mois
    }
 
    veriflogin();
 
    if(isset($_POST['valider']))
    {		
		$debut=mktime($_POST['heure'],$_POST['minute'],0,$_POST['mois'],$_POST['jour'],$_POST['an']);
 
		if($_POST['choix']=="choix1")
   		  	$fin=mktime($_POST['heure']+$_POST['heure1'],$_POST['minute']+$_POST['minute1'],0,$_POST['mois'],$_POST['jour']+$_POST['jour1'],$_POST['an']);
		else
			$fin=mktime($_POST['heure2'],$_POST['minute2'],0,$_POST['mois2'],$_POST['jour2'],$_POST['an2']);
 
        if($debut>$fin)
			$msg="Les valeurs saisies sont invalides. La date de fin de rendez-vous précéde celle du début.";
		elseif($debut==$fin)
			$msg="Veuillez saisir la durée du rendez vous.";
		else
        {
// JE M'ARRACHE LES CHEVEUX ICI, JE VOIS PAS L'ERREUR
        	$sql = "SELECT intitule_rdv, UNIX_TIMESTAMP(date_debut) as stamp_deb, UNIX_TIMESTAMP(date_fin) as stamp_fin FROM rdv "
        	."WHERE id_rdv like '".$id."-%' "
        	//ca commence avant et ca fini apres le début
			."AND ('$debut'<=UNIX_TIMESTAMP(date_debut) AND '$fin'>UNIX_TIMESTAMP(date_debut)) "
			//ca commence entre les 2
			."OR ('$debut'>=UNIX_TIMESTAMP(date_debut) AND '$fin'<UNIX_TIMESTAMP(date_fin));";
 
        	$req=mysql_query($sql,$connec) or die("erreur rere-> ".mysql_error());
 
        	//si le rdv empiete sur un autre
    		if (mysql_num_rows($req)!=0)
    		{
    			$rec=mysql_fetch_array($req);
    			$msg="$id - Impossible de créer le rendez-vous : <br>"
    				."le créneau fourni empiète sur celui du rendez-vous ".$rec['intitule_rdv']."<br>"
					."prévu ".afficheCreneau($rec['stamp_deb'],$rec['stamp_fin']).".";
    		}
    		else
    		{
        		//ajout du rdv
        		$query="select max(id_rdv) as id_rdv from rdv where id_rdv like '".$id."-%';";
        		$exec=mysql_query($query,$connec) or die("erreur -> ".mysql_error());
        		$rec=mysql_fetch_array($exec);
        		$POS= strstr($rec['id_rdv'],"-");
        		$numsuivant=substr($POS,1);
        		$numsuivant=$numsuivant+1;
        		$numsuivant=sprintf("%04d",$numsuivant);
        		$rdvsuivant=$id."-".$numsuivant;
        		$datedeb=date("Y-m-d H:i:s",$debut);
        		$datefin=date("Y-m-d H:i:s",$fin);
        		if ($_POST['titrerdv']=="")
        		{
        			$_POST['titrerdv']="pas de titre";
        		}
        		$query="INSERT INTO `rdv` ( `id_rdv` , `intitule_rdv` , `desc_rdv` , `date_debut` , `date_fin` )	VALUES ('".$rdvsuivant."', '".$_POST['titrerdv']."', '".$_POST['desc']."', '".$datedeb."', '".$datefin."');";
        		$exec=mysql_query($query,$connec) or die("erreur -> ".mysql_error());