Une variable URL dans un header sa marche?

Eléphanteau du PHP | 17 Messages

05 mai 2006, 12:30

Bonjour, :D

Une question toute simple désolé je n'ai pas fait de recherche car étant en déplacement je me connecte par le biais d'un hub public et je paie la connexion au temps.

De ce fait je repasserai voir plutard si vous avez une solution à ma question ou des conseils à me prodiguer.

Suite à une première page ou l'internaute fait un choix je récupère une valeur par
le biais d'un POST;

ensuite sur une page de traitement je voudrais renvoyer l'internaute sur la page correspondant à sont choix directement
et de facon transparente.

Voici ma première page:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>novi-case</title>
</head>

<body>
<table width="100%"  border="0">
  <tr>
    <td width="200" rowspan="2" align="center" valign="top"><?php include "gauche.php" ?></td>
    <td valign="top"><?php include "haut_nc.php" ?></td>
    <td width="59" rowspan="2" align="right" valign="top"><?php include "droite.php" ?></td>
  </tr>
  <tr>
    <td valign="top" align="center">
	<table border="0" width="600" id="table1" cellspacing="0" cellpadding="0">
	<tr>
		<td height="75">
		<p align="center"><font face="Berlin Sans FB" size="5" color="#FF0000">
		Calcul des besoins pour votre toiture</font></td>
	</tr>
	<tr>
		<td height="50">
		<form method="POST" action="renvoie_choix.php">
			<table border="1" width="100%" id="table2" bordercolordark="#BDD614" bordercolorlight="#CCFF99">
				<tr>
					<td width="326">
					<p align="right"><font face="Berlin Sans FB" size="4">1 pan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					</font></td>
				  <td>&nbsp;
			        <input type="radio" value="1" checked name="choix"></td>
				</tr>
				<tr>
					<td height="24" width="326">
					<p align="right"><font face="Berlin Sans FB" size="4">2 pans 
					identiques&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					</font></td>
				  <td height="24">&nbsp;
				    <input type="radio" name="choix" value="2"></td>
				</tr>
				<tr>
					<td width="326">
					<p align="right"><font face="Berlin Sans FB" size="4">2 pans 
					de tailles différentes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				  </font></td>
				  <td>&nbsp;				    <input type="radio" name="choix" value="3"> 
					</td>
				</tr>
			</table>
			<p align="center"><input type="submit" value="Envoyer" name="B1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="reset" value="Rétablir" name="B2"></p>
		</form>
	
	</td>
  </tr>
</table>
</body>
</html>
Et voici la seconde :


<?php 
$choix = $_POST['choix'];

if ($choix==1) $calcul = '1_pan.php';
if ($choix==2) $calcul = '2_pans.php';
if ($choix==3) $calcul = '2_pans_dif.php';

header ('location = $calcul');

?>


mon problème est que je n'arrive pas à integrer le mon URL dans la fonction header.


Existe t'il une solution plus simple pour éviter une page de traitement ou alors de quel manière faire passer
ma variable dans le header.


Merci de votre aide
Maxou
Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.

Eléphant du PHP | 493 Messages

05 mai 2006, 13:07

On écrit pas
header( 'location = url' ); 
mais
header( 'location: url' );
;)

Eléphanteau du PHP | 17 Messages

05 mai 2006, 13:27

Merci alors j'ai mis les 2points a la place du égale mais sa ne marche toujours pas.

Il me ne me place pas la valeur de la variable.

Voici ce que j'ai maintenant
<?php 
$choix = $_POST['choix'];

if ($choix==1) $calcul = '1_pan.php';
if ($choix==2) $calcul = '2_pans.php';
if ($choix==3) $calcul = '2_pans_dif.php';

header ('location: $calcul');

?>
Voilou merci :oops:
Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.

Eléphant du PHP | 493 Messages

05 mai 2006, 13:32

Allons allons ...

Quand on récupère une variable GET ou POST, cette dernière est sous la forme d'une chaine de caractère. Ainsi il serait judicieux de faire :
$choix = (int)$_POST['choix'];
Cela ne suffit pas ! Remplace donc les == par des === et dis nous ce qu'il se passe.

Si le problème persiste, n'essaierais tu pas de passer tes variables en GET plutot qu'en POST ?! As tu bien vérifié le code de ton formulaire ?

Mammouth du PHP | 1353 Messages

05 mai 2006, 13:46

Je pense aussi qu'il y a un probleme au niveau de ta redirection :

ne laisse pas ta variable entre '', utilise plutot cette syntaxe :
header('Location:'.$calcul);

Petit nouveau ! | 5 Messages

05 mai 2006, 14:47

oui, il me semble que le php fait la difference lui meme si l'on compare un entier avec une chaine.
en principe avec

Code : Tout sélectionner

switch($_POST['ton_code']){ case '1': header("Location: http://www.tonsite.com/ta_page.php"); exit; case '2': header("Location: http://www.tonsite.com/ta_page2.php"); exit; default: echo "toto"; exit; }
au cas ou ca ne va pas je vois pas... php.net :p
vos photos en ligne :
www.rainiou.com

Eléphanteau du PHP | 17 Messages

05 mai 2006, 18:16

Je pense aussi qu'il y a un probleme au niveau de ta redirection :

ne laisse pas ta variable entre '', utilise plutot cette syntaxe :
header('Location:'.$calcul);
Merci sa marche il s'agissait uniquement d'une erreur de sintaxe.

Merci a tout le monde de d'avoir chercher pour me dépanner.
Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.