Afficher l'erreur si....

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher l'erreur si....

par orgerix » 05 nov. 2007, 22:37

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

par Ryle » 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

par orgerix » 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 ?

par Power Web » 05 nov. 2007, 15:09

Ah ouai mince j'ai inversé et j'ai oublié else, merci :wink:

par h0_noMan » 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
}
?>

par Power Web » 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)

par Kaoteknik » 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:

par Power Web » 03 nov. 2007, 17:36

Oui empty() est beaucoup mieux que mettre != NULL ou != "" ;)

par Ryle » 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 ;)

par Kaoteknik » 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".

par h0_noMan » 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 .

par Kaoteknik » 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 
}
?>

Afficher l'erreur si....

par Dom! » 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.