par
doncandid » 26 juin 2011, 00:10
bonjour, depuis quelques temps je recherche a faire un calendrier en php. n'ayant pas assez de connaissance pour le faire de moi meme j'ai cherché un script. j'en ai trouvé un qui me convenais car il me semblais aisé a modifié sur un plan esthétique.
code du calendrier:
<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<table>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois-1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><< <?php echo $tab_mois[$num_mois-1]; ?></a> <?php echo $tab_mois[$num_mois]; ?> <a href="index.php?mois=<?php echo $num_mois+1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><?php echo $tab_mois[$num_mois+1]; ?> >></a></td></tr>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an-1; ?>" rel="nofollow"><< <?php echo $num_an-1; ?></a> <?php echo $num_an; ?> <a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an+1; ?>" rel="nofollow"><?php echo $num_an+1; ?> >></a></td></tr>
<?php
echo'<tr>';
for($i = 1; $i <= 7; $i++){
echo('<td>'.$tab_jours[$i].'</td>');
}
echo'</tr>';
for($i=0;$i<6;$i++) {
echo "<tr>";
for($j=0;$j<7;$j++) {
echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
}
echo "</tr>";
}
?>
</table>
Apres avoir essayé de comprendre comment il fonctionnais, j'ai voulu le connecter a une base de donnée pour mettre en évidence les jours ou il y a un evenement. Pour cela j'utilise une table sql ( id date titre contenu ) avec la date au format YYYY-MM-JJ
donc voila mon code apres modification
<?php
include("config/config.php");
mysql_connect("$host", "$user_bdd", "$pass_bdd");
mysql_select_db("$bdd");
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<table>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois-1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><< <?php echo $tab_mois[$num_mois-1]; ?></a> <?php echo $tab_mois[$num_mois]; ?> <a href="index.php?mois=<?php echo $num_mois+1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><?php echo $tab_mois[$num_mois+1]; ?> >></a></td></tr>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an-1; ?>" rel="nofollow"><< <?php echo $num_an-1; ?></a> <?php echo $num_an; ?> <a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an+1; ?>" rel="nofollow"><?php echo $num_an+1; ?> >></a></td></tr>
<?php
$retour = mysql_query("SELECT * FROM calendrier WHERE date LIKE '$num_an-$num_moi%'") or die('erreur');
echo'<tr>';
for($i = 1; $i <= 7; $i++){
echo('<td>'.$tab_jours[$i].'</td>');
}
echo'</tr>';
for($i=0;$i<6;$i++) {
echo "<tr>";
for($j=0;$j<7;$j++) {
$datewhile = $num_an.'-'.$num_moi.'-'.$tab_cal[$i][$j];
while ($donnees = mysql_fetch_array($retour)) {
if ($donnees['date'] == $datewhile){
echo "<td>youpi</td>";
} else {
echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
}}}
echo "</tr>";
}
?>
</table>
<?php
mysql_close();
?>
la partie modifiée:
<?php
$retour = mysql_query("SELECT * FROM calendrier WHERE date LIKE '$num_an-$num_moi%'") or die('erreur');
echo'<tr>';
for($i = 1; $i <= 7; $i++){
echo('<td>'.$tab_jours[$i].'</td>');
}
echo'</tr>';
for($i=0;$i<6;$i++) {
echo "<tr>";
for($j=0;$j<7;$j++) {
$datewhile = $num_an.'-'.$num_moi.'-'.$tab_cal[$i][$j];
while ($donnees = mysql_fetch_array($retour)) {
if ($donnees['date'] == $datewhile){
echo "<td>youpi</td>";
} else {
echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
}}}
echo "</tr>";
}
?>
Pour mes essai j'ai voulu que pour le jour ou il y a un evenement sa remplace son numero par youpi ( car apres je pourrait le modifier pour en faire ce que je veux )
Mais le probleme est que la requete sql se passe bien, mais qu'aucun jour ne se mette en évidence alors qu'il y en a dans la base de donnée. Pensant que sa pouvais venir de zero qui manquait dans les variable pour les jours et moi écrit avec un seul chiffre, j'ai mit moi meme des 0 avec de mettre les variables mais rien n'y fait toujours aucune case de mise en évidence.
Donc si quelqu'un pourrait m'aider sa serait cool
bonjour, depuis quelques temps je recherche a faire un calendrier en php. n'ayant pas assez de connaissance pour le faire de moi meme j'ai cherché un script. j'en ai trouvé un qui me convenais car il me semblais aisé a modifié sur un plan esthétique.
code du calendrier:
[php]<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<table>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois-1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><< <?php echo $tab_mois[$num_mois-1]; ?></a> <?php echo $tab_mois[$num_mois]; ?> <a href="index.php?mois=<?php echo $num_mois+1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><?php echo $tab_mois[$num_mois+1]; ?> >></a></td></tr>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an-1; ?>" rel="nofollow"><< <?php echo $num_an-1; ?></a> <?php echo $num_an; ?> <a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an+1; ?>" rel="nofollow"><?php echo $num_an+1; ?> >></a></td></tr>
<?php
echo'<tr>';
for($i = 1; $i <= 7; $i++){
echo('<td>'.$tab_jours[$i].'</td>');
}
echo'</tr>';
for($i=0;$i<6;$i++) {
echo "<tr>";
for($j=0;$j<7;$j++) {
echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
}
echo "</tr>";
}
?>
</table>[/php]
Apres avoir essayé de comprendre comment il fonctionnais, j'ai voulu le connecter a une base de donnée pour mettre en évidence les jours ou il y a un evenement. Pour cela j'utilise une table sql ( id date titre contenu ) avec la date au format YYYY-MM-JJ
donc voila mon code apres modification
[php]<?php
include("config/config.php");
mysql_connect("$host", "$user_bdd", "$pass_bdd");
mysql_select_db("$bdd");
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];
// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) { $num_mois = 1; $num_an = $num_an + 1; }
// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));
// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");
$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres
// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
for($j=0;$j<7;$j++) {
if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
}
}
?>
<table>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois-1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><< <?php echo $tab_mois[$num_mois-1]; ?></a> <?php echo $tab_mois[$num_mois]; ?> <a href="index.php?mois=<?php echo $num_mois+1; ?>&annee=<?php echo $num_an; ?>" rel="nofollow"><?php echo $tab_mois[$num_mois+1]; ?> >></a></td></tr>
<tr><td colspan="7" align="center"><a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an-1; ?>" rel="nofollow"><< <?php echo $num_an-1; ?></a> <?php echo $num_an; ?> <a href="index.php?mois=<?php echo $num_mois; ?>&annee=<?php echo $num_an+1; ?>" rel="nofollow"><?php echo $num_an+1; ?> >></a></td></tr>
<?php
$retour = mysql_query("SELECT * FROM calendrier WHERE date LIKE '$num_an-$num_moi%'") or die('erreur');
echo'<tr>';
for($i = 1; $i <= 7; $i++){
echo('<td>'.$tab_jours[$i].'</td>');
}
echo'</tr>';
for($i=0;$i<6;$i++) {
echo "<tr>";
for($j=0;$j<7;$j++) {
$datewhile = $num_an.'-'.$num_moi.'-'.$tab_cal[$i][$j];
while ($donnees = mysql_fetch_array($retour)) {
if ($donnees['date'] == $datewhile){
echo "<td>youpi</td>";
} else {
echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
}}}
echo "</tr>";
}
?>
</table>
<?php
mysql_close();
?>[/php]
la partie modifiée:
[php]<?php
$retour = mysql_query("SELECT * FROM calendrier WHERE date LIKE '$num_an-$num_moi%'") or die('erreur');
echo'<tr>';
for($i = 1; $i <= 7; $i++){
echo('<td>'.$tab_jours[$i].'</td>');
}
echo'</tr>';
for($i=0;$i<6;$i++) {
echo "<tr>";
for($j=0;$j<7;$j++) {
$datewhile = $num_an.'-'.$num_moi.'-'.$tab_cal[$i][$j];
while ($donnees = mysql_fetch_array($retour)) {
if ($donnees['date'] == $datewhile){
echo "<td>youpi</td>";
} else {
echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
}}}
echo "</tr>";
}
?>[/php]
Pour mes essai j'ai voulu que pour le jour ou il y a un evenement sa remplace son numero par youpi ( car apres je pourrait le modifier pour en faire ce que je veux )
Mais le probleme est que la requete sql se passe bien, mais qu'aucun jour ne se mette en évidence alors qu'il y en a dans la base de donnée. Pensant que sa pouvais venir de zero qui manquait dans les variable pour les jours et moi écrit avec un seul chiffre, j'ai mit moi meme des 0 avec de mettre les variables mais rien n'y fait toujours aucune case de mise en évidence.
Donc si quelqu'un pourrait m'aider sa serait cool