8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une série de condition servant de filtre pour afficher différent type d'information mais un type de condition de marche et affiche son contenu alors qu’elle ne devrait pas... Ne trouvant pas d'ou le problème peu venir je vous montre la condition en question en espérant un éclaircissement ...


if(($_GET['cat'] != 'chantier') OR ($_GET['cat'] != "part_instit") OR ($_GET['cat'] != "maitre_ouv"))
{
//contenu a afficher
}


En vous remerciant par avance.
Modifié par zurim (08 Sep 2007 - 16:53)
Salut,
Tu ne devrais pas mettre des AND à la place des OR ?
Je comprends pas bien ce que tu cherche à faire, mais avec des != ça me paraitrait plus logique ^^;
C'était bien ca.. J’penser avoir testé.
Par contre je ne comprends pas la logique car si l'on met des AND pour que le contenu s'affiche il faut que les trois conditions soient valide non?
Pasque dans mon cas la variable $_GET['cat'] ne prendra qu'une valeur et donc ne pourras contenter les 3 condition d'ou mon utilisation du OR ...

En tout cas merci pour ta reponse.
Il faut garder à l'esprit que les AND et OR portent sur le fait de savoir si une condition se vérifie ou non. AND si tu veux que toutes les conditions soient vérifiées, OR si il suffit que l'une d'entre elles soient vérifiées.
Là ce que tu veux, c'est que les 3 conditions ("différent de chantier", "différent de part_instit" et "différent de maitre_ouv") soient vérifiées. Donc tu utiliseras des AND.

Prenons des exemples, ce sera peut-être plus clair.

Quand tu utilisais OR :
Si $_GET['cat'] vaut "poulet" : poulet est différent de "chantier", donc ton texte va s'afficher (il ne sera pas nécessaire de vérifier les autres conditions, puisque OR signifie qu'il suffit qu'une d'entre elles se vérifie).

Si $_GET['cat'] vaut "maitre_ouv" : maitre_ouv est différent de chantier et maitre_ouv est différent de part_instit, MAIS maitre_ouv est égal à maitre_ouv (ta troisième condition). L'une des conditions est vérifiée, donc le texte s'affiche aussi !

Finalement, l'une des trois conditions sera TOUJOURS vérifiée.



En utilisant AND :
Si $_GET['cat'] vaut Poulet : Poulet est différent de chantier, de part_instit, et de maitre_ouv. Donc les trois conditions sont vérifiées, donc le texte s'affiche.

Si $_GET['cat'] vaut "maitre_ouv" : maitre_ouv est différent de chantier et de part_insti, mais il n'est pas différent de maitre_ouv. Donc la troisième condition n'est pas vérifié, et comme AND signifie qu'il faut que toutes les conditions soient vérifiées, le texte ne s'affichera pas.



Bon, je suis pas certain d'avoir été très clair, mais j'espère que tu as compris Smiley biggrin
Modifié par BlueScreenJunky (08 Sep 2007 - 16:48)