Page 1 sur 1

Opérateur qui devient du texte - question

Posté : 01 juil. 2007, 23:35
par chrislabricole
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

Posté : 01 juil. 2007, 23:44
par @rthur
Bonjour,

As-tu essayé cela:
echo ($_GET['nb1']+$_GET['nb2']); 
Sinon, il te reste encore la fonction intval():
http://fr.php.net/intval

Posté : 01 juil. 2007, 23:56
par chrislabricole
à 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'];

Posté : 02 juil. 2007, 00:08
par Aureusms
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...

Posté : 02 juil. 2007, 00:20
par chrislabricole
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:

Posté : 02 juil. 2007, 03:01
par AB
La solution que t'a donné @rthur devrait fonctionner si tu souhaites réaliser une addition.
Tu l'as testée?

Posté : 02 juil. 2007, 09:12
par Aureusms
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.

Posté : 02 juil. 2007, 14:08
par chrislabricole
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 !

Posté : 02 juil. 2007, 14:17
par Ryle
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 :)

Posté : 02 juil. 2007, 14:23
par chrislabricole
à oui, sa marche aussi, ben j'préfère ta solution :D

résolu ! :D