Utiliser des variables de <input> dans une fonction

Petit nouveau ! | 5 Messages

03 juin 2011, 19:50

Bonjour.

Je débute tout juste en PHP que déjà je rencontre un problème et j'aurais vraiment besoin d'aide. 8-|

En fait, j'ai créé un formulaire avec 4 entrées. J'aimerais que ces 4 entrées soient prises comme variables (ce sont des nombres naturels), puis envoyées dans ma fonction.
Celle-ci va faire pleins de comparaisons puis afficher un message final, avec les résultats des calculs.

A part les 4 entrées récupérées par les <input>, il n'y a aucune autre variable, seulement des constantes et pleins de if... else.

Le problème, c'est que lorsque je clique sur le bouton (qui possède un ONCLICK=), rien ne se passe.
J'ai tenté de mettre dans la fonction, tout à la fin après les if .. else un echo. Mais ça ne change rien.

Dois-je faire quelque chose de particulier ?
Sinon, voici le code mon formulaire :

Code : Tout sélectionner

<Form name="parchos"> Petit : <Input name="Petit" id="Petit" value="5000"><br/> Moyen : <Input name="Moyen" id="Moyen" value="15000"><br/> Grand : <Input name"=Grand" id="Grand" value="25000"><br/> Puissant : <Input name="Puissant" id="Puissant" value="60000"><br/> <INPUT TYPE=button VALUE="Calculer" ONCLICK=affparchottage()/> </Form>
Je peux aussi vous coller la fonction en entière si besoin. Mais elle est assez longue car elle comporte beaucoup de tests.

En vous remerciant d'avance.

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

03 juin 2011, 22:26

Attention, le onclick c'est une action javascript réalisée par l'utilisateur dans le navigateur, côté client, tandis que php est un script qui s'exécute sur le serveur. Tu ne pourras donc pas exécuter une fonction php avec une action javascript sans solliciter le serveur...

Il faut soit réaliser tes contrôles en javascript (auquel cas tu peux faire appel aux champs de ton formulaire en utilisant "document.nom_de_ton_formulaire.nom_de_ton_champ.value" ou "document.getElementById('id_de_ton_champ').value"), soit soumettre ton formulaire (en direct ou avec ajax) et traiter les données reçues par php (avec $_POST ou $_GET)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 5 Messages

04 juin 2011, 14:03

Bonjour.

Pour vous, quelle est la méthode la plus rapide à apprendre et surtout à appliquer ?
Je pense qu'étant sur ce forum, je devrais plutôt privilégier le PHP (logique), donc j'vais partir sur cette base là.

Je dois donc créer une nouvelle page où sera redirigé l'utilisateur lorsqu'il cliquera sur le bouton. La fonction en elle-même, je l'ai mise dans la page cible.php, c'est bien ça ?

J'ai changé le type du formulaire, j'y ai mis TYPE=submit (au lieu de button), ce qui fait que j'arrive maintenant à être redirigé vers la page cible. :)

J'ai réussi à afficher les données entrées par l'utilisateur, mais par contre pour utiliser ces données là dans le fonction, c'est autre chose.

Dans ma fonction, j'ai nommé les variables $Petit, $Moyen, $Grand, $Puissant, ce qui sont les données envoyées par l'utilisateur. J'ai ensuite renommé les name="" dans le formulaire de la même manière, peut-être que ça les relierait..

Ensuite, pour la création de la fonction, dois-je écrire affparchottage($Petit, $Moyen, $Grand, $Puissant) ou seulement affparchottage() ? Puis pour appeler ma fonction, j'ai écrit :

Code : Tout sélectionner

<?php affparchottage($Petit, $Moyen, $Grand, $Puissant); ?>
Mais des erreurs surviennent sur cette ligne. :/

Et enfin, dans la fonction elle-même, j'ai voulu afficher un résultat final, j'ai donc écrit hors des boucles de test :

Code : Tout sélectionner

echo "$pPetit + $pMoyen + $pGrand + $pPuissant";[code] Les nouvelles variables sont définies dans la fonction, là n'est pas le problème. Mais ça n'affiche rien. :( Je crois comprendre. Il faut que je relie les variables utilisées dans la fonction avec celles prises par le formulaire. Mais comment ? :/ Merci.

Petit nouveau ! | 5 Messages

04 juin 2011, 14:14

J'ai changé toutes les variables dans ma fonction par $_POST['nom_de_la_case'] et miracle... ça marche. Oo

Donc pour l'instant, c'est résolu. Merci à vous. :)