Page 1 sur 1

Afficher l'erreur si....

Posté : 02 nov. 2007, 19:54
par Dom!
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.

Posté : 02 nov. 2007, 20:01
par Kaoteknik
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 
}
?>

Posté : 02 nov. 2007, 20:18
par h0_noMan
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 .

Posté : 02 nov. 2007, 20:26
par Kaoteknik
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".

Posté : 03 nov. 2007, 01:43
par Ryle
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 ;)

Posté : 03 nov. 2007, 17:36
par Power Web
Oui empty() est beaucoup mieux que mettre != NULL ou != "" ;)

Posté : 04 nov. 2007, 00:22
par Kaoteknik
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:

Posté : 05 nov. 2007, 02:47
par Power Web
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)

Posté : 05 nov. 2007, 03:43
par h0_noMan
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
}
?>

Posté : 05 nov. 2007, 15:09
par Power Web
Ah ouai mince j'ai inversé et j'ai oublié else, merci :wink:

Posté : 05 nov. 2007, 16:34
par orgerix
<?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 ?

Posté : 05 nov. 2007, 21:50
par Ryle
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

Posté : 05 nov. 2007, 22:37
par orgerix
Heu, c'est ce que je voulais dire mais j'ai pas été claire :)