Calendrier/agenda

Petit nouveau ! | 3 Messages

07 août 2011, 13:54

Bonjour,
Je suis en train de réaliser une application de gestion de clientelle dans lequel il y a un agenda.
J'ai choisi de faire un calendrier à la semaine avec des trenches horaires.
J'ai réussi à afficher mon calendrier comme je le voulais à savoir en première ligne le jour, en deuxième ligne la date et ensuite les ligne spour les tranche horaire.
Je stock chacune des réservations en base de donnée.
J'aimerais pouvoir griser les boutons radio correspondants aux dates déjà réservées et donc déjà présentes en base de donnée.
ça fait déjà une semaine que je suis dessus, je suis à cours d'idée.
Voici mon script :
<H3>GESTION RENDEZ-VOU</H3>
<?PHP
IF(!EMPTY($SessionIdSess))
{
SWITCH($Action)
{
CASE "AjoutSeance";
{
ECHO '<FORM ACTION="index.php" METHOD="post">';
ECHO '<SELECT NAME="ClefCli">';
$REQClient =& $Connexion->QUERY("SELECT CONCAT(Nom,' ',Prenom,' - ',Ville) AS Client,ClefCli FROM $TBLClients WHERE ClefUti='$SessionClefSess'");
WHILE($RESClient =& $REQClient->fetchRow(DB_FETCHMODE_ASSOC))
{
  ECHO '<OPTION VALUE="'.$RESClient[ClefCli].'"> '.$RESClient[Client].' </OPTION>';
}
ECHO '</SELECT>';
///Calendrier
if(isset($_GET["lundi"])) // Une semaine précise est demandée
{
	$ts = $_GET["lundi"];
}
else //On prendra la semaine d'aujourd'hui
{
	$day = (date('w') - 1); //Jour dans la semaine... Lundi = 0
	$diff = $day * 86400; //Différence en secondes par rapport au lundi
	$ts = (mktime() - $diff); //On récupère le TimeStamp du lundi
	//$ts = mktime();
}
//Initialisation des variables
$week = date('W', $ts); //Semaine en cours
$avant = $ts - 604800; //TimeStamp Lundi précédant
$apres = $ts + 604800; //TimeStamp Lundi suivant
ECHO '<TABLE>
<TR>
<TD VALIGN="middle"><B>Lundi</B></TD>
<TD VALIGN="middle"><B>Mardi</B></TD>
<TD VALIGN="middle"><B>Mercredi</B></TD>
<TD VALIGN="middle"><B>Jeudi</B></TD>
<TD VALIGN="middle"><B>Vendredi</B></TD>
<TD VALIGN="middle"><B>Samedi</B></TD>
<TD VALIGN="middle"><B>Dimanche</B></TD>
		</tr>
		<tr>';
//Pour chaque jour de la semaine... Lundi = 1
			for($i=1;$i<8;$i++) 
			{
//Il s'agit d'aujourd'hui!
				if( ($i == date('w')) && ($week == date('W'))) 
				{
ECHO '<td Valign="middle"><I>'.date("d M Y",$ts).'</I></td>';
				}
				else
				{
						echo '<TD VALIGN="middle">'.date("d M Y",$ts).'</TD>';
				}
//On passe au jour suivant
				$ts += 86400; 
			}
ECHO '</TR>';
ECHO '<BR>';
$DateD = DATE("Y-m-d",$ts);
$TBUHoraireLS = ARRAY(
1 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 09:00:00' DISABLED>09:00\n",
2 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 09:45:00' DISABLED>09:45\n",
3 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 10:30:00' DISABLED>10:30\n",
4 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 11:15:00' DISABLED>11:15\n",
5 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 12:00:00' DISABLED>12:00\n",
6 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 13:45:00' DISABLED>13:45\n",
7 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 14:30:00' DISABLED>14:30\n",
8 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 15:15:00' DISABLED>15:15\n",
9 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 16:00:00' DISABLED>16:00\n",
10 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 16:45:00' DISABLED>16:45\n",
11 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 17:30:00' DISABLED>17:30\n",
12 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='$DateD 18:15:00' DISABLED>18:15\n");
$TBUHoraire = ARRAY(
1 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='09:00:00'>09:00\n",
2 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='09:45:00'>09:45\n",
3 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='10:30:00'>10:30\n",
4 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='11:15:00'>11:15\n",
5 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='12:00:00'>12:00\n",
6 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='13:45:00'>13:45\n",
7 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='14:30:00'>14:30\n",
8 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='15:15:00'>15:15\n",
9 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='16:00:00'>16:00\n",
10 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='16:45:00'>16:45\n",
11 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='17:30:00'>17:30\n",
12 => "<INPUT TYPE='radio' NAME='DateRdv' VALUE='18:15:00'>18:15\n");

$D = DATE("Y-m",$ts);
$REQSeance =& $Connexion->QUERY("SELECT $TBLRDV.Date AS DateRdv FROM $TBLRDV,$TBLClients WHERE $TBLRDV.Date LIKE '$D%' AND $TBLRDV.ClefCli=$TBLClients.ClefCli AND $TBLClients.ClefUti='$SessionClefSess'");
FOR($J=1;$J<12;$J++)
{
ECHO '<TR>';
FOR($K=1;$K<8;$K++)
{
WHILE($RESSeance =& $REQSeance->fetchRow(DB_FETCHMODE_ASSOC))
{
IF($RESSeance[DateRdv]=="2011-08-15 09:00:00")
{
$LS[$J][$K] = 1;
}
ELSE
{
$LS[$J][$K] = 0;
}
}
IF($LS[$J][$K]==0)
{
ECHO '<TD VALIGN="middle">'.$TBUHoraire[$J];
ECHO '</TD>';
}
ELSE
{
ECHO '<TD VALIGN="middle">'.$TBUHoraireLS[$J];
ECHO '</TD>';
}
}
ECHO '</TR>';
}
ECHO '<TR>';
ECHO '<TD VALIGN="middle" COLSPAN="2"><A HREF="index.php?Page=Rdv&Action=AjoutSeance&lundi='.$avant.'">Semaine Précédente</A></TD>';
ECHO '<TD VALIGN="middle">Semaine '.$week.'</TD>';
ECHO '<TD VALIGN="middle" COLSPAN="2"><A HREF="index.php?Page=Rdv&Action=AjoutSeance&lundi='.$apres.'">Semaine Suivante</A></TD>';
ECHO '</TR>';	
ECHO '</table>';
ECHO '<INPUT TYPE="hidden" NAME="Page" VALUE="Rdv">';
ECHO '<INPUT TYPE="hidden" NAME="Action" VALUE="AjoutSeance2">';
ECHO '<INPUT TYPE="submit" NAME="Valider" VALUE="Réserver">';
ECHO '</FORM>';
}
BREAK;
CASE "AjoutSeance2";
{
  $ClefCli = $_POST[ClefCli];
  $DateRdv = $_POST[DateRdv];
$REQInsertRdv =& $Connexion->QUERY("INSERT INTO $TBLRDV VALUES('','$ClefCli','$DateRdv',\"$Commentaire\")");
IF(DB::isError($REQInsertRdv))
{
?>
<SCRIPT>
alert('Erreur d\'insertion du RDV')
</SCRIPT>
<?php
}
ELSE
{
?>
<SCRIPT>
alert('Rendez-vous du <?=DateFR($DateRdv,0)?> réservé !')
</SCRIPT>
<?php
}
PRINT("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=index.php\">");
}
BREAK;
DEFAULT;
{
?>
<A HREF="index.php?Page=Rdv&Action=AjoutSeance">Ajouter une nouvelle séance</A>
<?
}
BREAK;
}
}
ELSE
{
   INCLUDE("Erreur.php");
}
?>
Merci pour vos suggessions et votre aide qui me seront précieuses !


Etann

Petit nouveau ! | 3 Messages

08 août 2011, 14:27

pas de sollutions ?

Eléphant du PHP | 73 Messages

09 août 2011, 17:52

je n'ai pas vraiment regardé ton code mais ce que je peux te dire, c'est que pour griser un input tu peux utiliser un truc du genre DISABLED dans chaque input :
if ( // jour deja réservé ) {
 echo '<input type=radio name=machin value=machin DISABLED> truc';
} else {
 echo '<input type=radio name=machin value=machin> truc';
}
le DISABLED grisera le bouton radio et désactivera le champ dans l'envoi du formulaire

Petit nouveau ! | 3 Messages

09 août 2011, 18:39

Salut,
Merci de ta réponse,
Mais oui, ça je l'utilise déjà.
Mon problème vient d'un peu plus en amon.
J'utilise 2 boucles imbriqués pour afficher mes trenches horaires dans les colonnes correspondant au jour.
ça, ça fonctione.
Parcontre, je récupère mes données de ma base de donnée concernant la réservation déjà prise et je n'arrive pas à griser la case correspondante à ce jour et à cette trenche horaire.