Calendrier

Fermé
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 - 18 avril 2013 à 15:21
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 18 avril 2013 à 22:38
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 15:26
0
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
18 avril 2013 à 15:46
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 16:05
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 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
18 avril 2013 à 16:06
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 16:09
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 jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
18 avril 2013 à 16:40
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 16:43
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 jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
18 avril 2013 à 18:07
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
18 avril 2013 à 21:54
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