Bonjour,

Cela fait une semaine que je m'arrache les cheveux avec la page de traitement relative à l'insertion de données dans la table de l'agenda (idem pour la page de modification d'ailleurs...).

Le problème est le suivant : lorsque j'entre une série de date pour le même événement, exemple du 5 janvier au 9 janvier inclus 2016, il enregistre dans la table cinq fois le 5 janvier et non 5, 6, 7, 8, 9.

Quelqu'un a t-il une idée de ce dysfonctionnement svp ? Je vous propose le code (en abrégé bien sûr, rassurez-vous )

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
<?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["dateFin"];
$titre = $_POST['titre'];
$titre = stripslashes($titre);
$description = str_replace("\n", '<br/>',$_POST['description']);
 
 
include('connexion_sql.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
                $id_evenement = time(); // j'ai remplacé $identifiantCommun par $id_evenement
                $timeDuJour = $timestampDebut;
                $jour_evenement=date('d', $timeDuJour);
                $mois_evenement=date('m', $timeDuJour);
                $annee_evenement=date('Y', $timeDuJour);
 
                /*for($i=0 ; $i<$nbreJours ; $i++) { // je garde cela en archive
                    $req = $bdd->exec ('INSERT INTO matable_agenda VALUES (" ", ' .date("d", $timeDuJour). ', ' .date("m", $timeDuJour). ', ' .date("Y", $timeDuJour). ', ' .$bdd->quote($identifiantCommun). ')') or die(print_r($bdd->errorInfo()));
                         
                    $timeDuJour += 86400; // On augmente le timestamp d'un jour
                }
                             
                    $req = $bdd->exec ('INSERT INTO matable_detail VALUES (' .$bdd->quote($identifiantCommun). ', ' .$bdd->quote($titre). ', ' .$bdd->quote($description). ')') or die(print_r($bdd->errorInfo()));
                */
 
 
 
 
                for($i=0 ; $i<$nbreJours ; $i++) {
                    $req = $bdd->prepare ('INSERT INTO matable_agenda
                                            (jour_evenement, mois_evenement, annee_evenement, id_evenement)
                                            VALUES (:jour_evenement, :mois_evenement, :annee_evenement, :id_evenement)')
                                            or die(print_r($bdd->errorInfo()));
 
                    $req->execute(array(
                                        'jour_evenement'=>$jour_evenement,
                                        'mois_evenement'=>$mois_evenement,
                                        'annee_evenement'=>$annee_evenement,
                                        'id_evenement'=>$id_evenement
                                        ));
 
                    $timeDuJour += 86400; // On augmente le timestamp d'un jour
                }
 
                $req = $bdd->prepare ('INSERT INTO matable_detail
                                        (id_evenement, titre_evenement, description_evenement)
                                        VALUES (:id_evenement, :titre, :description)')
                                        or die(print_r($bdd->errorInfo()));
 
                $req->execute(array(
                                    'id_evenement'=>$id_evenement,
                                    'titre'=>$titre,
                                    'description'=>$description
                                    ));
 
 
                    $titre=''; $description=''; $dateDebut = date('d\/m\/Y', time()); $dateFin = date('d\/m\/Y', time());
 
 
                    echo '<p>L\'événement a bien été enregistré !</p>';
            }                  
            else {
                echo '<p>Oups… ! Le titre ou la description de l\'événement n\'a pas été renseigné(e). <a class="retour" href="javascript:history.go( -1 )" title="Retour sur la page précédente">Recommencer ?</a></p>';
            }
        }
        else {
            echo '<p>Oups… ! La date de l\'événement n\'est pas au format attendu : jj/mm/aaaa. <a class="retour" href="javascript:history.go( -1 )" title="Retour sur la page précédente">Recommencer ?</a></p>';
        }
            //$req->closeCursor();
            echo '<br /><p><a class="retour" href="gestion.php" title="Retour sur la page de gestion">Retour sur la page de gestion</a></p>';
        ?>
la table_agenda se compose de 5 colonnes : id_calendrier, jour_evenement, mois_evenement, annee_evenement, id_evenement

et la table_detail se compose de 3 colonnes : id_evenement, titre_evenement, description_evenement


Je vous remercie de votre aide