Perdu dans les conditions if,elseif,else ...
19 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Perdu dans les conditions if,elseif,else ...
Bonjour
Bon, j'essaye de comprendre les conditions (mieux vaut tard que jamais) mais je bute sur un truc qui doit etre tout con :
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
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

- Messages: 52
- Inscription: Jeu Mar 08, 2007 19:27
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
Avec 3 égals tu force PHP à considérer le 0 seulement comme un chiffre et non pas aussi comme un faux
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
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
...
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é .....
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
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é .....
- Code: Tout sélectionner
elseif( ($age <= 18) && ($age >=0) )
test ça
(moi je mettrai en plus un javascript pour vérifier que le champ n'est pas vide)
-

nickargall - WRInaute accro

- Messages: 5326
- Inscription: Lun Juin 13, 2005 14:13
Euh
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 ?
- 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

- Messages: 52
- Inscription: Jeu Mar 08, 2007 19:27
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) )
SparH, sa ne fonctionne pas. Si le champs est vide,sa me renvoit le "elseif".
nickargall:
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
.
CashAttitude:
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:
- 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
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

- Messages: 5326
- Inscription: Lun Juin 13, 2005 14:13
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

- Messages: 52
- Inscription: Jeu Mar 08, 2007 19:27
- 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

- Messages: 5326
- Inscription: Lun Juin 13, 2005 14:13
+1 CAsh, sauf que ca doit aussi marcher si $age est égal ou supérieur à 18, tu peux éditer et ajouter un = 
-

nickargall - WRInaute accro

- Messages: 5326
- Inscription: Lun Juin 13, 2005 14:13
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

- Messages: 52
- Inscription: Jeu Mar 08, 2007 19:27
Le switch ne marche qu'avec des égals si je ne m'abuse
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
}
?>
19 messages • Page 1 sur 2 • 1, 2
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 :
- Parts de marché des moteurs aux USA (Août 2007)
- Parts de marché des moteurs aux USA (Janvier 2007)
- Parts de marché des moteurs aux USA (Mars 2007)
- Parts de marché des moteurs aux USA (Avril 2007)
- Nouvelle version de GoogleStats : v1.1
- Parts de marché des moteurs aux USA (Juin 2007)
- 3ème partie de l'article .htaccess : les réécritures conditionnelles
- Yahoo! Site Match
- Outil officiel de suppression de pages de l'index Google
- Statistiques des requêtes sur les moteurs en 2006
- if, elseif, else, je m'y perd...
- Redirection sous conditions
- PHP for à double conditions
- probleme de Conditions générales ??
- conditions d'utilisation googlemap
- Respect des conditions?
- Requête à double conditions
- URL Rewriting et conditions
- Conditions générales de vente
- Conditions pour acheter un .fr
- conditions pour un NDD en .FR
- Conditions d'utilisation : quelle règlementation ?
- Google analytics conditions d'utilisation
- Les conditions de réalisation d'un concours ?
- Conditions générales et suivi de référencement
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum