guez
-
13 sept. 2007 à 14:23
mehdikoris
Messages postés137Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention20 juin 2012
-
13 sept. 2007 à 14:30
bonjour a tous ,j'ai un probleme sur mon calendrier.
j'ai mis le fichier .css dans la meme dossier ke le fichier .php,mais le fichier .css ne s'execute pas sur le fichier .php.
voici les fichier:
<?php setlocale(LC_ALL, 'fr_FR.ISO_8859-1', 'fr_FR','fr','fr','fra','fr_FR@euro'); // On précise à PHP que l'on travaille dans un environnement français
// On vérifie si le mois rentré par le visiteur est bien valide, sinon on affiche le mois en cours
if((empty($_GET["mois"]) || !is_numeric($_GET["mois"]) || $_GET["mois"]<=0 || $_GET["mois"]>12) && !isset($mois))
$mois=date('m') ;
elseif(!empty($_GET["mois"]) && is_numeric($_GET["mois"]) && $_GET["mois"]>0 && $_GET["mois"]<=12 && !isset($mois))
{
/* On rajoute un zéro devant le nombre du mois si c'est nécessaire*/
if(strlen($_GET["mois"])==1)
$mois='0'.$_GET["mois"] ;
else
$mois=$_GET["mois"] ;
}
elseif(isset($mois) && strlen($mois)==1)
$mois='0'.$mois ;
// On vérifie que l'année rentrée par le visiteur est bien valide, sinon on affiche l'année en cours
if((empty($_GET["annee"]) || !is_numeric($_GET["annee"])) && !isset($annee))
$annee=date('Y') ;
elseif(!isset($annee))
$annee=$_GET["annee"] ;
/* On se connecte à la base de données, et on va chercher les événements qui ont lieu pendant le mois */
// Connexion
mysql_connect("localhost", "userguez", "passwordguez") or die('Erreur lors de la connexion MySQL.') ;
mysql_select_db("calex") or die('Erreur lors de la connexion à la base de données.') ;
// Requête
$temp=mysql_query('SELECT id, titre, debut, COALESCE(fin, 0) AS fin
FROM evenements
WHERE debut
BETWEEN "'.$annee.'-'.$mois.'-01 00:00:00"
AND "'.$annee.'-'.$mois.'-'.$nombrejours.' 23:59:59" OR
fin
BETWEEN "'.$annee.'-'.$mois.'-01 00:00:00"
AND "'.$annee.'-'.$mois.'-'.$nombrejours.' 23:59:59"
ORDER BY debut ASC') or die(mysql_error()) ;
// Initialisation des variables qui contiendront les résultats
unset($cles) ;
$id=array() ;
$titres=array() ;
$datesdebut=array() ;
$heuresdebut=array() ;
$datesfin=array() ;
$heuresfin=array() ;
$nombreresultat=0 ;
// Traitement des résultats de la requête
while($donnees=mysql_fetch_assoc($temp))
{
$debut=explode(' ', $donnees['debut']) ;
if(!empty($donnees['fin'])) // On ne créé des entrées dans les tableaux de dates et heures de fin que s'il y a un résultat
{
$datesfin[$nombreresultat]=$fin[0] ;
$heuresfin[$nombreresultat]=substr($fin[1], 0, 5) ;
}
$nombreresultat++ ;
}
// On parcourt les 35 cases du calendrier
while($iterations<35)
{
// La valeur sert à se repérer dans les correspondances des jours,
$iterations++ ;
$valeur=$iterations-7*floor($iterations/7.1) ;
// Petite vérification pour les jours sans dizaines, auquel cas on ajoute un zéro initial s'il n'est pas présent
if(strlen($jour)==1)
$jour='0'.$jour ;
/* Si les deux premières lettres du jour en cours correspondent à celles de la colonne sur laquelle on est, et qu'on ne dépasse pas le
nombre de jours qu'il y a dans le mois, on augmente les variables des jours, et on affiche une case avec le jour */
if((substr(strftime('%A', $timestampreference), 0, 2)==$correspondancejourfr[$valeur] || strtolower(substr(strftime('%A', $timestampreference), 0, 2))==$correspondancejouren[$valeur])&& $jour<=$nombrejours)
{
echo '<td ' ; // Quoiqu'il arrive, on créé une cellule
if($timestampreference==mktime(1, 0, 0)) // Si on tombe sur aujourd'hui, on le signale à l'aide d'une class css
echo 'class="today" ' ;
// Si le jour actuel se trouve dans le tableau des événements
if(in_array($annee.'-'.$mois.'-'.$jour, $datesdebut) || in_array($annee.'-'.$mois.'-'.$jour, $datesfin))
{
// On regarde s'il n'y a pas plusieurs évènements pour le même jour, et on insère le code qui fera apparaître/disparaître le cadre de l'évènement
$cles=array_keys($datesdebut, $annee.'-'.$mois.'-'.$jour) ;
$cles+=array_keys($datesfin, $annee.'-'.$mois.'-'.$jour) ;
echo 'class="celluleevenement" onmouseout="javascript:this.childNodes[1].style.visibility = \'hidden\';"
onmouseover="javascript:this.childNodes[1].style.visibility = \'visible\';"' ;
}
echo '>'.$jour ; // On referme la balise ouvrante de cellule, et on indique le jour
if(in_array($annee.'-'.$mois.'-'.$jour, $datesdebut) || in_array($annee.'-'.$mois.'-'.$jour, $datesfin)) // Si on se trouve sur un jour auquel est associé un ou plusieurs évènements
{
// On créé un div qui le/les contiendra tous
echo '<div class="evenement">' ;
foreach($cles as $cle)
{
/* Si la clé est associé à un début et une fin d'évènement qui sont sur le même jour, on affiche que l'évènement se déroulera de
l'heure du début à l'heure de fin */
if(array_key_exists($cle, $datesfin) && $datesfin[$cle]==$datesdebut[$cle])
echo '<h6>'.$titres[$cle].'</h6>'.str_replace(':', 'H', $heuresdebut[$cle]).' à '.str_replace(':', 'H', $heuresfin[$cle]).'<br/>' ;
elseif(array_key_exists($cle, $datesfin) && $datesfin[$cle]==$annee.'-'.$mois.'-'.$jour) // Si la clé correspond juste à la fin d'un évènement
echo '<h6>Fin de : '.$titres[$cle].'</h6>'.str_replace(':', 'H', $heuresfin[$cle]).'<br/>' ;
else // Sinon, si c'est un évènement sans fin, ou un évènement dont la fin est à un autre jour
echo '<h6>'.$titres[$cle].'</h6>'.str_replace(':', 'H', $heuresdebut[$cle]).'<br/>' ;
}
echo '</div>' ;
}
echo '</td>' ; // On termine la cellule, et on incrémente les différentes variables
$jour++ ;
$timestampreference+=24*60*60 ;
}
else // Sinon on affiche une case vide
echo '<td> </td>' ;
// Si on arrive à la fin de la semaine, on créé une nouvelle ligne
if(($iterations%7)==0 && $jour!=$nombrejours && $iterations!=35)
echo "</tr>\n<tr>" ;
/* Si on arrive à la fin du tableau prévu mais qu'on est pas au nombre de jours qu'il y a dans le mois, on retire 7 iterations pour
repartir dans la boucle, et faire ainsi une nouvelle ligne */
if($iterations==35 && $jour<=$nombrejours)
{
echo "</tr>\n<tr>" ;
$iterations-=7 ;
}
}
?> </tr></tbody></table>
te le fichier .css:
/* CSS Document */
.calendrier {
display:inline;
padding-right:10px ;
border-width:0px ;
text-align: center;
color: #5D90B5; /* Couleur du texte dans les cases du calendrier */
border-spacing: 1px;
font-size: 1.0em;
margin: auto ;
float: left;
z-index: 100;
}
.calendrier td, .calendrier tr{
padding: 0;
}
/* Les 4 lignes qui suivent définissent la couleur de fond d'une case où il y a un évènement, ainsi que la couleur du texte. Ces mêmes couleurs
sont utilisés pour le titre de l'évènement */
.calendrier .celluleevenement, .calendrier .evenement h6{
background-color: #6F809A ;
color:#FFFFFF ;
}
.calendrier .evenement{
font-weight:normal ;
border: 1px solid #60738B; /* Largeur, type et couleur du bord du cadre qui contient l'évènement */
background-color: #F4F9FD; /* Couleur de fond du cadre qui contient l'évènement */
color: #33CCCC; /* Couleur du texte dans le cadre qui contient l'évènement */
z-index: 10;
padding: 2px;
margin-top:1px;
}
.calendrier td {
border: none;
background-color: #CEE3F4; /* Couleur de fond des cases du calendrier */
width:25px ;
}
.calendrier td:hover {
background-color:#A3C3E0 ; /* Couleur de fond des cases lors du survol de la souris */
}
.calendrier .today{
font-weight:bold ;
border: 1px solid #60738B; /* Largeur, type et couleur du bord de la case du calendrier qui correspond à aujourd'hui */
}