Bonjour,

Tout d'abord, sachez que je code parfois en php mais que je ne suis pas un expert. Je me documente par moi-même et j'avance tant bien que mal.

Or j'ai rencontré ce jour un petit soucis, que j'ai apparemment résolu, mais j'ignore pourquoi ça fonctionne...

Mon problème était simplement le fait que la redirection via la fonction 'header' ne se faisait pas. J'ai bien vérifié et je n'ai aucun code HTML ou de bête caractère invisible avant mon code php.

Voici donc le code qui ne fonctionne pas :

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
<?php
/* lib : changer_mois_actif.php
-------------------------------
Modification du mois en cours (et de l'année éventuellement)
La valeur du mois et de l'année sont stockées dans $_SESSION['mois'] et $_SESSION['annee']

un paramètre nommé "action" est nécessaire à ce script php :
Si action = plus alors on augmente le mois de 1 
Si action = moins alors on diminue le mois de 1

Ensuite on redirige vers le controlleur principal en lui demandant la liste des données. (index.php?todo=liste)
*/
 
if(!isset($_SESSION)) 
	{
	session_start();
	}
 
// Si $_GET existe, on vérifie qu'il contient bien une des deux valeurs souhaitées, sinon on redirige vers le CTRL principal :
if ($_GET['action'] == 'plus')
	{
	$_SESSION['mois']++;
	if ($_SESSION['mois'] == 13) 
		{
		$_SESSION['mois'] = 1; 
		$_SESSION['annee']++;
                header('location: /bsdrm/index.php?todo=liste'); 
                exit;	
		}
	}
if ($_GET['action'] == 'moins')
	{
	$_SESSION['mois']--;
	if ($_SESSION['mois'] == 0) 
		{
		$_SESSION['mois'] = 12; 
		$_SESSION['annee']--;
                header('location: /bsdrm/index.php?todo=liste'); 
                exit;	
		}
	}
?>
Et ci-après le code qui fonctionne :

La différence dans cette version du code est que j'ai juste déplacé les commandes 'header' et 'exit' tout à la fin, soit après les deux tests 'if' . Et là la fonction 'header' fonctionne parfaitement...

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
<?php
/* lib : changer_mois_actif.php
-------------------------------
Modification du mois en cours (et de l'année éventuellement)
La valeur du mois et de l'année sont stockées dans $_SESSION['mois'] et $_SESSION['annee']

un paramètre nommé "action" est nécessaire à ce script php :
Si action = plus alors on augmente le mois de 1 
Si action = moins alors on diminue le mois de 1

Ensuite on redirige vers le controlleur principal en lui demandant la liste des données. (index.php?todo=liste)
*/
 
if(!isset($_SESSION)) 
	{
	session_start();
	}
 
// Si $_GET existe, on vérifie qu'il contient bien une des deux valeurs souhaitées, sinon on redirige vers le CTRL principal :
if ($_GET['action'] == 'plus')
	{
	$_SESSION['mois']++;
	if ($_SESSION['mois'] == 13) 
		{
		$_SESSION['mois'] = 1; 
		$_SESSION['annee']++;
		}
	}
if ($_GET['action'] == 'moins')
	{
	$_SESSION['mois']--;
	if ($_SESSION['mois'] == 0) 
		{
		$_SESSION['mois'] = 12; 
		$_SESSION['annee']--;
		}
	}
header('location: /bsdrm/index.php?todo=liste'); 
exit;	
?>
Quelqu'un pourrait-il me dire pourquoi dans un cas ça ne fonctionne pas, et dans l'autre bien... ?

En vous remerciant d'avance, bonne journée,
cipll.