![]() |
Forum SELFHTML: Archives: |
Le message suivant est de: Christophe, 10. 05. 2005, 10:54
Bonjour à tous,
Depuis je laisse register_global à OFF, je suis obligé de réécrire mes scripts. Pour récupérer une seule variable, pas de problémes. Pour en rècupérer plusieurs, par contre, je suppose que cela corresponde à recupérer les variables d'une array mais je n'ai pas la syntaxe.
Comment par exemple remplacer : print "$n1 $operation $n2"; (simple operation avec deux chiffres transmis dans un formulaire) par l'équivalent avec les variables $_POST['n1'] $_POST['operation'] et $_POST['n2']?
Merci pour votre aide
Christophe
Le message suivant est de: David, 10. 05. 2005, 14:20
http://www.site-en-stock.net/
Bonjour,
»» Bonjour à tous,
»»
»» Depuis je laisse register_global à OFF,
Ça c'est une bonne idée
»» Comment par exemple remplacer : print "$n1 $operation $n2"; (simple operation avec deux chiffres transmis dans un formulaire) par l'équivalent avec les variables $_POST['n1'] $_POST['operation'] et $_POST['n2']?
Pour récupérer tes champs issus d'un formulaire, il suffit de donner à $_POST[] le même nom que ton champ de formulaire. Exemple de champ de formulaire:
<input name="Champ1" type="text" size="25" maxlength="30" value="" />
tu le récupéres grâce à $_POST['Champ1'].
Si j'ai bien compris ta question, print "$n1 $operation $n2"; devient print($_POST['n1']." ".$_POST['operation']." ".$_POST['n2']);
Voilà, voilà.
David
--
Get Firefox!
http://www.mozilla-europe.org/fr/products/firefox/
Avec ça vous allez voir ce qu'est un vrai navigateur web...

Le message suivant est de: Christophe, 11. 05. 2005, 08:55
Bonjour,
»» tu le récupéres grâce à $_POST['Champ1'].
OK, mais avec les nombres entrés dans deux type="text" et un operateur entrés dans un select, j'ai bien obtenu (avec les variables n1=11, n2=31 et l'operateur + par exemple) : 11+31 et non le résultat de l'opération, ce qui est le but recherché.
»» Si j'ai bien compris ta question, print "$n1 $operation $n2"; devient print($_POST['n1']." ".$_POST['operation']." ".$_POST['n2']);
Je ne comprends pas la place des "" dans ta proposition. J'obtiens la même résultat (11+31) avec :
print($_POST['n1'] . $_POST['operation'] . $_POST['n2']);
Merci et à bientôt Christophe
Le message suivant est de: David, 11. 05. 2005, 09:55
http://www.site-en-stock.net/
Salut,
»» par exemple : 11+31 et non le résultat de l'opération, ce qui est le but recherché.
Ah ben il fallait le dire tout de suite, c'est pas ce que j'avais compris dans ton message.
Avec les $_POST[] tu récupères du texte, pour PHP 11+31 c'est une chaîne de texte, pas une opération à effectuer tu comprends?
On peut résoudre ton problème avec des instruction conditionnels par exemple:
$resultat = 0;
if($_POST['operateur'] == "+")
{
$resultat = settype($_POST['n1'], 'float') + settype($_POST['n2'], 'float');
}
else if($_POST['operateur'] == "-")
{
$resultat = settype($_POST['n1'], 'float') - settype($_POST['n2'], 'float');
}
else if($_POST['operateur'] == "*")
{
$resultat = settype($_POST['n1'], 'float') * settype($_POST['n2'], 'float');
}
else if($_POST['operateur'] == "/")
{
$resultat = settype($_POST['n1'], 'float') / settype($_POST['n2'], 'float');
}
echo($resultat);
PHP fait l'opération arithmétique suivant l'opérateur. J'ai forcé avec settype les variables de POST à devenir des nombres flottant (donc tu pourra passer des nombres à virgules). Et avec echo() j'affiche le résultat.
Si tu veux faire des progès en PHP, lis la documentation: http://www.php.net/manual/fr/ tu vas y apprendre plein de bonnes choses.
David
--
Get Firefox!
http://www.mozilla-europe.org/fr/products/firefox/
Avec ça vous allez voir ce qu'est un vrai navigateur web...

Le message suivant est de: Christophe, 11. 05. 2005, 10:53
Merci, ta solution est limpide. Voilà la page html source :
<html>
<body>
<form name="monformulaire" action ="test.php" method="post">
<input type="text" name="n1"><br>
<input type="text" name="n2"><br>
<select name="operateur" onchange="javascript:monformulaire.submit();">
<option value="">--operation--</option>
<option value="+">--addition--</option>
<option value="-">--soustraction--</option>
<option value="*">--multiplication--</option>
<option value="/">--division--</option>
</select>
</form>
</body>
</html>
Dans la cible test.php, j'ai recopié ta solution(que j'ai comprise. Et maintenant je ne comprends pas pourquoi ça ne fonctionne pas?!
Christophe
Le message suivant est de: David, 11. 05. 2005, 14:14
http://www.site-en-stock.net/
Autant pour moi la fonction settype() n'avait pas l'effet que j'attendais et PHP devine que ce sont des chiffres, voici un exemple qui fonctionne chez moi:
<?php
$resultat = 0;
if($_POST['submit']=="loaded")
{
if($_POST['operateur'] == "plus")
{
$resultat = $_POST['n1'] + $_POST['n2'];
}
else if($_POST['operateur'] == "moins")
{
$resultat = $_POST['n1'] - $_POST['n2'];
}
else if($_POST['operateur'] == "multiplier")
{
$resultat = $_POST['n1'] * $_POST['n2'];
}
else if($_POST['operateur'] == "diviser")
{
$resultat = $_POST['n1'] / $_POST['n2'];
}
echo($resultat);
}
?>
<html>
<body>
<form name="monformulaire" action ="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="n1"/><br/>
<input type="text" name="n2"/><br/>
<select name="operateur">
<option value="plus">--addition--</option>
<option value="moins">--soustraction--</option>
<option value="multiplier">--multiplication--</option>
<option value="diviser">--division--</option>
</select><br/>
<input type="hidden" name="submit" value="loaded" />
<input type="submit" value="Calculer" />
</form>
</body>
</html>
David
--
Get Firefox!
http://www.mozilla-europe.org/fr/products/firefox/
Avec ça vous allez voir ce qu'est un vrai navigateur web...

Le message suivant est de: Christophe, 12. 05. 2005, 07:49
Merci David. Le script fonctionne parfaitement. Il ne me reste plus qu'à l'étudier car ce qui importe pour moi c'est de comprendre... à partir de quelque chose qui fonctionne, bien sûr!
Christophe
© 1998-2004
selfhtml@fr.selfhtml.org