Changer l'action d'un formulaire de recherche en PHP
cs_JABE
Messages postés13Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 9 juillet 2009
-
15 mars 2009 à 18:28
cs_JABE
Messages postés13Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 9 juillet 2009
-
9 juil. 2009 à 17:01
Bonjour,
Je cherche un moyen de changer l'action d'un formulaire de recherche en PHP.
Par contre si dailymotion est coché ça lancerait:
http://www.dailymotion.com/relevance/search/ Et si Google Video est coché ça lancerait:
http://video.google.com/videosearch?q=
J'ai cherché en vain des codes équivalents en PHP (et non en Javascript) et je n'ai rien trouvé, voilà pourquoi je fais appel à vous .
stanilou
Messages postés193Date d'inscriptionmercredi 5 mai 2004StatutMembreDernière intervention18 novembre 2009 20 mars 2009 à 19:56
Tout simplement car c'est impossible en PHP... La seule façon serais que quand tu clique sur ton bouton radio, ça recharge ta page en détectant le bouton radio précedement coché pour modifier le contenu du champ "action"....
Passe par le javascript, c'est vraiment pas compliqué pour faire ça.
Ça marche parfaitement mais j'aimerais améliorer mon code pour l'alléger.
En fait avec le code PHP actuel change l'action du formulaire en fonction de ce que je mets comme value="" sur le bouton radio, j'aimerais faire la même chose mais en fonction de l'id du bouton radio.
Ça allégera un peu mon code car j'utilise déjà les id pour les <label>.
Mais comment faire ça en PHP ?
En javascript il faut passer par un getElementById mais en PHP ?
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 21 mars 2009 à 03:04
Salut,
Je n'ai pas tout lu mais :
Changer l'action d'un formulaire de recherche en PHP = > c'est impossible en PHP, comme le dit Stanilou.
J'imagine que tu t'es mal exprimé car :
L'"action" d'un formulaire c'est ça :
<form method="post" action="bidule.php" >
== impossible à modifier par PHP une fois envoyé au client.
Que tu gères les radios côté php et que tu rediriges vers le moteur qui va bien est une chose, mais ce n'est pas une modification de l'action du formulaire.
En somme ton sujet prête à confusion.
[...]value="" sur le bouton radio, j'aimerais faire la même chose mais en fonction de l'id du bouton radio
=>
Ce qui va surtout alourdir ton code c'est de vouloir passer par des chemins exotiques.
Pour moi ton code ne devrait pas être changer dans ce sens; tu n'as que 3 choix, inutile de chercher la petite bête (avec plusieurs dizaines de choix il faudrait sans doute procéder autrement) Et en plus il est bien plus lisible comme ça !!
Si tu veux alléger pense plutôt à ça : $moteur_de_recherche trim($_POST['video']); > ne sert à rien
header('Location: ' . $url); > tu le répètes à chaque fois > ne sert à rien
=>
switch ( $_POST['video'] ) {
case 'bidule':
$url = 'patati';
break;
etc ...
}
header('Location:'.$url);
default:
echo 'Veuillez sélectionner un moteur de recherche';
break;
= > ne sert à rien puisque tu as forcement un radio actif (rien à voir avec les centrales nucléaires hein)
$url_params preg_replace('/(\ )+/', '+', $champ_de_recherche); > en terme d'allégement la regex n'est peut être pas le meilleur choix (pas testé, à voir)
Tu pourrai faire encore bien mieux, comme virer tout le switch et faire un truc du genre :
$url = array('youtube'=>'http://www.youtube.com/results?search_type=&search_query=',
etc...);
header('Location:'.$url[$_POST['video']].$url_params);
En gros, si tu cherche un allégement réduit ton code d'une quinzaine de ligne mais ne cherche pas à réinventer la poudre côté données formulaire.
cs_JABE
Messages postés13Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 9 juillet 2009 9 juil. 2009 à 17:01
Bonjour,
Je remonte ce topic car il y a du nouveau, merci à kohntark
pour ses remarques, j’en ai pris note, et j’ai fait évoluer mon code dispoici.
Par contre kohntark m’avait dit que:
$moteur_de_recherche
= trim($_POST['video']);
=> ne sert à rien
Mais quand je l’enlève ça ne fonctionne plus.
D'autre part dans mon code actuel j’utilise 2 fichiers d’actions
différents , un pour la recherche audio et un pour la recherche vidéo,
existe-t-il un moyen de fusionner ces actions dans un seul fichier action.php
mais en gardant 2 formulaires différents ?
Je pense que ce serait mieux car le fichier d’action ne
serait chargé qu’une fois par les visiteurs du site.