Formulaire de Recherche pour Wordpress+PhpBB3 [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
5 août 2009
-
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
-
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

Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

rajouter un document.getElementById('s').value = ""; pour vider le champs dans changeForm
ainsi que id="s" dans le champs de recherche
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

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>
Messages postés
6
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
5 août 2009

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...
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

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']
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

erreur de ma part, au lieu du onclick met onfocus.
Messages postés
6
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
5 août 2009

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 ?
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

ah ok
tout simplement avec un document.getElementById('s').name = 'keywords'; dans le else
Messages postés
6
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
5 août 2009

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 ?
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

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>
Messages postés
6
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
5 août 2009

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..
Messages postés
6
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
5 août 2009

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 !
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

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>
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

é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