IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Calendrier/agenda : non enregistrement d'une période [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 36
    Points
    36
    Par défaut Calendrier/agenda : non enregistrement d'une période
    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

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Heureusement que je peux faire appel à des relecteurs via les forums ! Cela dysfonctionnait à cause d'une grosse étourderie :

    hani_1 a écrit (autre forum)
    <<
    Bonjour,

    Il suffit de lui passer une date de fin... (et non pas DEUX date debut)
    $dateDebut = $_POST["dateDebut"];
    $dateFin = $_POST["dateDebut"];
    >>


    Merci à lui

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/05/2014, 23h30
  2. [AC-2000] Recherche enregistrement sur une période antérieure à ma sélection
    Par Christ79 dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/01/2014, 11h36
  3. Réponses: 6
    Dernier message: 14/02/2012, 16h04
  4. Récupérer des lignes non enregistrées dans une table
    Par leddy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/04/2008, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo