Help Formulaire avec Redirection

Nouveau WRInaute
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 :)
 
WRInaute discret
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']){
...
}
}
 
Nouveau WRInaute
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']){
...
}
}
 
Nouveau WRInaute
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;
}
}
 
WRInaute discret
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...
 
WRInaute discret
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');
 
WRInaute discret
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");
}
?>
 
WRInaute discret
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>
 
WRInaute discret
Avec ma solution pas besoin du "none", ça marche avec son premier code html :

Code:
<option selected="selected" value="">-Sélectionnez votre destination-</option>
 
WRInaute discret
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
 
Nouveau WRInaute
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
 
Nouveau WRInaute
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é,

:)
 
Nouveau WRInaute
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 :)
 
WRInaute discret
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.
 
WRInaute discret
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.exemple.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