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

Langage PHP Discussion :

fonction if imbriqués


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Par défaut fonction if imbriqués
    bonjour
    j'essaye en vain de faire une fonction imbriquée
    mon but est de connaitre la "caf" d'une famille suivant le nombre d'enfant de moins de 16 ans:
    1 enfant = 0
    2 enfants=124
    3 enfants=275
    4 enfants=433
    5 enfants=590
    les variables $AgeEnfant ont par defaut 17 ans et commence par $AgeEnfant0
    j'ai donc écris

    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
    function cafok {
    $AllocFam_ok =0;
     
    	// bnp
     
    if ($bank=='bnp1' or $bank=='bnp2' ')
    		{
    		if ($AgeEnfant1<16)
    				{
    				if ($AgeEnfant2<16)
     
    					{if ($AgeEnfant3<16)
     
    						{if ($AgeEnfant4<16)
     
    						{$AllocFam_ok=590;}
    						}
    						else{$AllocFam_ok=433;}
    						}
    					else{$AllocFam_ok=275;}
    					}
    				else{$AllocFam_ok=124;}
    				}
     
    		}
     return $AllocFam_ok;
     
    }
    la réponse est erronnée (590 dans ts les cas)
    il y a évidement une erreur mais le débutant que je suis ne la trouve pas!
    merci de votre aide

  2. #2
    Membre confirmé
    Avatar de antoinev2
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 177
    Par défaut
    Bonjour,

    si je peux me permettre, c'est un peu "fouillis", prends l'habitude de respecter l'indentation : ton code sera plus clair et donc, plus facile à débugger : tu dois avoir fait une petite erreur qui apparaîtra clairement.

    un exemple d'indentation respectée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (condition1) {
        instruction1 ;
    } elseif (condition2) {
        instruction2 ;
    } else {
        instruction3 ;
    }
    (copié de la faq)

    Accessoirement, je dirais qu'il y a un guillemet simple de trop dans ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($bank=='bnp1' or $bank=='bnp2' ')

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Par défaut fonction if imbriqué
    bjr
    merci pour votre reponse mais j'ai due mal m'expliquer
    concernant le guillemet, c'est parce que j'ai tronqué la condition qui était trop longue et j'

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Par défaut fonction if imbriqué
    désolé erreur de manip!!!
    je repete donc
    bjr
    merci pour votre reponse mais j'ai due mal m'expliquer
    concernant le guillemet, c'est parce que j'ai tronqué la condition qui était trop longue et j' ai laissé ce guillemet par erreur
    l'erreur est apres;
    actuellement j'utilise bien elseif mais je dois tester tous les cas
    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
     
    if ($NbEnfant=="2") 
    {
    // bnp hypo /sygma hypo conso GE
     
    	if (($AgeEnfant0<16 and $AgeEnfant1<16) and ($bank=='bnp1' or $bank=='bnp2' or $bank=='bnp3' or $bank=='bnp4' or $bank=='sygmahypo' or $bank=='sygmaconso' or $bank=='GEPLUS' or $bank=='GERAC' or $bank=='GEPREM' or $bank=='GE1'or $bank=='GE2'or $bank=='GE3'))
     
    {$AllocFam_ok=124;}
    elseif ($NbEnfant=="3") 
    {
     
    elseif (($AgeEnfant0<16 and $AgeEnfant1<16 and $AgeEnfant2<16) and ($bank=='bnp1' or $bank=='bnp2' or $bank=='bnp3' or $bank=='bnp4' or $bank=='sygmahypo' or $bank=='sygmaconso' or $bank=='GEPLUS' or $bank=='GERAC' or $bank=='GEPREM' or $bank=='GE1'or $bank=='GE2'or $bank=='GE3'))
     
    {$AllocFam_ok=275;}
     
    	elseif (($AgeEnfant0<16 and $AgeEnfant1<16 and $AgeEnfant2>=16) and ($bank=='bnp1' or $bank=='bnp2' or $bank=='bnp3' or $bank=='bnp4' or $bank=='sygmahypo' or $bank=='sygmaconso' or $bank=='GEPLUS' or $bank=='GERAC' or $bank=='GEPREM' or $bank=='GE1'or $bank=='GE2'or $bank=='GE3'))
     
    {$AllocFam_ok=124;}
    etc ( je ne vais pas tout marquer , il y a + de 200 lignes)
    cela est actuellement donc tres lourd
    je voulais clarifier mon script en utilisant des if imbriqués mais pour une raison que j'ignore, cela ne marche pas
    j'attends vos remarques

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Par défaut
    Il semblerait que tu te sois emellé dans tes accolades, voici le code corrigé :

    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
    if ($bank=='bnp1' or $bank=='bnp2') {
    	if ($AgeEnfant1<16) {
    		if ($AgeEnfant2<16) {
    			if ($AgeEnfant3<16) {
    				if ($AgeEnfant4<16) {
    					$AllocFam_ok=590;
    				}
    				else {
    					$AllocFam_ok=433;
    				}
    			else {
    				$AllocFam_ok=275;
    			}
    		else{
    			$AllocFam_ok=124;
    		}
    	}
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 105
    Par défaut FONCTION IF IMBRIQUE
    merci à toi, mais j'ai encore une erreur
    Parse error: parse error in C:\xampp\htdocs\essai2\Fonction.php on line 182
    la ligne 182 en occurence c'est le else qui precede le 275
    Je te note la fonction
    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
    function cafok ($NbEnfant,$AgeEnfant0,$AgeEnfant1,$AgeEnfant2,$AgeEnfant3,$AgeEnfant4,$AgeEnfant5 )
    {
    $AllocFam_ok =0;
     
     
    if ($bank=='bnp1' or $bank=='bnp2') {
    	if ($AgeEnfant1<16) {
    		if ($AgeEnfant2<16) {
    			if ($AgeEnfant3<16) {
    				if ($AgeEnfant4<16) {
    					$AllocFam_ok=590;
    				}
    				else {
    					$AllocFam_ok=433;
    				}
    			else {
    				$AllocFam_ok=275;
    			}
    		else{
    			$AllocFam_ok=124;
    		}
    	}
    }
     
     return $AllocFam_ok;
     
    }
    je ne vois pas d'erreur !!!

  7. #7
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Je pense que pour simplifier la chose, il vaut mieux d'abord compter le nombre d'enfants effectivement âgés de moins de 16 ans.

    Exemple minimaliste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab=array(
    	$AgeEnfant0, $AgeEnfant1, $AgeEnfant2, $AgeEnfant3, $AgeEnfant4, $AgeEnfant5
    );
    $Enfants=0;
    foreach($tab as $age){
    	if($age<16)$Enfants++;
    }
    Ensuite, tout devient plus clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $AllocFam_ok=0;
    switch($Enfants){
    	case 2:$AllocFam_ok=124;
    		Break;
    	case 3:$AllocFam_ok=275;
    		Break;
    	case 4:$AllocFam_ok=433;
    		Break;
    	case 5:$AllocFam_ok=590;
    }
    EDIT : J'avais oublié les 'case'... Merci Thes32 !

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

Discussions similaires

  1. [XL-2013] Deux fonctions SIERREUR imbriqués et formule matricielle ?
    Par Daniel.C dans le forum Excel
    Réponses: 3
    Dernier message: 28/11/2014, 18h57
  2. [XSLT 1.0] XSLT: utilisation de la fonction position() dans <for-each> imbriqués
    Par bernidupont dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/05/2011, 22h33
  3. [XL-2007] Fonction SI Imbriqués
    Par guy2004 dans le forum Excel
    Réponses: 2
    Dernier message: 16/12/2010, 12h13
  4. [XL-2007] Fonction SI imbriqués + TROUVE
    Par tinkye_winkye dans le forum Excel
    Réponses: 4
    Dernier message: 25/11/2010, 11h56
  5. créer une fonction avec "si" imbriqués
    Par JUMJJUMJ dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 23h03

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