Petite question PHP / formulaires

WRInaute accro
Hello,

Si quelqu'un peut m'aider...
La question me semble simple, mais je n'ai pas les connaissances suffisantes pour y répondre...

Je cherche à créer un formulaire (1 case "recherche" + 1 radio_button "langue" + 1 bouton "valider"), qui ferait en sorte qu'une fois que le visiteur a "validé", il soit redirigé vers une page type -http://blabla.com/recherche=$recherche&langue=$langue

Quelqu'un peut m'aider ?

Merci !
 
WRInaute accro
Merci

J'essaye effectivement en ce sens, mais comme je le dis, je suis assez limité niveau connaissance php...

Qu'est-ce que tu mettrais comme code complet pour ce formulaire ?
 
WRInaute discret
Ca devrait donner :

Code:
echo '<form action="'.$PHP_SELF.'" method="get">';
echo "\n";
echo '<INPUT TYPE="text" NAME="recherche"><br>';
echo "\n";
echo '<INPUT TYPE="radio" NAME="langue" VALUE="français"><br>';
echo "\n";
echo '<INPUT TYPE="submit" VALUE="Valider">';
echo "</form>";
 
WRInaute accro
ok mais dans ce cas, si le formulaire est sur la page -http://blabla.com/formulaire.php ça ne va pas se finir sur -http://blabla.com/resultat.php?lang=foo&recherche=bar ...

J'ai peut-être mal formulé ma question... il me faut une nouvelle url reprennant les 2 entrées du formulaire, comme résultat ;)
 
WRInaute discret
L'url est mauvaise pour commencer http://www.example.com/page.php?recherche=$recherche&langue=$langue

Donc cela deviendrait:
<FORM METHOD="GET" ACTION="http://www.example.com/page.php">
<INPUT TYPE="text" NAME="recherche">
<INPUT TYPE="text" NAME="langue">
<INPUT TYPE="submit">
</FORM>

Il n'est pas necessaire de mettre le moindre code php ici.
 
WRInaute discret
Dans ce cas pour la première ligne tu mets tout simplement :
<form action="/resultat.php" method="get">

Et voilà :wink: ça devrait marcher

tradjus a dit:
Il n'est pas necessaire de mettre le moindre code php ici.
Oui c'est vrai, j'avais le code d'une de mes pages
 
WRInaute accro
hmmm...

ça ne semble pas être ça...

en fait je veux vraiment que lorsque la personne a cliqué sur "valider", il tombe sur "http://example.com/langue_choisie/sa_recherche.html"...

tricky...

en fait au final, ça donnera cette méthodologie:

Le visiteur est sur www.example.com

Je fais une recherche sur la langue de son browser, via
Code:
if(strstr($HTTP_ACCEPT_LANGUAGE,"fr")) {$lang="[color=green]fr[/color]";}

De là je lui affiche une page "formulaire-fr.php" ou la langue par défaut est "fr".

Il y entre une recherche, et valide.

Connaissant la langue, ou lui laissant la définir par un radio_button, je le redirige vers une page http://fr.example.com/recherche/sa_recherche.html

Le tout étant url_rewrité pour que fr.example.com/recherche/sa_recherche.html équivale à fr.example.com/index.php?recherche=sa_recherche
 
WRInaute discret
LOL :lol: je suis trop lent :lol:
En résumé le code devrait donc donner :
Code:
<form action="/resultat.php" method="get">
<INPUT TYPE="text" NAME="recherche">
<INPUT TYPE="radio" NAME="langue" VALUE="français">
<INPUT TYPE="submit" VALUE="Valider">
</form>
Des corrections à faire ?

Après tu exploites $langue et $recherche avec le fichier resultat.php
 
WRInaute discret
Salut,tu crée une page php recherche.php
tu récupères dans cette page les valeurs des variables du formulaire passées par le navigateur grâce au clique sur submit...
ex fichier1.php :
fichier1.php
Code:
<html>
<form name='' method='post' action='recherche.php'>
<input type='text' value='un texte a chercher...' name='boite1'> 
<input type='radio' name='radio1'>Fr
<input type='radio' name='radio2'>En
<input type='submit'  value='envoyer'>
</form>
<html>
recherche.php
Code:
<?php
$langue1=$_POST["radio1"];
$langue2=$_POST["radio2"];
if($langue1 != ""){echo"Langue française cochée";}
else{echo"Langue anglaise cochée";}
$contenu=$_POST["boite1"];
echo"<br>Vous avez ecrit : $contenu";
?>
 
WRInaute accro
;)

nos posts et corrections s'entrecroisent ;)

(on va pas se plaindre des réponses rapides, non plus... ;) )

en fat, pas de problème pour exploiter les données passées par $_GET, mais je voudrais les afficher dans l'url (indexation des résultats de recherche ;) )
 
WRInaute discret
Alors là tu avais vraiment mal formulé ta question.

La reponse ne sera pas du php (exécuté coté serveur) mais du javascript (exécuté côté client et qui donc aura accès à l'input user).


<form action="" onSubmit="javascript:window.location('http://example.com/' + this.form(0).langue.value +'/'+this.form(0).recherche.value)" method="get">
 
WRInaute accro
pas pensé à plancher sur du .js ...

si tu ne vois pas d'équivalent en php (même en redirect), je vais essayer ça...
 
WRInaute discret
En redirect, c'est possible en php.
Reprends le +- post de Decibel Daft Punk n'est pas mort et...

dans recherche.php
<?php
$langue=$_POST["langue"];
if($langue != ""){
$recherche=$_POST["recherche"];
header("Location: http://www.example.com/".$langue."/".$recherche);
exit();
}
?>
 
WRInaute discret
HawkEye_TpfH a dit:
pas pensé à plancher sur du .js ...
si tu ne vois pas d'équivalent en php (même en redirect), je vais essayer ça...
on est redirigé vers une page donnée en fct du formulaire :
Code:
<?php
echo"<script language='javascript'>newlocation="http://www.votresite.com?recherche=$contenu&langue=$languechoix";setTimeout('window.location.replace(newlocation)',2000)</script>";
?>
le 2000 définit le temps = 2sec
 
WRInaute accro
Tout d'abord, merci beaucoup pour votre aide...

On pourrait croire à un programme d'aide en ligne "live" tellement ça a été rapide...

Ensuite, voici la solution sélectionnée:

background

La page www.example.com "include" une page spécifique à la langue-navigateur détectée (ou non... default="en").

pages spécifiques

Chaque page spécifique à la langue détectée présente un formulaire selon le code
Code:
<form name='' method='post' action='index-[i]$lang[/i].php'> 
<input type='text' value='search...' name='search'> 
<input type='submit'  value='search'> 
</form>

Chacune de ces pages renseigne également en premières lignes du code: (example pour langue = "en"
Code:
if($search != ""){ 
$search=$_POST["search"]; 
header("Location: http://en.example.com/search/".$search.".html"); 
exit(); 
}

et celà fonctionne à merveille...

Il n'y a plus qu'à l'adapter aux autres langues, et à assainir le contenu de $search via eregi_replace !

Merci à vous !
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut