Afficher l'erreur si....

Eléphant du PHP | 424 Messages

02 nov. 2007, 19:54

Bonjour à tous !

J'utilise ceci pour afficher une erreur :
<?php if(isset($_GET['cat']) && ($_GET['cat'] != "")) { // Affiche l'erreur  ?>
Cependant il y a deux critéres qui détermine si l'erreur doit s'afficher... Comment faire pour afficher mon erreur en fonction de deux critéres : cat et type.

J'ai essayé ceci mais sans succés...
<?php if(isset($_GET['cat']) && ($_GET['type'] != "")) { // Affiche l'erreur  ?>
Merci pour votre aide.
Youpi Youpi Yo !

Eléphant du PHP | 185 Messages

02 nov. 2007, 20:01

Tu peux y parvenir en utilisant l'opérateur OR (ou, syntaxe : ||).
<?php
if (isset($_GET['cat']) && ($_GET['cat'] != "") || isset($_GET['type']) && ($_GET['type'] != "")) { 
// Affiche l'erreur 
}
?>

Eléphant du PHP | 445 Messages

02 nov. 2007, 20:18

if(isset($_GET['cat']) && ($_GET['cat'] != "")) { // Affiche l'erreur 
Tu veux bien afficher une erreur si il y a un cat dans l'url ?
Et pas le contraire : afficher une erreur si il n'y a pas de cat dans l'URL .

Eléphant du PHP | 185 Messages

02 nov. 2007, 20:26

Dans ce cas remplace != par ==.

L'opérateur != teste la différence, et l'opérateur == teste l'égalité. Dans le cas présent il semble en effet plus logique d'utiliser == pour afficher une erreur si l'url ne contient pas de "cat".

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

03 nov. 2007, 01:43

La réponse a déjà été donnée, mais d'une manière générale, commence par exprimer clairement ton besoin en français, tu verras que la solution te viendras tout de suite :

tu veux afficher le message d'erreur :

Code : Tout sélectionner

SI $_GET['cat'] est défini ET que $_GET['cat'] est différent de vide OU $_GET['type'] est défini ET que $_GET['type'] est différent de vide
Reste plus qu'à remplacer avec les opérateurs logiques, mettre les parenthèses qui vont bien (elles ne sont pas utiles ici, les ET étant prioritaire sur les OU) et tu as ta condition.

Regarde également du côté de la fonction empty() qui permet de tester directement si une variable est vide ou non définie ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 61 Messages

03 nov. 2007, 17:36

Oui empty() est beaucoup mieux que mettre != NULL ou != "" ;)
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Eléphant du PHP | 185 Messages

04 nov. 2007, 00:22

Je confirme, la fonction empty est nettement plus appropriée dans le cas présent. J'ai honte de n'y avoir pas pensé ! :oops:

Néanmoins la solution proposée plus haut devrait produire le même résultat, non ? :roll:

Eléphant du PHP | 61 Messages

05 nov. 2007, 02:47

Oui cela revient au même mais bon les fonctions n'existent pas pour rien :)
<?php
if(isset($_GET['cat']) && !empty($_GET['cat']) || isset($_GET['type']) && !empty($_GET['type']))
{
     // Erreur
}
?>
Toujours pareil le ! exprime la négation
!= NULL -> n'est pas NULL
!empty -> n'est pas vide (NULL)

== NULL -> est NULL
empty -> est vide (NULL)
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Eléphant du PHP | 445 Messages

05 nov. 2007, 03:43

Oui cela revient au même mais bon les fonctions n'existent pas pour rien :)
<?php
if(isset($_GET['cat']) && !empty($_GET['cat']) || isset($_GET['type']) && !empty($_GET['type']))
{
     // Erreur
}
?>
Ton exemple pose un soucis.
Si $_GET['cat'] n'est pas définie alors aucune erreur.
Il vaux mieux definir les conditions pour effectuer les actions plutot que pour afficher une erreur.
<?php
if(isset($_GET['cat']) && ($_GET['cat']!="") || isset($_GET['type']) && ($_GET['type']!=""))
{
     // Traitement
}else{

   // Erreur
}
?>

Eléphant du PHP | 61 Messages

05 nov. 2007, 15:09

Ah ouai mince j'ai inversé et j'ai oublié else, merci :wink:
Site sur THEOPERATION M.D. -> Nouvelle version (100%)
Ton code, tu indenteras; et le bohneur, tu feras.

Mammouth du PHP | 693 Messages

05 nov. 2007, 16:34

<?php
if(isset($_GET['cat']) && !empty($_GET['cat']) || isset($_GET['type']) && !empty($_GET['type']))
{
     // Erreur
}
?>
Je crois que la fonction isset est inutile puisque si une variable n'est pas vide, ca veut forcement dire qu'elle existe non ?

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

05 nov. 2007, 21:50

Elle est effectivement inutile mais pas vraiment pour cette raison, une variable vide existe aussi :)

En fait, la fonction empty() retourne TRUE si la variable spécifiée est
- NULL (non définie ou définie mais sans valeur)
- est une chaine vide ou une chaine contenant la valeur "0"
- est le chiffre 0
- le booléen FALSE
- un tableau vide : array()

Le isSet() n'est donc pas utile, dans la mesure où, si la variable n'est pas définie, empty() ne génerera pas d'erreur et retournera "vrai" :
if ( empty($_GET['cat']) || empty($_GET['type']) ) // Erreur
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 693 Messages

05 nov. 2007, 22:37

Heu, c'est ce que je voulais dire mais j'ai pas été claire :)