Deux conditions

Eléphant du PHP | 424 Messages

23 juil. 2007, 17:02

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
Youpi Youpi Yo !

ViPHP
ViPHP | 928 Messages

23 juil. 2007, 17:03

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.

ViPHP
ViPHP | 4674 Messages

23 juil. 2007, 17:10

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 :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 928 Messages

23 juil. 2007, 18:50

@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 ?

ViPHP
ViPHP | 4674 Messages

23 juil. 2007, 19:03

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.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 424 Messages

23 juil. 2007, 21:04

Bon merci pour la réponse !!

Mais je mets quoi alors ??? :D
Youpi Youpi Yo !

Mammouth du PHP | 19672 Messages

23 juil. 2007, 21:58

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 4674 Messages

23 juil. 2007, 22:41

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).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

23 juil. 2007, 22:53

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.

ViPHP
ViPHP | 4674 Messages

23 juil. 2007, 23:04

Voici en plus une bonne raison d'utiliser empty : il vérifie aussi l'existence d'une variable :)

+1 pour Hubert.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

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

24 juil. 2007, 01:06

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...