Page 1 sur 1

Changer une redirection via un choix de liste déroulante

Posté : 20 sept. 2009, 16:03
par Jabe
Bonjour,

Je cherche à rediriger une recherche en fonction du bouton radio sélectionné ou du choix d'une liste déroulante.

J'ai mis une page de test en ligne ici.

Mon code HTML est le suivant:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test moteur de recherche</title>
<style type="text/css">
.page {
    text-align: center;
}
</style>
</head>
<body class="page">
<form method="get" action="actions.php">
    <div class="input">
        <input type="text" size="80" name="champ_de_recherche" />
        <button type="submit">OK</button>
    </div>
    <div class="options">
        <label for="google">
        <input type="radio" name="choix_de_recherche_1" id="google" value="google" />Google:</label>
        <select name="liste_de_choix_google">
                <option id="google_francais" value="google_francais">Google Fran&ccedil;ais</option>
                <option id="google_anglais" value="google_anglais">Google Anglais</option>
                <option id="google_espagnol" value="google_espagnol">Google Espagnol</option>
                <option id="google_allemand" value="google_allemand">Google Allemand</option>
        </select>
        <label for="bing"><input type="radio" name="choix_de_recherche_1" id="bing" value="bing" />Bing</label>
        <label for="wikipedia"><input type="radio" name="choix_de_recherche_1" id="wikipedia" value="wikipedia" />Wikip&eacute;dia:</label>
        <select name="choix_de_recherche_wikipedia">
                <option id="wikipedia_francais" value="wikipedia_francais">Wikip&eacute;dia Fran&ccedil;ais</option>
                <option id="wikipedia_anglais" value="wikipedia_anglais">Wikip&eacute;dia Anglais</option>
                <option id="wikipedia_espagnol" value="wikipedia_espagnol">Wikip&eacute;dia Espagnol</option>
                <option id="wikipedia_allemand" value="wikipedia_allemand">Wikip&eacute;dia Allemand</option>
        </select>
        <br />
        <br />
    </div>
</form>
<form method="get" action="actions.php">
    <div class="input">
        <input type="text" size="80" name="champ_media" />
        <button type="submit">OK</button>
    </div>
    <div class="options">
        <label for="audio"><input type="radio" name="choix_de_recherche_2" id="audio" value="audio" />Audio:</label>
        <select name="liste_de_choix_audio">
                <option id="deezer" value="deezer">Deezer</option>
                <option id="jiwa" value="jiwa">Jiwa</option>
                <option id="last.fm" value="last.fm">Last.fm</option>
        </select>
        <label for="google_images"><input type="radio" name="choix_de_recherche_2" id="google_images" value="google_images" />Google Images</label>
        <label for="video"><input type="radio" name="choix_de_recherche_2" id="video" value="video" />Video:</label>
        <select name="liste_de_choix_video">
                <option id="youtube" value="youtube">Youtube</option>
                <option id="dailymotion" value="dailymotion">Dailymotion</option>
                <option id="google_video" value="google_video">Google Video</option>
        </select>
    </div>
</form>
</body>
</html>
Mon code PHP (qui je sais est faux !) est:
<?php
if (!empty($_REQUEST['champ_de_recherche']))
{
    $url = array(
        'google_anglais'=>'http://www.google.com/#hl=en&q=__motscles__',
        'google_espagnol'=>'http://www.google.com/#hl=es&q=__motscles__',
        'google_allemand'=>'http://www.google.com/#hl=de&q=__motscles__',
        'google_francais'=>'http://www.google.com/#hl=fr&q=__motscles__',
        'bing'=>'http://www.bing.com/search?q=__motscles__',
        'wikipedia_anglais'=>'http://en.wikipedia.org/wiki/Special:Search?search=__motscles__',
        'wikipedia_espagnol'=>'http://es.wikipedia.org/wiki/Special:Search?search=__motscles__',
        'wikipedia_allemand'=>'http://de.wikipedia.org/wiki/Special:Search?search=__motscles__',
        'wikipedia_francais'=>'http://fr.wikipedia.org/wiki/Special:Search?search=__motscles__');
    header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]));
    die();
}
else if (!empty($_REQUEST['champ_media']))
{
    $url = array(
        'deezer'=>'http://www.deezer.com/music/result/all/__motscles__',
        'jiwa'=>'http://www.jiwa.fm/#search/track/{%22q%22%3A%22__motscles__%22}',
        'last.fm'=>'http://www.last.fm/music?q=__motscles__',
        'google_images'=>'http://images.google.com/images?&q=__motscles__',
        'youtube'=>'http://www.youtube.com/results?search_query=__motscles__',
        'dailymotion'=>'http://www.dailymotion.com/relevance/search/__motscles__',
        'google_video'=>'http://images.google.com/images?q=__motscles__');
    header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_media'])),$url[trim($_REQUEST['choix_de_recherche_2'])]));
    die();
}

else
{
    // S'il n'y a pas de termes de recherche cela redirige vers la page de recherche
    header('Location:index.html');
    die();
}
?>
La version plus ancienne de mon code qui fonctionne correctement mais avec des boutons radios uniquement est disponible en test ici.

Je n'arrive pas à le faire avec la liste déroulante, si quelqu'un pouvait m'arranger mon code qu'il fonctionne ce serait génial.

Merci d'avance pour votre aide.

Re: Changer une redirection via un choix de liste déroulante

Posté : 27 sept. 2009, 21:53
par Jabe
Up! Personne ne sait comment faire ?

Re: Changer une redirection via un choix de liste déroulante

Posté : 28 sept. 2009, 01:08
par AB
Pas le temps de regarder ton code en particulier mais pour le select un exemple de code parmi de nombreuses possibilités :
<?php  
$page = !empty($_GET['page'])? $_GET['page'] : null;

if (isset($page))
{
	switch($page) 
		{ 
		case 'accueil': $direction = 'page_accueil.html' ;break; 
		case 'presentation': $direction = 'page_presentation.html' ;break; 
		case 'liens': $direction = 'page_lien.html' ;break; 
		
		default : $direction = null ;
		}
	header("Location:$direction");  
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
img {
border:none
}
form, select, input {
margin:0;
padding:0;
}
#menuselect p {
display:inline;
}
#menuselect select, #menuselect input {
background-color:#66CCFF;
font-family: Comic Sans MS;
font-size:0.9em;
font-weight:bold;
}
</style>
</head>
<body>
<div class="menu"> 
<form id="menuselect" action="#" method="get">
<p>
 <select  name="page">
   <option value="0">Choisissez</option> 
   <option value="accueil">Accueil</option> 
   <option value="presentation">Présentation</option>
   <option value="liens">liens</option>
  </select>
</p>
<p><input type="submit" name="ok" value="ok" /></p>
</form> 
</div>
</body>
</html>

Re: Changer une redirection via un choix de liste déroulante

Posté : 30 sept. 2009, 22:06
par Jabe
Merci pour cette réponse.

Je viens de faire un test en changeant mon code et ça coince au niveau de mon:
 header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]));
    die();
}

Re: Changer une redirection via un choix de liste déroulante

Posté : 01 oct. 2009, 19:28
par AB
Merci pour cette réponse.

Je viens de faire un test en changeant mon code et ça coince au niveau de mon:
 header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]));
    die();
}
J'ai pas testé ton code mais déjà tu pourrais faire
$redirection = str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]);

// et
header("Location:$redirection");

/* ce qui te permettrait de vérifier entre temps
echo $redirection*/
D'ailleurs même principe à l'intérieur de la chaine $redirection : sépares les éléments pour les tester individuellement et tu trouveras bien ce qui pose problème :wink:

Re: Changer une redirection via un choix de liste déroulante

Posté : 02 oct. 2009, 18:12
par Jabe
J'ai refait un test avec ce que tu as dit et en ne gardant que ce qui concernait mes premiers choix de recherche (Google), et ça ne passe pas, mais mon code doit être archi faux vu mon niveau de PHP :cry:

J'ai mis le code en ligne ici.