Opérateur qui devient du texte - question

Mammouth du PHP | 959 Messages

01 juil. 2007, 23:35

Bonjour,

j'ai une quelque chose qui me tracasse, qui n'est pas normal mais qui est normal à la fois.... :

dans l'url, j'ai :
http://localhost/scriptphp.php?nb1=5&nb2=1
mon code :
echo $_GET['nb1'] + $_GET['nb2'];
en fait, il écrit :
"5 + 1", et non pas "6" (le résultat)
je sais c'est normal, mais comment faut il faire alors pour qu'il affiche le résultat ?? :roll:

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

01 juil. 2007, 23:44

Bonjour,

As-tu essayé cela:
echo ($_GET['nb1']+$_GET['nb2']); 
Sinon, il te reste encore la fonction intval():
http://fr.php.net/intval
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 959 Messages

01 juil. 2007, 23:56

à mince, pardonner moi, je me suis gouré dans les exemples... :
:oops:
dans l'url, j'ai :
http://localhost/scriptphp.php?nb1=5&nb2=1&mode=+
mon code :
echo $_GET['nb1'].$_GET['mode'].$_GET['nb2'];

ViPHP
ViPHP | 1996 Messages

02 juil. 2007, 00:08

Tu fais une condition sur ton mode et tu ajoutes c'est tout :
if (isset($_GET["mode"]) && $_GET["mode"] == "+") {
   $nb1  =$_GET["nb1"];
   $nb2  =$_GET["nb2"];
   $nombre_final = $nb1+$nb2;
   }

echo $nombre_final;
Ton problème est que le "." fais une concaténation I.e relie des textes ensembles, il ne les ajoute pas...
Ton code
echo $_GET['nb1'].$_GET['mode'].$_GET['nb2'];
va afficher : 5+2. mais il ne pas pas faire la formule...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 959 Messages

02 juil. 2007, 00:20

ata ata, si je mais sa dans ma page :
if (isset($_GET["mode"]) && $_GET["mode"] == "+") {
   $nb1  =$_GET["nb1"];
   $nb2  =$_GET["nb2"];
   $nombre_final = $nb1+$nb2;  
   }
echo $nombre_final;
et que l'url est :
http://localhost/scriptphp.php?nb1=5&nb2=1&mode=+

bah il s'affiche rien... :roll:

ViPHP
AB
ViPHP | 5818 Messages

02 juil. 2007, 03:01

La solution que t'a donné @rthur devrait fonctionner si tu souhaites réaliser une addition.
Tu l'as testée?

ViPHP
ViPHP | 1996 Messages

02 juil. 2007, 09:12

Oui je suis d'accord avec AB, la solution d'Arthur devrait fonctionner. Cependant, n'oublie jamais de tester tes variables avant et de vérifier que nb1 et nb2 sont bien des nombres : sinon message d'erreur.

Si rien ne s'affiche, cela doit être à cause de la condition if. Si tu l'enlève, tu as la proposition d'Artur.

Pour voir quelles sont les variables envoyées via la méthode GET fais :
echo '<pre>';
print_r ($_GET);
echo '</pre>';
Cela devrait t'afficher toutes les variables.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 959 Messages

02 juil. 2007, 14:08

en !
j'ai compri...

Array
(
[nb1] => 5
[nb2] => 1
[mode] =>
)
le plus n'est reconnu comme rien dans le GET ....

donc en fait :
if (isset($_GET["mode"]) && $_GET["mode"] == "plus") { // le plus en toutes lettres
   $nb1  =$_GET["nb1"];
   $nb2  =$_GET["nb2"];
   $nombre_final = $nb1+$nb2;  
   }
echo $nombre_final; 
et dans l'URL,
http://localhost/scriptphp.php?nb1=5&nb2=1&mode=plus

je pense que c'est la seule Solution...
car à mon avis, le "+" est un caractère spécial n'ayant pas de code ASCII...

Merci !

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

02 juil. 2007, 14:17

Le signe "+" dans l'url est interprété comme un espace :) (cf. urlencode())

Tu peux transformer ton plus avec rawurlencode() pour le coder en %xy (ou utiliser directement le code) et ainsi le récupérer normalement :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 959 Messages

02 juil. 2007, 14:23

à oui, sa marche aussi, ben j'préfère ta solution :D

résolu ! :D