if/else non reconnu si deux instructions se suivent

Eléphant du PHP | 227 Messages

11 nov. 2012, 18:51

Bonjour à tous,

Je vous mets un bout de code qui me pose problème, et dont je comprends plus très bien. Il n'y aucune erreur d'affichée et les sessions sont les bonnes par rapport au contrôle.

- le premier contrôle doit inclure une page.
- Le deuxième contrôle doit inclure une autre page.

Quoi qu'il arrive, c'est toujours le deuxième contrôle ( if/else ) qui est pris en valeur en zappant le premier ( if/else ). Comment puis je expliquer cela ?
De toute façon, je passe à coter de quelques choses, mais pas moyen de mettre le doigt dessus

Merci de vos aides et explications.

				// 1er Controle - Envoie mail NAIS
				/****************************************************************/
				if(isset($_SESSION['page_actua']) && $_SESSION['page_actua'] == 1 && isset($_SESSION['variable_1']) && $_SESSION['variable_1'] == 1){													
							
							$_SESSION['acte_mail'] = 'd\'acte de naissance';
								$_SESSION['acte'] = 'sans filiation' ;
									$page_envoyer = 1;
										$_SESSION['page_envoyer'] = $page_envoyer;				
						
						if(file_exists(path_mail.'inc_mail_nais.php')){include(path_mail.'inc_mail_nais.php');}else {echo "Le fichier inc_mail_nais n\'existe pas";}						
				}
				else{
							$_SESSION['acte_mail'] = 'd\'acte de naissance';
								$_SESSION['acte'] = 'avec filiation' ;
									$page_envoyer = 1;
										$_SESSION['page_envoyer'] = $page_envoyer;						
				}			
				/****************************************************************/
				// 2me controle - Envoie autre MAR
				/****************************************************************/
				if(isset($_SESSION['page_actua']) && $_SESSION['page_actua'] == 2 && isset($_SESSION['variable_1']) && $_SESSION['variable_1'] == 1){												
							
							$_SESSION['acte_mail'] = 'd\'acte de mariage';
								$_SESSION['acte'] = 'sans filiation' ;						
									$page_envoyer = 2;
										$_SESSION['page_envoyer'] = $page_envoyer;				
						
						if(file_exists(path_mail.'inc_mail_mar.php')){include(path_mail.'inc_mail_mar.php');}else {echo "Le fichier inc_mail_mar n\'existe pas";}						
				}
				else{
							$_SESSION['acte_mail'] = 'd\'acte de mariage';
								$_SESSION['acte'] = 'avec filiation' ;
									$page_envoyer = 2;
										$_SESSION['page_envoyer'] = $page_envoyer;						
				}


Mammouth du PHP | 2278 Messages

11 nov. 2012, 21:42

Bsr,
Rapidement,
// 1er Controle - Envoie mail NAI
$page_actua = isset($_SESSION['page_actua']) ? $_SESSION['page_actua'] : false;
$variable_1 = isset($_SESSION['variable_1']) ? isset($_SESSION['variable_1']) : false;
  /****************************************************************/
  //if(isset($_SESSION['page_actua']) && $_SESSION['page_actua'] == 1 && isset($_SESSION['variable_1']) && $_SESSION['variable_1'] == 1){  
  //est synonyme de:                                                                                              
if($page_actua == 1 && $variable_1 == 1)
{    
//$page_actua == 1 ET $variable_1 == 1                                                                                              
	$_SESSION['acte_mail'] = 'd\'acte de naissance';
   $_SESSION['acte'] = 'sans filiation' ;
   $page_envoyer = 1;
   $_SESSION['page_envoyer'] = $page_envoyer;                             
     
      if(file_exists(path_mail.'inc_mail_nais.php'))
      {
      	include(path_mail.'inc_mail_nais.php');
      }
      else 
      {
      	echo "Le fichier inc_mail_nais n\'existe pas";
      }                                           
 }
 else
 {
 // contraire de $page_actua == 1 ET $variable_1 == 1  ==>>>DEMORGAN=>>>> $page_actua !=1 OU $variable_1 != 1

     $_SESSION['acte_mail'] = 'd\'acte de naissance';
     $_SESSION['acte'] = 'avec filiation' ;
     $page_envoyer = 1;
     $_SESSION['page_envoyer'] = $page_envoyer;                                             
}       
//repenser ainsi:
switch ($page_actua)
{
	case 1:
		$_SESSION['acte_mail'] = 'd\'acte de naissance';
 		$_SESSION['page_envoyer'] = 1;  
 		switch ($variable_1)
 		{
 			case 1:
 			  $_SESSION['acte'] = 'sans filiation' ;
 			break;
 			case 2:
     			$_SESSION['acte'] = 'avec filiation' ;			
 			break;
 		}    
	break;
	case 2:
	break;
	default:
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 227 Messages

12 nov. 2012, 07:20

Bonjour sirikawa,

Merci pour la lisibilité de ce morceau. Je vais procéder ainsi pour la suite et je reviens pour dire quoi.

Eléphant du PHP | 227 Messages

12 nov. 2012, 14:04

Voila, j'ai donc refais le code suivant tes explications, mais toujours pareil, c'est le dernier control qui est retenu dans switch.

Je me permet de remettre tout le code. la valeur de $_SESSION['acte'] n'est pas prise en compte sur la page appelée. que faire ?
				$page_envoyer = 0;				
				// 1er Controle - Envoie mail NAI
$page_actua = isset($_SESSION['page_actua']) ? $_SESSION['page_actua'] : false;
$filiation = isset($_SESSION['filiation']) ? $_SESSION['filiation'] : false;

switch ($page_actua)
{
        case 1:
                
				$_SESSION['acte_mail'] = 'd\'acte de naissance';
                $_SESSION['page_envoyer'] = 1;  
				
                switch ($filiation)
                {
                        case 1:
                        $_SESSION['acte'] = 'sans filiation' ;
                        break;
                        case 2:
                        $_SESSION['acte'] = 'avec filiation' ;                 
                        break;
                }
				if(file_exists(path_mail.'inc_mail_nais.php')){
       				 include(path_mail.'inc_mail_nais.php');
      					}
      			else {
        			 echo "Le fichier inc_mail_nais n\'existe pas";
     					 }
	      
        break;
        case 2:
				$_SESSION['acte_mail'] = 'd\'acte de mariage';
                $_SESSION['page_envoyer'] = 2;  
                switch ($filiation)
                {
                        case 1:
                          $_SESSION['acte'] = 'sans filiation' ;
                        break;
                        case 2:
                        $_SESSION['acte'] = 'avec filiation' ;                 
                        break;
                } 
				if(file_exists(path_mail.'inc_mail_mar.php')){
       				 include(path_mail.'inc_mail_mar.php');
      					}
      			else {
        			 echo "Le fichier inc_mail_mar n\'existe pas";
     					 }
        break;       
		case 3:
				 $_SESSION['acte_mail'] = 'd\'acte de décès';
                $_SESSION['page_envoyer'] = 3;  
                switch ($filiation)
                {
                        case 1:
                          $_SESSION['acte'] = 'sans filiation' ;
                        break;
                        case 2:
                        $_SESSION['acte'] = 'avec filiation' ;                 
                        break;
                }
				if(file_exists(path_mail.'inc_mail_deces.php')){
       				 include(path_mail.'inc_mail_deces.php');
      					}
      			else {
        			 echo "Le fichier inc_mail_deces n\'existe pas";
     					 } 
        break;
        default:
}

ViPHP
xTG
ViPHP | 7331 Messages

12 nov. 2012, 14:32

Et que donnes un :
var_dump($filiation);

Eléphant du PHP | 227 Messages

12 nov. 2012, 14:43

Bonjour xTG,

j'ai réglé le problème de la variable $filiation. J'avais oublié de la déclarer. :oops:

Ceci étant, cela ne règle pas mon soucis, pour l'expédition de tel ou tel page. Je veux dire, c'est un peu comme s'il n'y avait que la dernière partie du controle qui est vérifié.

Mammouth du PHP | 2278 Messages

12 nov. 2012, 22:50

Enfance de la programmation: vérifier les valeurs manipulées
$page_actua = isset($_SESSION['page_actua']) ? $_SESSION['page_actua'] : false;
$variable_1 = isset($_SESSION['variable_1']) ? isset($_SESSION['variable_1']) : false;
var_dump ($page_actua);
var_dump ($variable_1);
éclairciraient la situation.

Par pitié, ne pas ajouter maintenant une troisième variable sortie on,ne sait d'où....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD