Vous n'êtes pas connecté.








Bonjour tout le monde, depuis peu, j'ai decidé de me lancer dans le php
Mais là je coince...
Sur le fichier HTML, il y a le formulaire comme ceci :
<h1>Introduire votre note</h1>
<form action="switch.php" method="post">
<input type="text" name="NOTE" /><input type="submit" value="OK" />
</form>Et voici le code PHP (fichier switch.php)
<?php
switch ($_Post['NOTE'])
{
case 0: echo "Tu es vraiment un gros Zér0 !!!";
break;
case 5:
echo "Tu es très mauvais";
break;
case 7:
echo "Tu es mauvais";
break;
case 10:
echo "Tu as pile poil la moyenne, c'est un peu juste...";
break;
case 12:
echo "Tu es assez bon";
break;
case 16:
echo "Tu te débrouilles très bien !";
break;
case 20:
echo "Excellent travail, c'est parfait !";
break;
default:
echo "Désolé, je n'ai pas de message à afficher pour cette note";
}
?>Le code coince...
A mon avis, ça vient du fait qu'il voit $_Post['NOTE'] comme une chaîne de caractère et non comme un nombre, donc comment lui dire que c'est un nombre ?
Et de plus je ne suis pas sûr du switch ($_Post['NOTE']) , est-ce que ceci ce fait ?
Merci de votre aide 
TOP Hors ligne




Essaie de mettre $_Post en majuscules 
En general ce genre de variables sous PHP sont en majuscules ( $_GET $_POST $_COOKIE $_SESSION $_SERVER ... etc )
Et je met toujours des quotes doubles dans mes $_GET et $_POST soit $_POST["NOTE"] même si ça ne change pas grand chose..
Autre chose : Pourquoi mettre NOTE en majuscules ? Essaie de la mettre en miniscule, c'est préferable 
Voila j'espere qu'avec ça, cela marchera 
EDIT :
Un autre conseil pour ton switch..
Et si la personne veut mettre une note que tu as pas dans ta condition ?
Ce procedé fonctionne trés bien, et je te conseille de l'utiliser 
<?php
switch ($_Post['NOTE'])
{
case 0: echo "Tu es vraiment un gros Zér0 !!!";
break;
case 1:
case 2:
case 3:
case 4:
case 5:
echo "Tu es très mauvais";
break;
case 6:
case 7:
echo "Tu es mauvais";
break;
case 8:
case 9:
case 10:
echo "Tu as pile poil la moyenne, c'est un peu juste...";
break;
case 11:
case 12:
echo "Tu es assez bon";
break;
case 13:
case 14:
case 15:
case 16:
echo "Tu te débrouilles très bien !";
break;
case 17:
case 18:
case 19:
case 20:
echo "Excellent travail, c'est parfait !";
break;
default:
echo "Désolé, je n'ai pas de message à afficher pour cette note";
}
?>Dernière modification par can93 (07/07/06 14:45:47)
TOP Hors ligne








S'il veut regrouper par intervalle, faudrait peut être mettre des if ? ( condition de comparaison )
TOP Hors ligne

can93 a écrit:
Autre chose : Pourquoi mettre NOTE en majuscules ? Essaie de la mettre en miniscule, c'est préferable
Non Ce n'est pas préférable.
La variable gloabe $_POST récupère la valeur d'un champs par l'intermédiaire de son nom. Dans son cas, le champs se nomme NOTE donc quand il récupère la valeur du champs il spécifie bien à $_POST qu'il veut la valeur du champs nommé NOTE. Donc _POST['NOTE'].
Par contre ce qui est peut-être maladroit, c'est d'avoir nommé le champs (dans le code HTML) en majuscule 
@ rockboy214 --> Ecrit $_POST['NOTE'] au lieu de $_Post['NOTE'], ça va aller tout seul. Les variables gloables s'écrivent toujours en majuscule.
@ xeter --> Il aurait pu le faire avec une structure if, elseif, else mais c'est bcp plus lourd qu'avec un switch.
EDIT et P.S. : Met des apostrophes pour encadrer chaque nombre dans ton switch, genre case '5'; ...
TOP Hors ligne




Boudha a écrit:
Par contre ce qui est peut-être maladroit, c'est d'avoir nommé le champs (dans le code HTML) en majuscule
Oui bon, il va de soi, que si on le met en miniscule dans switch.php il faudrait aussi le faire dans la page html
TOP Hors ligne








Merci à tout le monde ça marche
can93=> j'ai pas mis toutes les notes car c'était avant tout pour tester le formulaire avec le switch 
TOP Hors ligne


@boudha : PHP n'étant pas un langage typé, autant gagner qq dizaines d'octets à se passer des guillemet-simples, ils ne servent à rien.
@can93 : Effectivement, ton switch n'est plus vraiment justifié, qq if ac des intervals seront bcp plus légers et logiques.
TOP Hors ligne








C'est simple:
SI tu fais toutes les notes tu utilises switch sinon tu utilises if, elseif, else
TOP Hors ligne


Ju a écrit:
@boudha : PHP n'étant pas un langage typé, autant gagner qq dizaines d'octets à se passer des guillemet-simples, ils ne servent à rien.
@can93 : Effectivement, ton switch n'est plus vraiment justifié, qq if ac des intervals seront bcp plus légers et logiques.
effectivement, mais on peut passer outre cette lacune et effectuer un cast (transtypage) ce qui permet d'obtenir le résultat escompté ....
par exemple, soit $variable = $_POST['note']
si je fais echo $variable; j'affiche le contenu simple. Quel qu'il soit.
il existe une fonction php qui permet de forcer le typage d'une variable, elle s'appelle sprintf (ou printf, une variante non string).
sprintf prend 2 arguments en paramètre, le string de sortie, qui est une sorte de modèle, de "pattern", et dans l'ordre d'apparition dans le pattern, les variables.
Le pattern s'écrit comme suit :
"valeur à afficher = %qqch" où qqch = %s pour un string, %d pour un chiffre (decimal) %f pour un float, %h pour un hexadécimal.
Mon exemple plus haut devient :
echo sprintf("variable = %s",$variable);
autre exemple qui permet de clarifier mon second point :
Soient $prenom = "Biquet" et $chiffre = 40
Exécuter sprintf("Salut, %s, tu pèses %d kg",$prenom, $chiffre); affiche :
Salut, Biquet, tu pèses 40 kg
Là où le cast est notable est si l'on permute les variables en fin de sprintf :
exécuter sprintf("Salut, %s, tu pèses %d kg",$chiffre, $prenom); affiche :
Salut, 40, tu pèses 0 kg
Car 40 en string est et restera 40, mais Biquet en chiffre, ça fait 0.
FYI RTFM ASAP => Tux : La Légende <=
NewsletTux
TOP Hors ligne








Malcolm a écrit:
effectivement, mais on peut passer outre cette lacune et effectuer un cast (transtypage) ce qui permet d'obtenir le résultat escompté ....
par exemple, soit $variable = $_POST['note']
si je fais echo $variable; j'affiche le contenu simple. Quel qu'il soit.
il existe une fonction php qui permet de forcer le typage d'une variable, elle s'appelle sprintf (ou printf, une variante non string).
sprintf prend 2 arguments en paramètre, le string de sortie, qui est une sorte de modèle, de "pattern", et dans l'ordre d'apparition dans le pattern, les variables.
Le pattern s'écrit comme suit :
"valeur à afficher = %qqch" où qqch = %s pour un string, %d pour un chiffre (decimal) %f pour un float, %h pour un hexadécimal.
Mon exemple plus haut devient :
echo sprintf("variable = %s",$variable);
autre exemple qui permet de clarifier mon second point :
Soient $prenom = "Biquet" et $chiffre = 40
Exécuter sprintf("Salut, %s, tu pèses %d kg",$prenom, $chiffre); affiche :
Salut, Biquet, tu pèses 40 kg
Là où le cast est notable est si l'on permute les variables en fin de sprintf :
exécuter sprintf("Salut, %s, tu pèses %d kg",$chiffre, $prenom); affiche :
Salut, 40, tu pèses 0 kg
Car 40 en string est et restera 40, mais Biquet en chiffre, ça fait 0.
Comme le C
C'est fou comme les languages se ressemblent 
TOP Hors ligne


le PHP est très largement inspiré du C... il contient des modules ressemblant au Perl (expresstions rationnelles), mais la plupart des langages ressemblent à des ancêtres, l'asp ressemble au basic qq part 
FYI RTFM ASAP => Tux : La Légende <=
NewsletTux
TOP Hors ligne


Malcolm c'est quoi le rapport ??
Quel est l'intérêt de typer ainsi à l'arrache ac une printf ?
TOP Hors ligne


c'est utilisé en tant que système de protection contre les injections SQL...
FYI RTFM ASAP => Tux : La Légende <=
NewsletTux
TOP Hors ligne


Malcolm a écrit:
c'est utilisé en tant que système de protection contre les injections SQL...
Certes mais dans ce cas je vois mal une injection SQL lol.
TOP Hors ligne


oui, ici effectivement, mais je donnais l'info à toutes fins utiles 
FYI RTFM ASAP => Tux : La Légende <=
NewsletTux
TOP Hors ligne