Formulaire de Recherche pour Wordpress+PhpBB3

Résolu
caryljava Messages postés 6 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009 - 4 août 2009 à 19:22
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011 - 5 août 2009 à 18:08
Bonjour à tous,

Je suis à la recherche d'un bout de code qui me permettrait de choisir à partir d'un bouton radio la possibilité de lancer une recherche

1- soit sur mon blog Wordpress
2- soit sur mon forum phpBB3

le problème c'est que je suis loin de savoir développer en javascript et malgré mes heures de recherche je n'ai toujours rien trouver.

actuellement tout ce que j'ai pu obtenir c'est le changement de l'action mais cela ne fonctionne pas puisquele formulaire n'envoie pas la bonne valeur et le bon keyword.

Aujourd'hui mon formulaire est le suivant :

Dans le Head :
<script type="text/javascript">
function changeAction(page){
document.forms['recherche'].action = page;
}
</script>


Dans le body :

<form name="recherche" id="recherche" method="get" action="http://www.mondomaine.com/">



Le Blog

Le Forum</label>

</form>

Obligations :
1-Je dois garder le même name="choix" dans les 2 inputs parce qu'ils sont stylés par la library mootools

2-Pour wordpress l'url envoyée par le formulaire doit utiliser la méthode "get" et être sous la forme :
http://www.mondomaine.com/?s=marecherche


2-Pour PhpBB3 l'url envoyée par le formulaire doit utiliser la méthode "post" et être sous la forme :
http://www.caryl.fr/forum/search.php?keywords=marecherche

3-Je ne dois pas avoir de bouton "recherche", la validation se fait par la touche "entrer"

Est-ce qu'un bon pro du code saurait m'aider ? cela fait trop de conditions pour moi et les codes existants sur le forum ne m'ont pas permis de les agréger....

D'avance merci à tous....

13 réponses

cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 14:17
rajouter un document.getElementById('s').value = ""; pour vider le champs dans changeForm
ainsi que id="s" dans le champs de recherche
3
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 14:12
sans prétention voici ce que je ferai

<script language="javascript">
function changeForm(obj) {
var myform = document.forms['formSearch'];
if(obj.value == 1) {
myform.action = 'http://www.mondomaine.com/';
myform.method = 'get';
} else {
myform.action = 'http://www.caryl.fr/forum/search.php';
myform.method = 'post';
}
}

</script>

<form method="get" action="http://www.mondomaine.com/" id="formSearch">

Le blog
Le forum
</form>
0
caryljava Messages postés 6 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 15:52
Merci Moumouf pour ta réponse rapide et ta suggestion...

J'ai tenter de le mettre en place mais sans succès :

A priori en ce qui concerne les actions et les methodes tout passe parfaitement bien... j'ai en revanche toujours un problème avec l' ID="s" :


En effet pour que ça passe il faut bien que l'envoi soit fait sous les formes :
1-http://www.mondomaine.com/?S=ma_recherche
et
2-http://www.mondomaine.com/search.php?KEYWORDS=ma_recherche
le problème c'est que dans le second cas, je me retrouve avec :
http://www.mondomaine.com/search.php?S=ma_recherche
Le S continue d'apparaître et n'est pas remplacé par l'ID "Keywords"....
J'ai tenté de placer ton document.getElementById('s').value = ""; mais je n'arrive pas à obtenir son changement....
Si vous avez une idée, je sens qu'on chauffe...
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 16:04
si ton formulaire est en get les champs contenus dans le formulaire seront ajouter a ton url donc inutile de preciser ici http://www.mondomaine.com/?S=ma_recherche
fait un pointage sur une page de test tu verras le resultat de l'url

Pour le second lien tu dis que le parametre doit être passés en post donc inutile de mettre encore une fois ton parametre dans le action (S=) puisque tu le retrouvera par $_POST['s'] en php (ou équivalent selon le language utilisé).

Attention aux majuscules le champs se nomme s tu auras donc soit $_GET['s'] soit $_POST['s']
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 16:06
erreur de ma part, au lieu du onclick met onfocus.
0
caryljava Messages postés 6 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 16:15
Merci pour ta réponse ULTRA rapide...

Je avant de tester je te rappelle qu'en fait les paramètres envoyer doivent être les suivants : $_GET['s'] soit $_POST['keywords']

Et c'est ça qui m'inquiète. Dans ton exemple de script la valeur reste à 's'. Est-il possible de le modifier à ton avis ?
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 16:39
ah ok
tout simplement avec un document.getElementById('s').name = 'keywords'; dans le else
0
caryljava Messages postés 6 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 16:59
Bon j'ai tenté ta proposition mais sans succès....aucun résultat sur le forum.
J'ai aussi essayé de me mettre en "get" pour vérifier quelle url passait et effectivement le Keywords ne vient pas se mettre à la place du "s".

Ci-dessous le code que tu m'as conseillé :

Le Script (entre les balises script, bien sûr et dans le head):

function changeForm(obj) {

var myform = document.forms['formSearch'];
if(obj.value == 1) {
myform.action = 'http://www.mondomaine.com/';
myform.method = 'get';
} else {
myform.action = 'http://www.mondomaine.com/forum/search.php';
myform.method = 'post';
document.getElementById('s').name = 'keywords';
}
};

Le formulaire :

<form method="get" action="http://www.mondomaine.com/" id="formSearch">

Le blog
Le forum
</form>

Y-vois-tu une erreur ?
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 17:13
Ceci fonctionne :
Il faut reinitialiser le champs name dans les 2 cas

<script language="javascript">
function changeForm(obj) {
var myform = document.forms['formSearch'];
var myfield = document.getElementById('s');
if(obj.value == 1) {
myform.action = 'http://www.mondomaine.com/';
myform.method = 'get';
myfield.name = 's';
} else {
myform.action = 'http://www.mondomaine.com/forum/search.php';
myform.method = 'post';
myfield.name = 'keywords';
}
}
</script>

<form method="get" action="http://www.mondomaine.com/" id="formSearch">

Le blog
Le forum
</form>
0
caryljava Messages postés 6 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 17:55
Je sens que c'est plus difficile que cela n'y paraissait....
Cela ne fonctionne pas...

Je suis repassé encore en "get" pour voir l'url, mais je suis toujours en "?s" mais j'ai bien la valeur &choix=2....

C'est dingue ça, l'idée est pourtant bonne...je ne vois pas où ça coince maintenant..
0
caryljava Messages postés 6 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 18:06
Stooooooop !!!!!

Autant pour moi ! erreur de syntaxe revérifiée : CA MARCHE !!!!

Je te félicite et te remercie infiniment....
Je t'enverrai le lien de la nouvelle version de mon site pour que tu vois ce que cela m'a permis de faire !!!!

Un dernière question à tout hasard....mais ce n'est pas nécessaire de me répondre cela marche très bien !

Est-il possible de ne pas envoyer le name de l'input ? celui qui s'affiche dans l'url &choix=2, par soucis de "propreté de code"

Mais ça marche parfaitement bien, je ne veux pas chipoter....

Merci encore cela faisait 1 semaine que je m'arrachais les cheveux !
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 18:07
Curieux chez moi çà fonctionne,
j'ai testé avec un fichier page.php dont voici le contenu

<script language="javascript">
function changeForm(obj) {
var myform = document.forms['formSearch'];
var myfield = document.getElementById('s');
if(obj.value == 1) {
myform.action = 'page.php';
myform.method = 'get';
myfield.name = 's';
} else {
myform.action = 'page.php';
myform.method = 'post';
myfield.name = 'keywords';
}
}
</script>

<?php
echo 'get';
print_r($_GET); // ici on a bien $_GET['s'];
echo 'post';
print_r($_POST); // ici on a bien $_POST['keywords'];
?>
<form method="get" action="page.php" id="formSearch">

Le blog
Le forum
</form>
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
5 août 2009 à 18:08
étant donnée qu'il n'a pas d'incidence sur le traitement suivant, il te suffit de virer les balise name de tes radio
0
Rejoignez-nous