un if dans un if...Comment faire

Petit nouveau ! | 7 Messages

27 juin 2013, 17:54

Bonjour à tous et à toutes!

J'aurais aimé effectué une boucle conditionnelle avec la condition changeante en fonction du contexte.

Je m'explique :

Si la réécriture d'URL est activé, ma condition est la condition 1, si la réécriture ne l'ai pas, ma condition est la condition 2.

Pour éviter de me réécrire les bloc d'instruction, j'aurais aimé pouvoir utiliser un if dans un if... mais celà n'a pas l'air de fonctionner :twisted:
J'essai en vain de mettre un bout de code, mais mon post est refusé à chaque fois "This message was flagged as spam and has been denied."

Petit nouveau ! | 7 Messages

27 juin 2013, 17:54

$maVariable = (isset($variable1) && $variable1 != 'undefined') ? $k->menutype == 'selection A' && $k->menutype == $results2[0]->menutype : $k->menutype == 'selectionA';
ce qui revient à

if (isset ($variable1) && $variable1 != 'undefined')
{
$maVariable = $k->menutype == 'selection A' && $k->menutype == $results2[0]->menutype;
}
else
{
$maVariable = $k->menutype == 'selection A';
}


je sous par la suite utiliser le contenu de $maVariable , dans une autre condition du genre if( [contenu de $maVariable] )

mais j'ai eu beau essayé plein de chose, ça ne marche pas....

Merci à vous :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juin 2013, 19:25

oui mais non écrit les if correctement et se sera mieux.

parce que la tu mélange affectation et comparaison.

donc un == doit être remplacé par un if

tu peux écrire
if() {
if(){
// etc
}
else{
}
}
else{}

l’utilisation du ternaire doit rester exceptionnel car moins lisible :)


@+
Il en faut peu pour être heureux ......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juin 2013, 19:34

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.
Il en faut peu pour être heureux ......

Petit nouveau ! | 7 Messages

27 juin 2013, 23:29

Merci Moogli pour cette réponse, il est vrai que j'avais hésiter à placer le post dans php débutant au départ.. :)

Cependant, j'ai également, un erreur dans le code que j'ai copié, mon bloc d'instruction est celui ci :
if (isset ($variable1) && $variable1 != 'undefined')
{
$maVariable = "$k->menutype == 'selection A' && $k->menutype == $results2[0]->menutype";
}
else
{
$maVariable = "$k->menutype == 'selection A'";
}
et donc je souhaite utilisé le contenu de $maVariable c'est à dire :
$k->menutype == 'selection A' && $k->menutype == $results2[0]->menutype
ou
$k->menutype == 'selection A'

en l'utilisant dans un autre bloc if
if(str_replace(' " ', '', $maVariable) ){...}
mais je n'arrive pas a recuperer le contenu de $maVariable, pour qu'il puisse être utilisé dans le deuxième if

En espérant avoir été un peu plus clair.
:)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 juin 2013, 19:44

poste le code que tu utilise ce sera plus simple.

indique nous ce qui ne va pas dans ce code :)



@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

28 juin 2013, 20:05

1stement:
Parenthéser les expressions booléennes ne mange pas de pain et est plus lisible
if ((isset ($variable1)) && ($variable1 != 'undefined')))
{
     $maVariable = (($k->menutype == 'selection A' ) && ($k->menutype == $results2[0]->menutype));
}
else
{
     $maVariable = $k->menutype == 'selection A';
}
2ment
isset() rend faux sur une variable non définie.
3 indenter son code le rend plus lisible
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

orenx22
Invité n'ayant pas de compte PHPfrance

28 juin 2013, 22:13

Bonjour à tous,

Il existe un possédé bien sympathique avec les conditions, les exceptions. An gros t'en qu'une exception n'est pas trouvé le code continu, dans la cas inverse on ignore tout le code jusqu'à la gestion de l'exception.

Exemple :

try
{
// du code ;

// si la condition_1 == true alors on va direct au catch ;
if( $condition_1 )  throw new Exception( "la condition 1 est vrai" );

// du code ;

// si la condition_2 == false alors on va direct au catch ;
if( !$condition_2 ) throw new Exception( "la condition 2 est fausse" );

// du code
}
catch( Exception $e )
{
die( $e-> getMessage() );
}
Ciao

Eléphant du PHP | 79 Messages

01 juil. 2013, 02:52

Un autre exemple pour faire plus clair :
<?php

// remplacer les valeurs false par true de caca et pipi pour voir le déroulement de toto
// et donc du procédé du try / catch

$result = array();

$caca = true ;

$pipi = false ;

$result[] = "Toto rentre dans les toilettes." ;

try
{    
    if( $caca )
    {
        throw new Exception( "Toto fait caca." );
    }
    
    $result[] = "Toto siflotte l'air de rien." ;
    
    if( $pipi )
    {
        throw new Exception( "Toto fait pipi." );
    }
    
    $result[] = "Toto boit de l'eau du robinet." ;
}
catch( Exception $e )
{
    $result[] = $e-> getMessage();
    
    $result[] = "Toto cours se laver ses deux mains gauches." ;
}

$result[] = "Toto sort des toilettes." ;

echo implode( "<br>", $result );

?>
Je peux pas faire plus simple ><

Petit nouveau ! | 7 Messages

01 juil. 2013, 12:12

Bonjour,
Juste pour ce qui est de mon isset :
2ment
isset() rend faux sur une variable non définie.
Je sais que isset renvoi false sur une variable non définie, mais le 'undefined' testé ici, et une valeur que je donne quand la variable n'a pas une des valeurs autorisée.
Il est vrai que le choix de la valeur donné n'est peut être pas adéquat, mais je trouvais ceci plus clair que de mettre une valeur du type "pasBon" ou autre chose de ce genre.

Je te remercie également pour les petites règles de nommage et de codage, étant autodidacte à 100%, je n'ai pas les bonnes pratiques qu'il me faudrait, mais je tiens compte de toute remarques.

@orenx22 : Merci pour cette solution ;)

Je teste et vous dis ce qu'il en est.