Page 1 sur 1

Variable qui passe, mais mal...

Posté : 10 mars 2006, 13:14
par Kimble
Bonjour,
L'utilisateur cherche des infos sur une commune et dans le champ entre le nom de la commune :
$ville_choisi est la variable qui contient la valeur de ce l'utilisateur a entré.

Le formulaire de recherche :
<?php $ville_choisi=(isset($_POST['ville_choisi'])) ? $_POST['ville_choisi'] : ""; ?>
<fieldset>
<legend><b>Rechercher une vente dans une commune</b></legend>
<table> 
<tr>
<form  method="POST" action= "index.php?liste=recherche_commun&choix=commune&ville_choisi=<?php echo $ville_choisi; ?>"/>
<td><input type="text" name="ville_choisi" size="40" maxlength="40" value="<?php echo $ville_choisi;?>"/></td>
<td><input type="submit" name="Submit" class='bouton' value="Suivant"/></td>
</form>
</tr>
</table>
<br />
</fieldset>
Le fichier recherche_commune.php allégé :
<?php
print_r($_POST);//test pour le chemin de la variable
//$choix défini si les ventes doivent être affichées par origine, commercial, ... ou tous.
$choix=(isset($_POST['choix'])) ? $_POST['choix'] : "";
//$ville_choisi c'est l'ID ou le nom de la commune	
$ville_choisi=(isset($_POST['ville_choisi'])) ? $_POST['ville_choisi'] : ""; 
$nb_results_p_page = isset( $_COOKIE[ 'rowsPerPage' ] ) ? $_COOKIE[ 'rowsPerPage' ] : 7; //Par defaut affichage de 7 ventes
{
//Blabla
}
$result = mysql_query ("select * from vente where commune LIKE '$ville_choisi'order by client asc LIMIT $start, $nb_results_p_page");
{
//Blabla
}
//$ville_choisi c'est le nom de la commune et la variable envoyée au cookie
//Formulaire qui appelle le cookie
?>
<form action="cookie_recherche_commune.php"  method="POST">
<strong>Afficher</strong> 
<input name="ville_choisi" type="hidden" value="<?php echo $ville_choisi?>">
<input name="rowsPerPage" type="radio" value="7" checked="checked"> <strong>7</strong>
<input name="rowsPerPage" type="radio" value="20"> <strong>20</strong>
<input name="rowsPerPage" type="radio"  value="50"> <strong>50</strong>
<input name="rowsPerPage" type="radio"  value="100"> <strong>100&nbsp;</strong>
<input name="submit" type="submit" class='bouton' value="Ventes" />
</form>
<?php
while ($vente=mysql_fetch_array($result))     	 
{
?>
Le cookie : cookie_recherche_commune.php
<?php 
setcookie( 'rowsPerPage', $_POST[ 'rowsPerPage' ], time()+999999 );
//commune choisie
$ville_choisi=$_POST["ville_choisi"];
?>
<html>
<head>
<title></title>
<meta http-equiv="REFRESH" content="0;url=index.php?liste=recherche_commune&choix=commune&ville_choisi=<?php  echo $ville_choisi; ?>">
</head>
<body>
</body>
</html>
Bon, voilà mon probléme, je vais essayer d'être clair :
La variable 'ville_choisi' passe dans le fichier "recherche_commune.php" et m'affiche bien les données, mais la valeur est vide dans la barre d'adresse par exemple, si je recherche Toulouse :
index.php?liste=recherche_commune&choix=commune&ville_choisi=ICI ??
Par contre avec le test print_r($_POST); j'ai ceci :
Array ( [ville_choisi] => Toulouse [Submit] => Suivant ) on pourrait croire que la variable est bien passée...
Mais quand je veux utiliser le formulaire qui appelle le cookie_recherche_commune.php qui me permet d'afficher 7. 20. 50. 100 lignes, rien ne s'affiche ! La variable '$ville_choisi' ne passe pas de page en page...
Avec le test print_r($_POST); j'ai ceci :Array ( )
Une piste ? merci. :)

Posté : 10 mars 2006, 13:29
par sadeq
Dans la page " recherche_commune.php" tu as une erreur ici :
<input name="ville_choisi" type="hidden" value="<?php echo $ville_choisi?>">
Correction :
<input name="ville_choisi" type="hidden" value="<?php echo $ville_choisi; ?>">

il maquait un ; et un espace avant le ?>

Posté : 10 mars 2006, 14:05
par Ryle
A mon avis, le problème vient du fait que ton formulaire est mal constitué, tu as un / à la fin qui le ferme à peine ouvert et du coup il n'englobe aucun de tes champs (ta balise </form> ne sert à rien puisque le tag <form ... /> est par conséquent déjà fermé)

Il y a également un joyeux mélange de GET et POST dans ton formulaire, ce serait bien d'uniformiser et de choisir l'un ou l'autre. Ca t'éviterais surement des erreurs également :)
// ce que tu as :

<form  method="POST" action= "index.php?liste=recherche_commun&choix=commune&ville_choisi=<?php echo $ville_choisi; ?>"/> // (donc à virer le / final)


// ce qui serait plus propre (tout en post) :

<form  method="POST" action="index.php"> // déjà on ferme pas le tag form :p
<input type="hidden" name="liste" value="recherche_commun" /> // les champ que tu avais dans l'action passent en hidden
<input type="hidden" name="choix" value="commune" />

// on garde le ville_choisi en text, pas besoin de le passer en get dans l'action
<input type="text" name="ville_choisi" size="40" maxlength="40" value="<?php echo $ville_choisi;?>" />
...
</form>
 

Posté : 10 mars 2006, 14:56
par Kimble
<form  method="POST" action="index.php">
<input type="hidden" name="liste" value="recherche_commune" />
<input type="hidden" name="choix" value="commune" />
<td><input type="text" name="ville_choisi" size="40" maxlength="40" value="<?php echo $ville_choisi;?>" /></td>		 
<td><input type="submit" name="Submit" class='bouton' value="Suivant"/></td>
</form>
J'ai tout les ingrédients, mais cela ne m'affiche rien...Et dans la barre d'adresse j'ai :
../index.php

PS : j'ai aussi changé le nom "recherche_commun" en "recherche_commune"...

Posté : 10 mars 2006, 16:20
par Ryle
Oui mais du coup si tu passes tout en POST, il te faut peut être corriger également au niveau du script qui récupère les variables "liste" et "choix" pour que lui aussi aille chercher la valeur dans le post :)

sinon si tu ne veux pas avoir à le modifier, tu peux tout aussi bien dans ton formulaire mettre method="GET". Dans ce cas, seul le script ou tu récupère ville_choisi est à modifier en $_GET['ville_choisi'] à la place de $_POST['ville_choisi']... le but est vraiment d'homogénéiser et de ne pas mélanger les deux méthodes parce qu'on s'y perd rapidement :)

(et c'est encore pire si quelqu'un doit reprendre ton code un jour ;))