Perdu dans les conditions if,elseif,else ...

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Perdu dans les conditions if,elseif,else ...

Message le Lun Mai 14, 2007 11:38

Bonjour

Bon, j'essaye de comprendre les conditions (mieux vaut tard que jamais) mais je bute sur un truc qui doit etre tout con :
Code: Tout sélectionner
<form action="#" method="post">
  <p>
age:<input name="$age" type="text" />
<input value="Valider" type="submit" />
</p>
</form>
<br />
<?php

$age = $_POST['$age']; //On recupere la valeur du formulaire transmit par $_POST pour la

donner à $age

if($age >= 18 ) //Si $age est supérieure ou égal à 18 ans
{
echo 'Vous avez plus de  18 ans, vous pouvez continuer.'; //on donne droit à l'accès
}
elseif($age == 0 && $age<18) //Autrement Si $age est égal à 0 et inférieure à 18
{
echo ' Il faut etre majeur pour continuer!'; //on interdit l'accès
}
else //Autrement
{
echo 'Il faut mettre un chiffre !'; // On répond autre chose
}
?>

Théoriquement, si rien est inscrit dans le formulaire ou si ce n'est pas un chiffre la réponse retourné devrait etre celle du "else" mais la il me renvoit celle du "elseif" et je ne pige pas pourquoi ... Ou est mon erreur svp ?
Merci


CashAttitude
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Jeu Mar 08, 2007 19:27

Message le Lun Mai 14, 2007 11:43

A mon avis ça résulte de l'interprétation de la variable $age, si elle n'est pas définit, le test sera interprété comme $age == ( 0 = faux ) donc la condition sera vérifiée..

Essaie de mettre
Code: Tout sélectionner
elseif($age === 0 && $age<18)

Avec 3 égals tu force PHP à considérer le 0 seulement comme un chiffre et non pas aussi comme un faux


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Lun Mai 14, 2007 11:55

Hargggggg ... dans le tableau des conditions du site que j'utilise, ce symbole (===) n'existe pas :? .
D'un autre coté, je suis parvenue une fois à afficher les bonnes fonctions sans (===) mais comme un gland, il à fallut que je complique le truc (pour comprendre) et j'ai finis par m'y perdre :lol: ...
Merci pour l'info CashAttitude, je vais tester sa de suite :)

Petit edit:
=== ne fonctionne pas. Les chiffres compris entre 0 et 17 me renvoit sur le "else". J'ai donc éssayé avec "!=", ce qui fonctionne mieux mais ignore également le chiffre 0 ..donc 0 me renvoit sur "else" au lieu du "elseif" ... que c'est compliqué .....


SparH
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 159
Inscription: Ven Mar 10, 2006 12:18

Message le Lun Mai 14, 2007 12:45

Code: Tout sélectionner
elseif( ($age <= 18) && ($age >=0) )


test ça :wink:
(moi je mettrai en plus un javascript pour vérifier que le champ n'est pas vide)


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5326
Inscription: Lun Juin 13, 2005 14:13

Message le Lun Mai 14, 2007 12:46

Euh
Code: Tout sélectionner
elseif($age == 0 && $age<18)

Si age est égal à 0 ET age inférieur à 18

un peu bizarre, non ? si $age est égal à zéro, il sera forcément inférieur à 18, non ?


CashAttitude
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Jeu Mar 08, 2007 19:27

Message le Lun Mai 14, 2007 12:53

nickargall a écrit:Euh
Code: Tout sélectionner
elseif($age == 0 && $age<18)

Si age est égal à 0 ET age inférieur à 18

un peu bizarre, non ? si $age est égal à zéro, il sera forcément inférieur à 18, non ?


Oui par contre 17 ne marchera pas car ce n'est pas égal à 0 ;)
C'est bien ça que tu veux :

Code: Tout sélectionner
elseif( ($age <= 18) && ($age >=0) )


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Lun Mai 14, 2007 13:28

SparH, sa ne fonctionne pas. Si le champs est vide,sa me renvoit le "elseif".

nickargall:
Code: Tout sélectionner
elseif($age == 0 && $age<18)

Le code dit bien si age=0 et si age inferieure à 18 alors (donc si age comprit entre 0 et 18 ) on renvoit l'accès refusé .. non ?
Bon d'un autre coté, j'essaye de comprendre tout sa, alors il faut etre un peut indulgent :lol: .

CashAttitude:
Code: Tout sélectionner
elseif( ($age <= 18) && ($age >=0) )

Le code ne fonctionne pas non plus car si le champs est vide, il me renvoit le elseif au lieu de else.

Ce que je cherche à comprendre et à faire:

Si "if" est egal ou sup. à 18 -> c'est ok on envoit le echo de if
Si "elseif" est comprit entre 0 et 17 inclus -> c'est pas ok on envoi le echo de elseif
Si le champs est vide ou ne commence pas par un chiffre ->on lit le "else"


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5326
Inscription: Lun Juin 13, 2005 14:13

Message le Lun Mai 14, 2007 13:51

Le code dit bien si age=0 et si age inferieure à 18 alors (donc si age comprit entre 0 et 18 ) on renvoit l'accès refusé .. non ?
Bon d'un autre coté, j'essaye de comprendre tout sa, alors il faut etre un peut indulgent


Je dis juste que si l'age =0, il est forcément inférieur à 18 ..

Sinon, ma proposition, à chaud,
Code: Tout sélectionner
if($age >= 18 ) //Si $age est supérieure ou égal à 18 ans
{
//on donne droit à l'accès
echo 'Vous avez plus de  18 ans, vous pouvez continuer.';

}
elseif( $age<18)
//Autrement Si $age est inférieure à 18
{
//on interdit l'accès
echo ' Il faut etre majeur pour continuer!';
}
else if($age=="" || (!isset($age))  )
//Autrement Si age est vide ou n'est pas défini
{
// On répond autre chose
echo 'Il faut mettre un chiffre !';
}
Dernière édition par nickargall le Lun Mai 14, 2007 13:51, édité 1 fois.


CashAttitude
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Jeu Mar 08, 2007 19:27

Message le Lun Mai 14, 2007 13:51

Code: Tout sélectionner
if( isset($age) and is_int($age) and $age>0) {

   if($age>=18) echo 'Vous avez plus de  18 ans, vous pouvez continuer.'
   else              echo ' Il faut etre majeur pour continuer!';

}
else {
    echo 'Il faut mettre un chiffre !';
}

Dernière édition par CashAttitude le Lun Mai 14, 2007 13:54, édité 1 fois.


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5326
Inscription: Lun Juin 13, 2005 14:13

Message le Lun Mai 14, 2007 13:53

+1 CAsh, sauf que ca doit aussi marcher si $age est égal ou supérieur à 18, tu peux éditer et ajouter un = :)


CashAttitude
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Jeu Mar 08, 2007 19:27

Message le Lun Mai 14, 2007 13:54

;)

Morph1er
WRInaute impliqué
WRInaute impliqué
 
Messages: 307
Inscription: Mer Juil 07, 2004 14:05

Message le Lun Mai 14, 2007 13:58

Autant mettre un switch() ça sera plus lisible :P.


nickargall
WRInaute accro
WRInaute accro
 
Messages: 5326
Inscription: Lun Juin 13, 2005 14:13

Message le Lun Mai 14, 2007 14:05

On peut mettre un switch avec une condition 'inférieure" ou supérieure ? Je cherchais ça sur l'web (bon pas longtemps je l'avoue)


CashAttitude
WRInaute discret
WRInaute discret
 
Messages: 52
Inscription: Jeu Mar 08, 2007 19:27

Message le Lun Mai 14, 2007 14:14

Le switch ne marche qu'avec des égals si je ne m'abuse

Koxin-L
WRInaute accro
WRInaute accro
 
Messages: 1925
Inscription: Jeu Mar 29, 2007 15:54

Message le Lun Mai 14, 2007 14:15

Bah tu met un valeur par défaut à 0 et c'est réglé...

Code: Tout sélectionner
<form action="#" method="post">
  <p>
age:<input name="$age" type="text" value="0"/>
<input value="Valider" type="submit" />
</p>
</form>
<br />
<?php

$age = $_POST['$age']; //On recupere la valeur du formulaire transmit par $_POST pour la

donner à $age

if($age >= 18 ) //Si $age est supérieure ou égal à 18 ans
{
echo 'Vous avez plus de  18 ans, vous pouvez continuer.'; //on donne droit à l'accès
}
elseif($age != 0 && $age<18) //Autrement Si $age est différent de 0 et inférieure à 18
{
echo ' Il faut etre majeur pour continuer!'; //on interdit l'accès
}
else //Autrement
{
echo 'Il faut mettre un age !'; // On répond autre chose
}
?>

Perdu dans les conditions if,elseif,else ...

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités