Calendrier

jordxn Messages postés 356 Date d'inscription   Statut Membre Dernière intervention   -  
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Ma question est simple,
Comment faire pour relier un evenement (annee , jour et mois) a ce calendrier ?
Je n'y arrives pas...

Merci de bien vouloir m'aider.




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gestion de calendrier | Calendrier</title>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>
<h1>Calendrier</h1>
<br/>
<?php
function getEventsDate($mois, $annee) {
$result = array();

include('config.php');

$sql = 'SELECT DISTINCT jour_taches, titre_taches FROM calendrier c, taches t WHERE mois_taches='.$mois.' AND annee_taches='.$annee.' AND c.id_taches = t.id_taches ORDER BY jour_taches';

while ($row=$sql->fetch){
$result[] = $row[0];
$result[] = $row[1];
}

return $result;
}

function afficheEvent($i, $event) {
$texte = ""; $suivant = false;

foreach($event as $cle => $element) {
if($suivant) {
$texte .= $element."<br/>";
}
if($element == $i) {
$suivant = true;
} else {
$suivant = false;
}
}

return $texte;
}



if(isset($_GET['m']) && isset($_GET['y']) && is_numeric($_GET['m']) && is_numeric($_GET['y'])) {
$timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);

$event = getEventsDate($_GET['m'], $_GET['y']); // Récupère les jour où il y a des évènements
}
else { // Si on ne récupère rien dans l'url, on prends la date du jour
$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));

$event = getEventsDate(date('m'), date('Y')); // Récupère les jour où il y a des évènements
}


// === Si le mois correspond au mois actuel et l'année aussi, on retient le jour actuel pour le griser plus tard (sinon le jour actuel ne se situe pas dans le mois)
if(date('m', $timestamp) == date('m') && date('Y', $timestamp) == date('Y')) $coloreNum = date('d');

$m = array("01" => "Janvier", "02" => "Février", "03" => "Mars", "04" => "Avril", "05" => "Mai", "06" => "Juin", "07" => "Juillet", "08" => "Août", "09" => "Septembre", "10" => "Octobre", "11" => "Novembre", "12" => "Décembre");
$j = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');

$numero_mois = date('m', $timestamp);
$annee = date('Y', $timestamp);

if($numero_mois == 12) {
$annee_avant = $annee;
$annee_apres = $annee + 1;
$mois_avant = $numero_mois - 1;
$mois_apres = 01;
}
elseif($numero_mois == 01) {
$annee_avant = $annee - 1;
$annee_apres = $annee;
$mois_avant = 12;
$mois_apres = $numero_mois + 1;
}
else {
$annee_avant = $annee;
$annee_apres = $annee;
$mois_avant = $numero_mois - 1;
$mois_apres = $numero_mois + 1;
}

// 0 => Dimanche, 1 => Lundi, 2 = > Mardi...
$numero_jour1er = date('w', $timestamp);

// Changement du numéro du jour car l'array commence à l'indice 0
if ($numero_jour1er == 0) $numero_jour1er = 6; // Si c'est Dimanche, on le place en 6ème position (après samedi)
else $numero_jour1er--; // Sinon on mets lundi à 0, Mardi à 1, Mercredi à 2...
?>

<table class="calendrier">
<caption><?php echo '<a href="?m='.$mois_avant.'&y='.$annee_avant.'"><<</a> '.$m[$numero_mois].' '.$annee.' <a href="?m='.$mois_apres.'&y='.$annee_apres.'">>></a>'; ?></caption>

<tr><th>Lu</th><th>Ma</th><th>Me</th><th>Je</th><th>Ve</th><th>Sa</th><th>Di</th></tr>
<?php
// Ecriture de la 1ère ligne
echo '<tr>';
// Ecriture de colones vides tant que le mois ne démarre pas
for($i = 0 ; $i < $numero_jour1er ; $i++) { echo '<td></td>'; }
for($i = 1 ; $i <= 7 - $numero_jour1er; $i++) {
// Ce jour possède un événement
if (in_array($i, $event)) {
echo '<td class="jourEvenement';

if(isset($coloreNum) && $coloreNum == $i) echo ' lienCalendrierJour';

echo '"><a href="evenement.php?d='.$i.'/'.$numero_mois.'/'.$annee.'" class="info">'.$i.'<span>'.afficheEvent($i, $event).'</span></a></div></td>';
} else {
echo '<td ';

if(isset($coloreNum) && $coloreNum == $i) echo 'class="lienCalendrierJour"';

echo '>'.$i.'</td>';
}

}
echo '</tr>';

$nbLignes = ceil((date('t', $timestamp) - ($i-1))/ 7); // Calcul du nombre de lignes à afficher en fonction de la 1ère (surtout pour les mois a 31 jours)

for($ligne = 0 ; $ligne < $nbLignes ; $ligne++) {
echo '<tr>';
for($colone = 0 ; $colone < 7 ; $colone++) {
if($i <= date('t', $timestamp)) {
// Ce jour possède un événement
if (in_array($i, $event)) {
echo '<td class="jourEvenement';

if(isset($coloreNum) && $coloreNum == $i) echo ' lienCalendrierJour';

echo '"><a href="evenement.php?d='.$i.'/'.$numero_mois.'/'.$annee.'" class="info">'.$i.'<span>'.afficheEvent($i, $event).'</span></a></td>';
} else {
echo '<td ';

if(isset($coloreNum) && $coloreNum == $i) echo 'class="lienCalendrierJour"';

echo '>'.$i.'</td>';
}
} else {
echo '<td></td>';
}
$i = $i +1;
}
echo '</tr>';
}
?>
</table>

<br/>

<p class="centre"><a href="index.php">Revenir à l'accueil</a></p>

</body>
</html>
A voir également:

2 réponses

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
0
jordxn Messages postés 356 Date d'inscription   Statut Membre Dernière intervention   1
 
J'y suis allé mais la je pose une question précise pour ce code la , merci!
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Tu le fais déjà ici non ?
// Ce jour possède un événement 
if (in_array($i, $event)) { 
echo '<td class="jourEvenement'; 

if(isset($coloreNum) && $coloreNum == $i) echo ' lienCalendrierJour'; 

echo '"><a href="evenement.php?d='.$i.'/'.$numero_mois.'/'.$annee.'" class="info">'.$i.'<span>'.afficheEvent($i, $event).'</span></a></div></td>'; 
} else { 
echo '<td '; 

0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
Tu l'as récupéré où ce code de calendrier ? Il n'y avait pas de documentation avec ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Enplus, si déjà t'as regardé le tuto (qui d'ailleurs est très bien fait et très bien expliqué) de grafikart, pourquoi ne pas avoir gardé le code ? Car c'est parfaitement ce que tu cherches me semble t'il.
0
jordxn Messages postés 356 Date d'inscription   Statut Membre Dernière intervention   1
 
Enfaite j'ai une base de donnée avec les evenements et un fichier qui permet au visiteur de creer son evenement mais je ne sais pas comment le stocker dans la varaible $event qui est dans ce code et puis $i je sais pas non plus :/
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Bah le code de grafikart te permet de générer le calendrier avec des évênements récupérés en BDD, parfaitement ce que tu veux non ?
Si tu veux que les users crés des events, tu fais un simple formulaire avec une fonction qui insert dans ta BDD. La génération du calendrier ira cherché toute seule tes events !
0
jordxn Messages postés 356 Date d'inscription   Statut Membre Dernière intervention   1
 
J'ai déjà fait le formulaire et qui insert dans une base de donnée mais la vidéo de grafikart dure 45 min alors c'est chaud de suivre a la lettre le code en le recopiant. De plus moi je le veut en PDO...
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Mais en 45min il t'explique tout ! Et au final tu comprends le fonctionnement ;-) Donc si tu veux ajouté ou supprimé des parties tu sais où faire.
Perso je l'ai utilisé et transformé en objet et il marche niquel.

Quand tu demandes comment rajouter des évênements à ton code comme ca, ca veut dire que tu l'as copier coller et que tu ne sais pas ce qu'il fait. (Bon je te rassure, pour moi c'est pas le problème). Si tu cherches un code tout faite jte file ma classe Calendrier.php qui génère le code html du calendrier ... mais tu n'auras rien appris.
Alors que si tu regardes ces 45min de vidéo, tu sauras comment est fait un calendrier et comment sont mis les évênements. Bon je te l'accorde, perso j'ai du le regarder en deux fois pcq les évênements j'avais pas compris de suite.
Donc a toi de voir ce que tu veux !
0