Help Formulaire avec Redirection

Bonjour et merci d'avance pour votre aide,

J'ai une page qui commence par un formulaire, sur ce formulaire il y a 3 menus déroulant qui permettent une redirection vers différentes pages du site.

J'ai trouvé le script suivant qui me permet de faire une redirection :

Le formulaire :

Code:
<FORM method="POST" action="redirect.php">
<select NAME="Liste">
<option selected="selected" value="">-Sélectionnez votre destination-</option>
<option value="bleu">Bleu</option>
<option value="blanc">Blanc</option>
<option value="rouge">Rouge</option>
</select>
<input type="submit" name="envoi" value="envoyer" />
</FORM>

La page de redirection redirect.php:

Code:
<?php
switch($_POST['ListeCouleur']){
case "bleu":
header("Location: [url=http://www.bleu.com");]http://www.bleu.com");[/url]
break;
case "blanc":
header("Location: [url=http://www.blanc.com");]http://www.blanc.com");[/url]
break;
case "rouge":
header("Location: [url=http://www.rouge.com");]http://www.rouge.com");[/url]
break;
default:
header("Location: abc.htm");
}
?>


Mon problème est de savoir comment écrire ma page redirect.php si j'ai plusieurs menu déroulant ?


EXEMPLE : Mon formulaire contient 2 menus déroulants ListeCouleur et ListeNombre:

Code:
<FORM method="POST" action="redirect.php">
<select NAME="ListeCouleur">
<option selected="selected" value="">-Sélectionnez votre destination-</option>
<option value="bleu">Bleu</option>
<option value="blanc">Blanc</option>
<option value="rouge">Rouge</option>
</select>
<select NAME="ListeNombre">
<option selected="selected" value="">-Sélectionnez votre destination-</option>
<option value="un">un</option>
<option value="deux">deux</option>
<option value="trois">trois</option>
</select>
<input type="submit" name="envoi" value="envoyer" />
</FORM>

J'AI ESSAYE DE FAIRE CECI ? Mais çà ne fonctionne pas parfaitment, alors je viens vous demander votre aide, merci :-)

Code:
<?php
switch($_POST['ListeCouleur']){
case "bleu":
header("Location: [url=http://www.bleu.com");]http://www.bleu.com");[/url]
break;
case "blanc":
header("Location: [url=http://www.blanc.com");]http://www.blanc.com");[/url]
break;
case "rouge":
header("Location: [url=http://www.rouge.com");]http://www.rouge.com");[/url]
break;
default:
header("Location: abc.htm");
}

switch($_POST['ListeNombre']){
case "un":
header("Location: [url=http://www.un.com");]http://www.un.com");[/url]
break;
case "deux":
header("Location: [url=http://www.deux.com");]http://www.deux.com");[/url]
break;
case "trois":
header("Location: [url=http://www.trois.com");]http://www.trois.com");[/url]
break;
}
?>

Merci :)
 
oui mais pourquoi tu n'en ferai pas deux ?

ou sinon tu fais :

<select NAME="ListeNombre">
<option selected="selected" value="none">-Sélectionnez votre destination-</option>


puis tu mets :

if(!empty($_POST['ListeNombre']) and $_POST['ListeNombre']!='none')
{
switch($_POST['ListeNombre']){
...
}
}
 
Comment écrire, quelque soit la valeur de ListeCouleur je veux que tu rediriges vers cette page ?

Est-ce comme çà :

if(!empty($_POST['ListeCouleur']) and $_POST['ListeNombre']!='un deux trois')
{
switch($_POST['ListeNombre']){
...
}
}
 
Je pense écrire quelque chose comme çà, pourriez vus m'aider à l'écrire correctement please ?

if ($_POST['ListeCouleur']!='bleu' and $_POST['ListeNombre']!='deux')
{
switch($_POST['ListeNombre']){
case "deux":
header("Location: -http://www.deux.com");
break;
}
}
 
A quoi ça va servir 2 menu déroulants ?

Si l'utilisateur choisit une destination dans les deux menu tu veux rediriger vers quelle page ?

Je vois pas trop l'utilité donc j'arrive pas à imaginer une solution en fait...
 
c'est simple, quand $_POST['ListeNombre'] n'est "empty" et que sa valeur est differante de "none" tu traite sa valeur par un switch, sinon tu verifie que $_POST['ListeCouleur'] n'est pas "empty" et que sa valeur est differante de "none", tu traite alors le switch et en dernier lieu tu rajoute juste une ligne genre die('la page n'a pas pu etre identifié veuillez réitérer votre demande');
 
Alors dans ce cas je le ferais comme ça, avec un seul switch :

Code:
<?php
$page = "";
if (isset($_POST['ListeCouleur'])) $page = $_POST['ListeCouleur'];
if (isset($_POST['ListeNombre']) && $page = "") $page = $_POST['ListeNombre'];

switch($page){
	case "bleu":
		header("Location: http://www.bleu.com");
		break;
	case "blanc":
		header("Location: http://www.blanc.com");
		break;
	case "rouge":
		header("Location: http://www.rouge.com");
		break;
		
	case "un":
		header("Location: http://www.un.com");
		break;
	case "deux":
		header("Location: http://www.deux.com");
		break;
	case "trois":
		header("Location: http://www.trois.com");
		break;
		
	default:
		header("Location: abc.htm");
}
?>
 
Plutot comme ceci, c'est plus logique je trouve (au cas où ListeCouleur ou ListeNombre serait attribué par le navigateur) :
Code:
<?php
$page = "";
if(!empty($_POST['ListeCouleur']) and $_POST['ListeCouleur']!='none')
$page = $_POST['ListeCouleur'];
elseif(!empty($_POST['ListeNombre']) and $_POST['ListeNombre']!='none')
$page = $_POST['ListeNombre'];

switch($page){
	case "bleu":
		header("Location: http://www.bleu.com");
		break;
	case "blanc":
		header("Location: http://www.blanc.com");
		break;
	case "rouge":
		header("Location: http://www.rouge.com");
		break;
		
	case "un":
		header("Location: http://www.un.com");
		break;
	case "deux":
		header("Location: http://www.deux.com");
		break;
	case "trois":
		header("Location: http://www.trois.com");
		break;
		
	default:
		header("Location: abc.htm");
}
?>


ps: biensur tu mets
<option selected="selected" value="none">-Sélectionnez votre destination-</option>
 
Avec ma solution pas besoin du "none", ça marche avec son premier code html :

Code:
<option selected="selected" value="">-Sélectionnez votre destination-</option>
 
sauf que qu'ainsi isset($_POST['ListeCouleur']) a bien des chances d'étre égal à true pour $_POST['ListeCouleur']=""*

*Le navigateur donnera normalement : ?ListeCouleur=&ListeNombre=x

De plus elseif est plus logique que if($page = "")... enfin ne nous batons pas pour ce detail : annuwair choisira :D
 
En fait je voudrais faire comme la zone de recherche de Meetic http://www.meetic.fr/ :)

Et faire en sorte que si l'utilisateur choisi :

un + bleu redirection vers page --> un-bleu.php
un + blanc redirection vers page --> un-blanc.php

trois + rouge redirection vers page --> trois-rouge.php
 
Et merci à vous deux, vous des êtes des génies différents, je vais tester vos petites recettes ensuite je vous dirais,

PS : Pour vous départager sur le "none", sachez qu'il n'y aura pas de champ vide, y'aura toujours un choix obligatoire pour l'un ou l'autre, prenant exemple sur Meetic, que l'on choississe Homme ou Femme il faudra que le choix de la région l'emporte et finalement l'utilisateur sera redirigé vers la région, et voir même au mieux si vous pourvez aller plus loin combiner les deux et rediriger par exemple vers la page Femme+Région choisi.

Merci infiniment pour votre disponibilité,

:)
 
J'ai essayé vos deux méthode mes chers Génies, Malheureusement c'est toujours le choix ListeCouleur qui l'emporte sur le choix ListeNombre qui n'est pas pris en compte.

Comme expliqué au dessus je voudrais que la redirection se fasse de la façon suivante après les choix de l'utilisateur :

un + bleu = redirection vers la page --> un-bleu.php
un + blanc = redirection vers la page --> un-blanc.php

trois + rouge = redirection vers la page --> trois-rouge.php

Merci :)
 
Le formulaire de la home de meetic post sur la meme page. Tu n'as pas besoin de rediriger vers des pages différentes, il suffit d'interpreter les valeurs des champs du formulaire dans une seule page et d'afficher la recherche en fonction de ces valeurs.
 
annuwair a dit:
Où sont mes sauveurs ????? Heeeeeeeeeelp !!! :-)))
en vacances =)

Mais le truc c'est que nous nous sommes mal compris. Comme dit reglysse, il suffit juste de faire un truc du genre :
Code:
if(empty($_POST['ListeCouleur']) or empty($_POST['ListeNombre']))
die ('erreur');

header('Location: http://www.example.com/'.$_POST['ListeNombre'].'-'.$_POST['ListeCouleur'].'.html');
 

➡️ 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