J'ai composé un formulaire à POSTer dont je souhaite router
l'action en fonction du bouton submit qui est pressé.
Le problème en paramétrant l'action avec quelque chose du type
$_POST['bouton'] est qu'il faut presser le bouton 2 fois pour
que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton
se branchant sur une fonction JS contenant un
document.formulaire.action="URL adéquate" ; c'est du bricolage,
et ça ne fonctionne pas.
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je
nécessairement passer par du javascript ?
Je ne suis famillier ni avec JS ni avec les "header".
Merci pour votre aide.
Pierre
PS : J'ai besoin des variables $_POST dans la cible, dont le GET
ne peut suffire.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yann PIQUET
Bonjour
J'ai composé un formulaire à POSTer dont je souhaite router l'action en fonction du bouton submit qui est pressé. Le problème en paramétrant l'action avec quelque chose du type $_POST['bouton'] est qu'il faut presser le bouton 2 fois pour que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton se branchant sur une fonction JS contenant un document.formulaire.action="URL adéquate" ; c'est du bricolage, et ça ne fonctionne pas.
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je nécessairement passer par du javascript ? Je ne suis famillier ni avec JS ni avec les "header".
Merci pour votre aide.
Pierre
PS : J'ai besoin des variables $_POST dans la cible, dont le GET ne peut suffire.
Hum...
On peux faire des deux manieres, je pense... Mais avec PHP, c'est plus complexe (à mon sens).
La methode avec PHP nécéssite la librairie CURL: tu commence par faire un formulaire normal, par exemple:
<!-- Note que les deux submit ont le même nom, car je test leur valeures. Tu peux aussi utiliser isset() et changer le nom --> <input type="submit" name="vers" value="Envoyer au un"> <input type="submit" name="vers" value="Envoyer au deux"> </form>
</body>
</html>
Ensuite, on passe au php:
(fichier test.php ici) <?php // Création d'une ressource CURL //Merci php.net :P $ch = curl_init();
//On regarde vers où on doit se rediriger. //Note que les urls sont completes //Utilise une structure select ... case si //tu utilise plus de deux redirections ^^ $redir = ($_POST['vers'] == "envoyer au un") ? "http://127.0.0.1/usenet_test/testdeux.php" : "http://127.0.0.1/usenet_test/testtrois.php";
// Définition de l'URL et autres options appropriées
//Celle-ci défini qu'on va envoyer les headers POST curl_setopt($ch, CURLOPT_POST, 1);
//Celle-ci en défini le contenu; ici, j'envoi directement le tableau $_POST curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
//Et celle-là défini l'url par la variable choisie précédement curl_setopt($ch, CURLOPT_URL, $redir);
// Récupération de l'URL et passage au navigateur curl_exec($ch);
// Fermeture de la ressource CURL et libération des ressources systèmes curl_close($ch); ?>
<!-- Ici les deux peuvent avoir des noms differents --> <input type="submit" name="vers" value="Envoyer au un" onClick="javascript: document.forms[0].action = 'testdeux.php'"> <input type="submit" name="vers" value="Envoyer au deux" onClick="javascript: document.forms[0].action = 'testtrois.php'"> </form>
</body>
</html>
Seul inconveniant, si le visiteur à désactivé le Javascript, tu l'as dans l'os ;p
Bonne journée,
Aramiil
Bonjour
J'ai composé un formulaire à POSTer dont je souhaite router
l'action en fonction du bouton submit qui est pressé.
Le problème en paramétrant l'action avec quelque chose du type
$_POST['bouton'] est qu'il faut presser le bouton 2 fois pour
que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton
se branchant sur une fonction JS contenant un
document.formulaire.action="URL adéquate" ; c'est du bricolage,
et ça ne fonctionne pas.
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je
nécessairement passer par du javascript ?
Je ne suis famillier ni avec JS ni avec les "header".
Merci pour votre aide.
Pierre
PS : J'ai besoin des variables $_POST dans la cible, dont le GET
ne peut suffire.
Hum...
On peux faire des deux manieres, je pense... Mais avec PHP, c'est plus
complexe (à mon sens).
La methode avec PHP nécéssite la librairie CURL: tu commence par faire
un formulaire normal, par exemple:
<!-- Note que les deux submit ont le même nom, car je test leur
valeures. Tu peux aussi utiliser isset() et changer le nom -->
<input type="submit" name="vers" value="Envoyer au un">
<input type="submit" name="vers" value="Envoyer au deux">
</form>
</body>
</html>
Ensuite, on passe au php:
(fichier test.php ici)
<?php
// Création d'une ressource CURL
//Merci php.net :P
$ch = curl_init();
//On regarde vers où on doit se rediriger.
//Note que les urls sont completes
//Utilise une structure select ... case si
//tu utilise plus de deux redirections ^^
$redir = ($_POST['vers'] == "envoyer au un") ?
"http://127.0.0.1/usenet_test/testdeux.php" :
"http://127.0.0.1/usenet_test/testtrois.php";
// Définition de l'URL et autres options appropriées
//Celle-ci défini qu'on va envoyer les headers POST
curl_setopt($ch, CURLOPT_POST, 1);
//Celle-ci en défini le contenu; ici, j'envoi directement le tableau $_POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
//Et celle-là défini l'url par la variable choisie précédement
curl_setopt($ch, CURLOPT_URL, $redir);
// Récupération de l'URL et passage au navigateur
curl_exec($ch);
// Fermeture de la ressource CURL et libération des ressources systèmes
curl_close($ch);
?>
<!-- Ici les deux peuvent avoir des noms differents -->
<input type="submit" name="vers" value="Envoyer au un"
onClick="javascript: document.forms[0].action = 'testdeux.php'">
<input type="submit" name="vers" value="Envoyer au deux"
onClick="javascript: document.forms[0].action = 'testtrois.php'">
</form>
</body>
</html>
Seul inconveniant, si le visiteur à désactivé le Javascript, tu l'as
dans l'os ;p
J'ai composé un formulaire à POSTer dont je souhaite router l'action en fonction du bouton submit qui est pressé. Le problème en paramétrant l'action avec quelque chose du type $_POST['bouton'] est qu'il faut presser le bouton 2 fois pour que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton se branchant sur une fonction JS contenant un document.formulaire.action="URL adéquate" ; c'est du bricolage, et ça ne fonctionne pas.
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je nécessairement passer par du javascript ? Je ne suis famillier ni avec JS ni avec les "header".
Merci pour votre aide.
Pierre
PS : J'ai besoin des variables $_POST dans la cible, dont le GET ne peut suffire.
Hum...
On peux faire des deux manieres, je pense... Mais avec PHP, c'est plus complexe (à mon sens).
La methode avec PHP nécéssite la librairie CURL: tu commence par faire un formulaire normal, par exemple:
<!-- Note que les deux submit ont le même nom, car je test leur valeures. Tu peux aussi utiliser isset() et changer le nom --> <input type="submit" name="vers" value="Envoyer au un"> <input type="submit" name="vers" value="Envoyer au deux"> </form>
</body>
</html>
Ensuite, on passe au php:
(fichier test.php ici) <?php // Création d'une ressource CURL //Merci php.net :P $ch = curl_init();
//On regarde vers où on doit se rediriger. //Note que les urls sont completes //Utilise une structure select ... case si //tu utilise plus de deux redirections ^^ $redir = ($_POST['vers'] == "envoyer au un") ? "http://127.0.0.1/usenet_test/testdeux.php" : "http://127.0.0.1/usenet_test/testtrois.php";
// Définition de l'URL et autres options appropriées
//Celle-ci défini qu'on va envoyer les headers POST curl_setopt($ch, CURLOPT_POST, 1);
//Celle-ci en défini le contenu; ici, j'envoi directement le tableau $_POST curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
//Et celle-là défini l'url par la variable choisie précédement curl_setopt($ch, CURLOPT_URL, $redir);
// Récupération de l'URL et passage au navigateur curl_exec($ch);
// Fermeture de la ressource CURL et libération des ressources systèmes curl_close($ch); ?>
<!-- Ici les deux peuvent avoir des noms differents --> <input type="submit" name="vers" value="Envoyer au un" onClick="javascript: document.forms[0].action = 'testdeux.php'"> <input type="submit" name="vers" value="Envoyer au deux" onClick="javascript: document.forms[0].action = 'testtrois.php'"> </form>
</body>
</html>
Seul inconveniant, si le visiteur à désactivé le Javascript, tu l'as dans l'os ;p
Bonne journée,
Aramiil
Olivier Miakinen
La methode avec PHP nécéssite la librairie CURL: tu commence par faire un formulaire normal, par exemple:
-- Olivier Miakinen Non, monsieur le juge, je vous le jure : jamais je n'ai cité Bruxelles dans ma signature.
P. Gonogeu
Sinon, tu à aussi la méthode Javascript: [...] <input type="submit" name="vers" value="Envoyer au un" onClick="javascript: document.forms[0].action = 'testdeux.php'">
C'était la syntaxe JS que j'utilisais qui était incorrecte (j'utilisais un document.location au lieu de document.formulaire.action). Ca fonctionne complètement avec ta proposition, et en plus ça lève un autre problème JS à coté.
Comme il me fallait avancer, j'avais commencé à contourner mon problème en utilisant un cookie (puisqu'il semble que "global" ne s'applique qu'au script courant), et comme c'était galère, j'en suis venu à utiliser un champ de $_SESSION pour passer le $_POST. Finalement, ta réponse fonctionnelle m'évite ces acrobaties.
Merci ! Pierre
PS : Les pages sur lesquelles je travaille actuellement sont des pages d'administration pour lesquelles JS est de toutes façons requis. Comme il ne s'agit pas d'un projet à distribuer largement, l'usage de JS ne pose pas de problème.
Sinon, tu à aussi la méthode Javascript:
[...]
<input type="submit" name="vers" value="Envoyer au un"
onClick="javascript: document.forms[0].action = 'testdeux.php'">
C'était la syntaxe JS que j'utilisais qui était incorrecte (j'utilisais
un document.location au lieu de document.formulaire.action).
Ca fonctionne complètement avec ta proposition, et en plus ça
lève un autre problème JS à coté.
Comme il me fallait avancer, j'avais commencé à contourner mon problème
en utilisant un cookie (puisqu'il semble que "global" ne s'applique
qu'au script courant), et comme c'était galère, j'en suis venu à
utiliser un champ de $_SESSION pour passer le $_POST.
Finalement, ta réponse fonctionnelle m'évite ces acrobaties.
Merci !
Pierre
PS : Les pages sur lesquelles je travaille actuellement sont des pages
d'administration pour lesquelles JS est de toutes façons requis. Comme
il ne s'agit pas d'un projet à distribuer largement, l'usage de JS ne
pose pas de problème.
Sinon, tu à aussi la méthode Javascript: [...] <input type="submit" name="vers" value="Envoyer au un" onClick="javascript: document.forms[0].action = 'testdeux.php'">
C'était la syntaxe JS que j'utilisais qui était incorrecte (j'utilisais un document.location au lieu de document.formulaire.action). Ca fonctionne complètement avec ta proposition, et en plus ça lève un autre problème JS à coté.
Comme il me fallait avancer, j'avais commencé à contourner mon problème en utilisant un cookie (puisqu'il semble que "global" ne s'applique qu'au script courant), et comme c'était galère, j'en suis venu à utiliser un champ de $_SESSION pour passer le $_POST. Finalement, ta réponse fonctionnelle m'évite ces acrobaties.
Merci ! Pierre
PS : Les pages sur lesquelles je travaille actuellement sont des pages d'administration pour lesquelles JS est de toutes façons requis. Comme il ne s'agit pas d'un projet à distribuer largement, l'usage de JS ne pose pas de problème.
Guy
J'ai composé un formulaire à POSTer dont je souhaite router l'action en fonction du bouton submit qui est pressé.
vous pouvez sur une page HTML avoir plusieurs formulaires.
Le problème en paramétrant l'action avec quelque chose du type $_POST['bouton'] est qu'il faut presser le bouton 2 fois pour que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton se branchant sur une fonction JS contenant un document.formulaire.action="URL adéquate" ; c'est du bricolage, et ça ne fonctionne pas.
la valeur du bouton est transmise, elle peut donc etre testée par le PHP; ceci fournit une deuxiéme méthode: on execute la meme action, et le php "route";
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je nécessairement passer par du javascript ?
Javascript me semble indiqué pour simplifier la présentation de "FORM"
PS : J'ai besoin des variables $_POST dans la cible, dont le GET ne peut suffire.
J'ai composé un formulaire à POSTer dont je souhaite router
l'action en fonction du bouton submit qui est pressé.
vous pouvez sur une page HTML avoir plusieurs formulaires.
Le problème en paramétrant l'action avec quelque chose du type
$_POST['bouton'] est qu'il faut presser le bouton 2 fois pour
que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton
se branchant sur une fonction JS contenant un
document.formulaire.action="URL adéquate" ; c'est du bricolage,
et ça ne fonctionne pas.
la valeur du bouton est transmise, elle peut donc etre testée par le
PHP; ceci fournit une deuxiéme méthode: on execute la meme action, et le
php "route";
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je
nécessairement passer par du javascript ?
Javascript me semble indiqué pour simplifier la présentation de "FORM"
PS : J'ai besoin des variables $_POST dans la cible, dont le GET
ne peut suffire.
J'ai composé un formulaire à POSTer dont je souhaite router l'action en fonction du bouton submit qui est pressé.
vous pouvez sur une page HTML avoir plusieurs formulaires.
Le problème en paramétrant l'action avec quelque chose du type $_POST['bouton'] est qu'il faut presser le bouton 2 fois pour que l'effet souhaité ait lieu.
J'ai tenté des choses avec un onclick propre à chaque bouton se branchant sur une fonction JS contenant un document.formulaire.action="URL adéquate" ; c'est du bricolage, et ça ne fonctionne pas.
la valeur du bouton est transmise, elle peut donc etre testée par le PHP; ceci fournit une deuxiéme méthode: on execute la meme action, et le php "route";
Puis-je m'en sortir avec seulement du PHP+HTML, où dois-je nécessairement passer par du javascript ?
Javascript me semble indiqué pour simplifier la présentation de "FORM"
PS : J'ai besoin des variables $_POST dans la cible, dont le GET ne peut suffire.