Bonsoir,

En fonction de ma page j'effectue ou pas une opération;

Si ce n'est pas la page forget ou reset j'effectue cette opération

Mais ma condition ne marche pas


if ($val_view !='forget' OR $val_view !='reset')
        //if ($val_view != 'forget' )
            {
            if(!$this->user_items)
                {
                $this->page_403();
                exit();
                } 

            $level= $this->page_items->level;
            
            if(isset($this->user_items->role_id))
                {
                $role=$this->user_items->role_id; 
            
                if($role < $level)
                    {
                    $this->page_habilitation();
                    exit();
                    }        
                }
            }


Merci pour votre aide
Modifié par dudu22 (08 Jan 2023 - 20:06)
Hello,

Je te recommande d'utiliser l'opérateur de comparaison "||" au lieu de "or" au sein de conditions. Cela peut éviter des confusions et bien qu'ils soient similaires, leur principale différence se trouve dans l'ordre des priorités appliqué par PHP lorsque la condition sera évaluée. Plus d'infos à ce sujet dans la doc de PHP, dans les commentaires il y a pas mal d'explications Smiley smile

Dans ton cas, la condition n'est pas bien compliquée donc je ne suis pas sûr qu'utiliser "||" résolve le problème, mais c'est une bonne pratique qui vaut également pour le "&&" au lieu du "and".
a écrit :
Mais ma condition ne marche pas

Qu'as-tu essayé pour déboguer ? Que vaut $val_view lors de l'exécution de ton script ?
Vérifie sa valeur avec var_dump() afin d'avoir une piste. A noter que tu peux aussi tester ta condition avec var_dump, afin de voir si c'est bien le résultat que tu attends ou non
var_dump($val_view !='forget' || $val_view !='reset');

Modifié par Loraga (09 Jan 2023 - 20:20)
Merci Loraga

J'ai testé avec :


var_dump($val_view !='forget' || $val_view !='reset'); 


Et quelle que soit la vue il me met true
Modifié par dudu22 (10 Jan 2023 - 12:01)
Salut,

C'est normal Smiley lol :
- si tu met "forget" c'est different de "reset" donc ça passe
- si tu met "reset" c'est different de "forget" donc ça passe

Si tu débutes en logique, je te conseille de commencer par essayer de décrire ton problème dans les 2 sens, régulièrement ça sera plus simple dans un cas que dans l'autre. La typiquement dans l'autre sens c'est nettement plus compréhensible sans avoir besoin de la moindre réflexion :

//On commence par gérer le cas où l'on a "forget" ou le cas ou l'on a "reset".
if ($val_view =='forget' OR $val_view =='reset')
{

}
else //dans le else on est donc dans le cas ou l'on a ni forget ni reset
{

}


Quand dans le if tu as (A Ou B) dans le else tu as donc Non(A Ou B)

Donc si tu n'as besoin que du cas du 'else' soit tu t’embêtes pas et tu mets directement le Non devant ta condition (et dans le cas présent je trouve sans doute plus lisible):

if(!($val_view =='forget' OR $val_view =='reset'))


Soit il faut apprendre les formules pour savoir le re écrire : Non(A Ou B) => Non A Et Non B

if($val_view !='forget' AND $val_view !='reset')

Modifié par Mathieuu (10 Jan 2023 - 14:15)
Merci beaucoup Mathieuu pour tes explications très claires.

Effectivement passer par une négation m'a un peu embrumé l'esprit.

J'ai résolu le problème avec deux if imbriqués mais je vais essayer une de tes conditions.

Cordialement,

Hervé