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 -
jeremy.s Messages postés 1226 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Calendrier
- Mon calendrier - Télécharger - Santé & Bien-être
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Calendrier partagé google - Guide
- Synchroniser calendrier outlook et gmail - Guide
- Logiciel calendrier personnalisé gratuit - Télécharger - Organisation
2 réponses
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.
<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.