Calendrier

Fermé
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 - 17 avril 2013 à 01:47
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 17 avril 2013 à 22:15
Bonsoir,
J'aimerais parvenir a faire un calendrier en PDO assez simple.
Les seuls que j'ai vu sur internet sont super compliquer...
Pouvez vous m'aidez ? Si oui, merci
A voir également:

2 réponses

jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
17 avril 2013 à 01:53
J'ai trouver ce code sur internet :

<h1>Calendrier</h1>
<br/>
<?php
function getEventsDate($mois, $annee) {
$result = array();

include("includes/sql_connect.php");

$sql = 'SELECT DISTINCT jour_evenement, titre_evenement FROM calendrier c, evenements e WHERE mois_evenement='.$mois.' AND annee_evenement='.$annee.' AND c.id_evenement = e.id_evenement ORDER BY jour_evenement';

$query = mysql_query($sql) or die("Une requête a échouée.");

while ($row = mysql_fetch_array($query, MYSQL_NUM)) {
$result[] = $row[0];
$result[] = $row[1];
}

mysql_close();

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>


Cela fonctionne parfaitement mais j'aimerais des explications car je ne comprend pas grand chose au programme, merci.
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
17 avril 2013 à 22:15
0