Bonjour

J'ai déterré de mes archives un vieux script pour créer un calendrier/agenda. Il enregistre parfaitement un événement sur une date. En revanche, il refuse d'enregistrer une période ; par exemple : pour la période 10 au 14 novembre 2015, il enregistre bien l'événement pour la date de début au 10 novembre 2015 mais il n'enregistre pas l'événement pour le 11, 12, 13 et 14 inclus (date de fin). Pourtant j'ai le souvenir que ce script fonctionnait bien autrefois.

Pour obtenir de l'aide, je vous propose les codes ci-dessous :

Le formulaire d'envoi de l'événement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<form id="ajoutevent" action="insertion.php" method="post">
			<label for="dateDebut"></label>
				<input type="date" name="dateDebut" id="dateDebut" placeholder="jj/mm/aaaa" maxlength="10" size="10" tabindex="10" /><br />
 
			<label for="dateFin"></label>		
				<input type="date" name="dateFin" id="dateFin" placeholder="jj/mm/aaaa" maxlength="10" size="10" tabindex="15" /><br /><br />
 
			<label for="titre"></label>	
				<input type="text" name="titre" id="titre" placeholder="Titre" maxlength="100" tabindex="20" /><br /><br />
 
			<label for="description"></label>
				<textarea name="description" id="description" placeholder="Détail de l'événement" tabindex="25"></textarea><br />
 
		<p>
			<input class="bouton" type="submit" name="submit" id="submit" value="Insérer" tabindex="55" />
			<a class="retour" href="#" title="Retour">Retour</a>
		</p>
		</form>
La page insertion.php recevant les données du formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
<?php
// Variables vides pour les valeurs par défaut des champs
$dateDebut = date("d/m/Y", time()); 
$dateFin = date("d/m/Y", time()); 
$titre=""; 
$description="";
 
// Récupération des paramètres POST
$dateDebut = $_POST["dateDebut"];
$dateFin = $_POST["dateDebut"];
$titre = $_POST["titre"];
$description = str_replace("\n", '<br/>', $_POST['description']);
?>
 
 
<?php
			include("connexion.php");
 
			$typeDate = "#^[0-3]?[0-9]/[0-1]?[0-9]/[0-9]{4}$#";
 
 
			if (preg_match($typeDate, $dateDebut) AND preg_match($typeDate, $dateFin)) {
				$tabDateDeb = explode("/", $dateDebut);
				$timestampDebut = mktime(0, 0, 0, $tabDateDeb[1], $tabDateDeb[0], $tabDateDeb[2]);
 
				$tabDateFin = explode("/", $dateFin);
				$timestampFin = mktime(0, 0, 0, $tabDateFin[1], $tabDateFin[0], $tabDateFin[2]);
 
				$timestampDiff = $timestampFin - $timestampDebut;
				$nbreJours = intval($timestampDiff / 86400)+1;
 
				if($nbreJours <= 0) $nbreJours = 1;
 
 
					if(!empty($titre) AND !empty($description)) {
					// Traitement de l'enregistrement de l'évènement
						$identifiantCommun = time();
						$timeDuJour = $timestampDebut;
 
						for($i=0 ; $i<$nbreJours ; $i++) {
							$req = $bdd->exec ("INSERT INTO table1 VALUES (' ', ".date('d', $timeDuJour).", ".date('m', $timeDuJour).", ".date('Y', $timeDuJour).", $identifiantCommun)") or die(print_r($bdd->errorInfo()));
 
							$timeDuJour += 86400; // On augmente le timestamp d'un jour
						}
 
						$req = $bdd->exec ("INSERT INTO table2 VALUES ('$identifiantCommun', '$titre', '$description')") or die(print_r($bdd->errorInfo()));
 
						$titre=""; $description=""; $dateDebut = date("d/m/Y", time()); $dateFin = date("d/m/Y", time());
 
						//$req->closeCursor();
 
						echo '<p>L\'événement a bien été enregistré !</p>
							<p><a class="retour" href="#" title="Retour">Retour</a></p>';
					} 					
					else {
						echo '<p>Oups... ! Le titre ou la description de l\'événement n\'a pas été renseigné(e).</p>
							<p><a class="retour" href="#" title="Retour">Retour</a></p>';
					}
			}
			else	{
				echo '<p>Oups... ! La date de l\'événement n\'est pas au format attendu :  jj/mm/aaaa.</p>
					<p><a class="retour" href="#" title="Retour">Retour</a></p>';
			}
		?>

Concernant la base de données :
  • Table1 est construite avec les colonnes : id_calendrier, jour_evenement, mois_evenement, annee_evenement, id_evenement.
  • Table2 est construite avec les colonnes : id_evenement, titre_evenement, description_evenement.



Rappel : ma question est donc : que manque t-il dans ce code pour l'enregistrement d'une période de plus d'un jour ?

Merci