Page 1 sur 1

Une variable URL dans un header sa marche?

Posté : 05 mai 2006, 12:30
par Maxou
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

Posté : 05 mai 2006, 13:07
par Vaedan
On écrit pas
header( 'location = url' ); 
mais
header( 'location: url' );
;)

Posté : 05 mai 2006, 13:27
par Maxou
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:

Posté : 05 mai 2006, 13:32
par Vaedan
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 ?

Posté : 05 mai 2006, 13:46
par guilt92
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);

Posté : 05 mai 2006, 14:47
par rainiou
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

Posté : 05 mai 2006, 18:16
par Maxou
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.