Page 1 sur 1

Deux conditions

Posté : 23 juil. 2007, 17:02
par Dom!
Bonjour,

Je souhaites ajouter unje condition à cette ligne :
if (isset($_GET['id']))
 {
                 $id = $_GET['id'];  //ICI
				 }
				 else
				 {
                 $id = $_POST['id'];  //ICI
				 }
Je souhaite dire que si $id = rien alors $id= 18

Pourriez vous me dire comment faire ?
merci d'avance

Posté : 23 juil. 2007, 17:03
par Genova
if ($id == '')
{
   $id = 18;
}
:roll:

Tu avais déjà fait la condition en français, j'ai du mal à saisir là où tu bloquais en fait.

Posté : 23 juil. 2007, 17:10
par Hywan
Je vais me faire fusillier par Genova, mais préfère faire : empty($var), plutôt que $var == ''. Si jamais ta valeur est null, true, ou false, le test de Genova ne risque pas de marcher :)

Posté : 23 juil. 2007, 18:50
par Genova
@HyWaN :tir2:
:P

Normalement
if (empty($var))
et
if ($var == '')
c'est la même chose, car PHP considère NULL, FALSE, 0 et ' comme la même chose dans le cadre d'une comparaison sans les types.

Me trompe-je ?

Posté : 23 juil. 2007, 19:03
par Hywan
Euh sûrement. Tu me fous le doute du coup.

PHP est amené à être moins souple sur le typage, alors autant utiliser les fonctions appropriées maintenant :D (jm'en sors pas trop mal là :P)

Mais quand même, préfère empty à une comparaison simple à chaîne vide. Tu es sûr de ton résultat comme ça.

Posté : 23 juil. 2007, 21:04
par Dom!
Bon merci pour la réponse !!

Mais je mets quoi alors ??? :D

Posté : 23 juil. 2007, 21:58
par Cyrano
Je te propose ceci :
$id = (isset($_GET['id']) && !empty($_GET['id'])) ? $_GET['id'] : ((isset($_POST['id']) && !empty($_POST['id'])) ? $_POST['id'] : 18);
En d'autre termes (si jamais ce code te semble digne des plus obscurs codes des geek maniaco-délirants) :
Si $_GET['id'] est défini et non vide, on assigne la valeur à $id, sinon, si $_POST['id'] est défini et non vide, alors on l'assigne à $id et si rien de tout ça n'est vrai, alors on affecte 18 à $id.

Ceci est un opérateur ternaire (avec un second ternaire imbriqué. Au besoin, regarde dans la FAQ, il y a un sujet qui traite des opérateurs ternaires.

Posté : 23 juil. 2007, 22:41
par Hywan
merde, jsuis un geek obscure maniaco-délirant ... c'est grave docteur ? :?
Y en a-t-il d'autre parmi ce forum :lol: ? Je dénonce (et toc) Cyrano d'en être un déjà ! Plus on est de fous, euh de maniaco-délirants, plus on rit ! (c'est bien connu).

Posté : 23 juil. 2007, 22:53
par Hubert Roksor
Pour des raisons de clarté, vous pouvez vous passer d'isset() puisqu'empty() vérifie si la variable est définie sans émettre d'erreur.

Posté : 23 juil. 2007, 23:04
par Hywan
Voici en plus une bonne raison d'utiliser empty : il vérifie aussi l'existence d'une variable :)

+1 pour Hubert.

Posté : 24 juil. 2007, 01:06
par Ryle
Euh oui, mais non.. c'est pas non plus à généraliser...

Si la variable n'est pas définie, empty() retournera vrai sans emettre d'avertissement, mais si la variable est appellée ensuite vous y aurez droit quand même.

Ce n'est vallable, comme le précise Hubert, que pour plus de lisibilité dans ce cas : le isSet() n'est pas nécessaire si l'on teste juste la variable avec empty(), mais cette fonction ne dispense pas de l'appel a isSet() pour vérifier que la variable existe avant de pouvoir l'utiliser :)