Bonjour,

J'essaye de faire un truc assez simple qui consiste à enregistrer des dates dans ma base de données mysql à partir d'un formulaire. Le formulaire possède donc un champ date_debut, un champ date_fin et un champ date_fin_fin.
Oui, car on imagine qu'il s'agit d'évènement récurrent. Donc par exemple je choisis du lundi 20 avril (date_debut) au mercredi 22 avril (date_fin) et je mets 07 mai pour la date_fin_fin. Ainsi je veux enregistrer dans ma base chaque lundi au mercredi du 20 avril jusqu'au 7 mai. En gros cela donnerait :
20-04-2020 / 22-04-2020
27-04-2020 / 29-04-2020
04-05-2020 / 06-05-2020

Pour le moment j'ai fait un code mais il m'enregistre plutôt ceci :

20-04-2020 / 22-04-2020
20-04-2020 / 29-04-2020
20-05-2020 / 06-05-2020
27-04-2020 / 22-04-2020
27-04-2020 / 29-04-2020
27-04-2020 / 06-05-2020
04-05-2020 / 22-04-2020
04-05-2020 / 29-04-2020
04-05-2020 / 06-05-2020

Voici mon code :
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
<?php
 
	if (isset($_POST['date_debut'],$_POST['date_fin'],$_POST['date_fin_fin']))
	{
 
		$date_debut = $_POST['date_debut']; 
		$date_fin = $_POST['date_fin'];
		$date_fin_fin = $_POST['date_fin_fin'];
 
		//on regarde c'est quel jour de la semaine pour date debut et date fin
		$jourdebut = date("l", strtotime($date_debut));
		$jourfin = date("l", strtotime($date_fin));
 
		//on va chercher tous les jours entre date_debut et date_fin_fin qui correspondent aux deux jours de la semaine
 
 
		$date_debut2 = new DateTime(implode(' ', [$_POST['date_debut'], empty($_POST['time_debut']) ? '12:00' : $_POST['time_debut']]));
 
		//on définit la date de fin avec un jour de plus pour qu'il inclut la date de fin
		$date_retour3 = new DateTime(''.$_POST['date_fin_fin'].' +1 day');
		$date_retour3 = $date_retour3->format('Y-m-d');
 
		$date_fin_fin2 = new DateTime(implode(' ', [$date_retour3, empty($_POST['time_fin']) ? '12:00' : $_POST['time_fin']]));
 
 
		//on définit l'intervalle
		$interval = new DateInterval('P1D');
 
 
		$periode = new DatePeriod($date_debut2, $interval, $date_fin_fin2) ;
 
		$tableau = [];
		$tableau2 = [];
 
		foreach ($periode as $dateeee) {
			if ($dateeee->format('l') ==  $jourdebut)
			{
				echo '<br />';
				echo $dateeee->format('d-m-Y'); 
				echo '<br />';
 
				$tableau[] = $dateeee->format('Y-m-d'); 
 
 
 
			}
			if ($dateeee->format('l') ==  $jourfin)
			{
				echo '<br />';
				echo $dateeee->format('d-m-Y'); 
				echo '<br />';
				$tableau2[] = $dateeee->format('Y-m-d'); 
			}	
 
 
		}//fin foreach periode as dateeee
 
 
 
		foreach ($tableau as $lesdebuts)
		{
			foreach ($tableau2 as $lesfins)
			{
				$stmt = $bdd->prepare('INSERT INTO test_dates (date_debut,date_fin) VALUES(:date_debut,:date_fin)');
				$stmt->execute(array(':date_debut' => $lesdebuts,':date_fin' => $lesfins));
 
			}
		}
 
 
	} //fin if (isset
Quelqu'un a une idée ?
Sinon, je me doute que de faire des évènements récurrents ainsi peut être qu'il y a plus optimale comme manière de procéder que la direction dans laquelle je suis partie ? ou pas ?

Merci pour vos pistes :-)