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 :

Souci de grand débutant sur partie de code PHP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Souci de grand débutant sur partie de code PHP
    Bonjour

    Je reprend une partie de code d'un développeur qui est parti et je suis ultra, ultra débutant
    Voici la partie de 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
    			if ($tab_regions_dest)
    			{
    				foreach ($tab_regions_dest as $region)
    				{
     
    					$guides_region = WP_Query_Destination_guides ('region', $region['ID']) ;
     
    				if ($guides_region)
    					{
    						$guides['region']['titre']['fr-FR'] = ($IDd == 8493 ? 'Etats' : 'Régions') ;  
    						$guides['region']['titre']['en-GB'] = ($IDd == 12129 ? 'States' : 'Regions') ; 
    						$guides['region']['donnees'][] = array('nom'			=> $region['nom'][$cl]	,
    															   'liste_guides'	=> $guides_region
    															  ) ;
    					}
     
    				}
    			}

    Pour résumer
    J'aimerais insérer d'autres tests dans cette boucle
    Par exemple ceci
    Je rajoute une condition ligne verte

    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
    		if ($tab_regions_dest)
    			{
    				foreach ($tab_regions_dest as $region)
    				{
    
    					$guides_region = WP_Query_Destination_guides ('region', $region['ID']) ;
    
    				if ($guides_region)
    					{
    						$guides['region']['titre']['fr-FR'] = ($IDd == 8493 ? 'Etats' : 'Régions') ;  
    						$guides['region']['titre']['en-GB'] = ($IDd == 12129 ? 'States' : 'Regions') ; 
    						$guides['region']['titre']['fr-FR'] = ($IDd == 55555 ? 'Emirats' : 'Régions') ;  
    						$guides['region']['titre']['en-GB'] = ($IDd == 66666 ? 'Emirates' : 'Regions') ;
    						$guides['region']['donnees'][] = array('nom'			=> $region['nom'][$cl]	,
    															   'liste_guides'	=> $guides_region
    															  ) ;
    					}
    					
    				}
    			}

    Mon souci c'est que le code ne prend en compte que la dernière condition du code ( la ligne en vert et ne tient pas compte de la ligne en rouge qu'il traite par défaut ligne bleue
    Je ne sais pas trop si j'ai été assez clair
    J'aimerais donc faire
    ( Si
    xxxx alors
    et
    Si
    yyyyy alors
    et
    SI
    zzzzz alors
    )
    Sinon


    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Bonjour,
    En gardant la syntaxe des conditions ternaires :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    $guides['region']['titre']['fr-FR'] = ($IDd == 8493 ? 'Etats' : ($IDd == 55555 ? 'Emirats' : 'Régions')) ;  
    $guides['region']['titre']['en-GB'] = ($IDd == 12129 ? 'States' : ($IDd == 66666 ? 'Emirates' : 'Regions')) ;

  3. #3
    Membre expert
    Si tu es ultra débutant, n'hésite pas à réécrire un code que toi tu comprends...
    On ne peut pas sauter les étapes comme ça.
    Si j'ai bien compris (suis pas sûre), ça donnerait ça :

    Code PHP :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if($IDd == 8493 || $IDd == 12129){
      $guides['region']['titre']['fr-FR'] = 'Etats';
      $guides['region']['titre']['en-GB'] = 'States';
    }
    elseif ($IDd == 55555 || $IDd == 66666){
      $guides['region']['titre']['fr-FR'] = 'Emirats';
      $guides['region']['titre']['en-GB'] = 'Emirates';
    }
    else{
      $guides['region']['titre']['fr-FR'] = 'Régions';
      $guides['region']['titre']['en-GB'] = 'Regions';
    }
    Mes billets de blog : un billet = une problématique précise
    It's easier to be friends with lots of people online than one person in person!

  4. #4
    Invité
    Invité(e)
    C'est plutôt :

    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
    if ($IDd == 8493)
    {
       $guides['region']['titre']['fr-FR'] = 'Etats';
    } elseif ($IDd == 55555) {
       $guides['region']['titre']['fr-FR'] = 'Emirats';  
    } else {
       $guides['region']['titre']['fr-FR'] =  'Régions';  
    }
    if ($IDd == 12129)
    {
       $guides['region']['titre']['en-GB'] = 'States';
    } elseif ($IDd == 66666) {
       $guides['region']['titre']['en-GB'] = 'Emirates';  
    } else {
       $guides['region']['titre']['en-GB'] =  'Regions';  
    }

  5. #5
    Nouveau membre du Club
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,
    En gardant la syntaxe des conditions ternaires :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    $guides['region']['titre']['fr-FR'] = ($IDd == 8493 ? 'Etats' : ($IDd == 55555 ? 'Emirats' : 'Régions')) ;  
    $guides['region']['titre']['en-GB'] = ($IDd == 12129 ? 'States' : ($IDd == 66666 ? 'Emirates' : 'Regions')) ;
    Merci beaucoup, cette première solution fonctionne très bien

  6. #6
    Nouveau membre du Club
    Citation Envoyé par jreaux62 Voir le message
    C'est plutôt :

    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
    if ($IDd == 8493)
    {
       $guides['region']['titre']['fr-FR'] = 'Etats';
    } elseif ($IDd == 55555) {
       $guides['region']['titre']['fr-FR'] = 'Emirats';  
    } else {
       $guides['region']['titre']['fr-FR'] =  'Régions';  
    }
    if ($IDd == 12129)
    {
       $guides['region']['titre']['en-GB'] = 'States';
    } elseif ($IDd == 66666) {
       $guides['region']['titre']['en-GB'] = 'Emirates';  
    } else {
       $guides['region']['titre']['en-GB'] =  'Regions';  
    }

    Merci bien j'ai implémenté votre première solution

  7. #7
    Nouveau membre du Club
    Citation Envoyé par Dendrite Voir le message
    Si tu es ultra débutant, n'hésite pas à réécrire un code que toi tu comprends...
    On ne peut pas sauter les étapes comme ça.
    Si j'ai bien compris (suis pas sûre), ça donnerait ça :

    Code PHP :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if($IDd == 8493 || $IDd == 12129){
      $guides['region']['titre']['fr-FR'] = 'Etats';
      $guides['region']['titre']['en-GB'] = 'States';
    }
    elseif ($IDd == 55555 || $IDd == 66666){
      $guides['region']['titre']['fr-FR'] = 'Emirats';
      $guides['region']['titre']['en-GB'] = 'Emirates';
    }
    else{
      $guides['region']['titre']['fr-FR'] = 'Régions';
      $guides['region']['titre']['en-GB'] = 'Regions';
    }


    Merci bien j'ai testé la première solution de jreaux62 qui fonctionne aussi très bien

  8. #8
    Membre expert
    Merci Jreaux pour la correction.
    @Gilles : que la condition ternaire fonctionne, j'en étais certaine. La question est : la comprends-tu ?
    Moi, je trouve les conditions ternaires imbriquées très peu lisibles. Je ne les utilise que sur un niveau.
    L'autre question : c'est que si tu fais évoluer le code de quelqu'un qui va revenir, reste dans sa logique à lui. Mais s'il ne revient pas et que tu dois t'approprier "définitivement" ses scripts, n'hésite pas à les rendre plus simples pour toi, ils n'en seront pas moins performants.
    Mes billets de blog : un billet = une problématique précise
    It's easier to be friends with lots of people online than one person in person!

  9. #9
    Invité
    Invité(e)
    Juste pour info, on peut utiliser des arrays:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $titre_fr_arr = [
    	0 => 'Régions',
    	8493 => 'Etats',
    	55555 => 'Emirats',
    	];
    $titre_en_arr = [
    	0 => 'Regions',
    	12129 => 'States',
    	66666 => 'Emirates',
    	];
    $guides['region']['titre']['fr-FR'] = ( !empty($titre_fr_arr[$IDd]) )? $titre_fr_arr[$IDd] : $titre_fr_arr[0] ;  
    $guides['region']['titre']['en-GB'] = ( !empty($titre_en_arr[$IDd]) )? $titre_en_arr[$IDd] : $titre_en_arr[0] ;


    Ou encore des switch :

    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
    switch($IDd)
    {
    	case 8493:
    		$guides['region']['titre']['fr-FR'] = 'Etats';
    		break;
    	case 55555:
    		$guides['region']['titre']['fr-FR'] = 'Emirats';
    		break;
    	default:
    		$guides['region']['titre']['fr-FR'] = 'Régions';
    }
    switch($IDd)
    {
    	case 12129:
    		$guides['region']['titre']['en-GB'] = 'States';
    		break;
    	case 66666:
    		$guides['region']['titre']['en-GB'] = 'Emirates';
    		break;
    	default:
    		$guides['region']['titre']['en-GB'] = 'Regions';
    }

    ATTENTION : les 2 switch (comme les 2 if précédents), ne peuvent pas être fusionnés en un seul ici (car pour chacun, on ne passe que dans une seule condition, or on a 2 variables à remplir).

    On peut néanmoins procéder autrement, en initialisant D'ABORD les variables avec leur valeur par défaut :
    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
    $guides['region']['titre']['fr-FR'] = 'Régions';
    $guides['region']['titre']['en-GB'] = 'Regions';
    switch($IDd)
    {
    	case 8493:
    		$guides['region']['titre']['fr-FR'] = 'Etats';
    		break;
    	case 55555:
    		$guides['region']['titre']['fr-FR'] = 'Emirats';
    		break;
    	case 12129:
    		$guides['region']['titre']['en-GB'] = 'States';
    		break;
    	case 66666:
    		$guides['region']['titre']['en-GB'] = 'Emirates';
    		break;
    }

    Mais, à mon avis, c'est moins lisible, notamment pour la maintenance.

  10. #10
    Nouveau membre du Club
    Citation Envoyé par Dendrite Voir le message
    Merci Jreaux pour la correction.
    @Gilles : que la condition ternaire fonctionne, j'en étais certaine. La question est : la comprends-tu ?
    Moi, je trouve les conditions ternaires imbriquées très peu lisibles. Je ne les utilise que sur un niveau.
    L'autre question : c'est que si tu fais évoluer le code de quelqu'un qui va revenir, reste dans sa logique à lui. Mais s'il ne revient pas et que tu dois t'approprier "définitivement" ses scripts, n'hésite pas à les rendre plus simples pour toi, ils n'en seront pas moins performants.
    Merci pour ta version que j'ai testé et mise en place car bien plus lisible.
    Je n'ai pas testé la version de @Jreaux qui doit fonctionner tout autant.

  11. #11
    Invité
    Invité(e)
    OK.
    Donc, tu te contentes de copier-coller, sans chercher à comprendre...

  12. #12
    Nouveau membre du Club
    J'ai aussi mis en place la version des switch avec initialisation des zones, merci !

  13. #13
    Nouveau membre du Club
    Citation Envoyé par jreaux62 Voir le message
    OK.
    Donc, tu te contentes de copier-coller, sans chercher à comprendre...
    Pourquoi dis-tu cela ?????