[PHP] passage de variables dans URL

Fermé
rasteda Messages postés 34 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 3 mai 2010 - 31 déc. 2009 à 19:19
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 2 janv. 2010 à 19:57
Bonjour,
Je souhaite passer 2 variables dans une url ($rubrique et $sousrub). je les récupère de ma base de données depuis deux menus déroulants mais à la validation seulement une de mes variables passe dans l'url et pas la seconde ?
Quelqu'un aurait-il une piste ?
merci beaucoup.

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Administration</title>	
	</head>

	<body>
<?
//include the connect script
  include("infos.inc");

  $connection = mysql_connect($host,$user,$password)
       or die ("Connexion au serveur impossible");
  $db = mysql_select_db($database,$connection)
       or die ("Sélection de la base de données impossible");
	   
echo "<form action='select02.php' enctype='multipart/form-data' method='post' id='choixrub'>";
$query = "SELECT DISTINCT intitule FROM tbl_rub ORDER BY intitule DESC";
$result = mysql_query($query) or die("ERROR");
$Selected = 0;
?>
<select name='rubrique' style='min-width:250px;' onchange='document.forms["choixrub"].submit();'>
<?
echo "<option disabled='disabled' SELECTED>Séléctionnez une rubrique :</option>";
while ($row = mysql_fetch_array($result))
{
  if($Selected == 0)
  {
    echo '<option value="', $row[0], '" ">', $row[0], '</option>';
    $Selected = 1;
  }
  else
  {
    echo '<option value="', $row[0], '">', $row[0], '</option>';
  }
}
echo '</select></form>';

	if (isset ($_POST['rubrique'])){
$rubrique = $_POST['rubrique'];
}
//formulaire choix sous-rubrique
echo "Rubrique s séléctionnée: $rubrique</br>";?>
<?
echo "<form action='select02.php?rub=$rubrique&ssrub=$sousrub' enctype='multipart/form-data' method='post' id='choixssrub'>";
$query = "SELECT intitule FROM tbl_ssrub WHERE rub_asso='$rubrique'";
$result = mysql_query($query) or die("ERROR");
?>
<select name='sousrub' style='min-width:250px;'>
<?
$Selected = 0;
echo "<option disabled='disabled' SELECTED> Séléctionnez une sous-rubrique :</option>";
while ($row = mysql_fetch_array($result))
{
  if($Selected == 0)
  {
    echo '<option value="', $row[0], '" ">', $row[0], '</option>';
    $Selected = 1;
  }
  else
  {
    echo '<option value="', $row[0], '">', $row[0], '</option>';
  }
}
echo "</select><br/></br><input type='submit' value='Soumettre'/><br></form></br></br>";
?>
</body>
</html>
A voir également:

10 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
1 janv. 2010 à 00:16
hello bonne année
tu n'as pas déclaré ta seconde variable.
$rubrique = $_POST['rubrique']; ça ok
L'autre tu as oublié.
Donc normal que tu ne récupère pas/.
0
rasteda Messages postés 34 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 3 mai 2010 1
1 janv. 2010 à 00:39
eh beh l'année commence bien!! merci de ton aide ;-)
Bonne année à toi également
J'ai bien tenté de la déclarer mais je vois pas trop ou. après le dernier </select> non ?
Quelquechose comme ça ?:

<select name='sousrub' style='min-width:250px;'>
<?
$Selected = 0;
echo "<option disabled='disabled' SELECTED> Séléctionnez une sous-rubrique :</option>";
while ($row = mysql_fetch_array($result))
{
  if($Selected == 0)
  {
    echo '<option value="', $row[0], '" ">', $row[0], '</option>';
    $Selected = 1;
  }
  else
  {
    echo '<option value="', $row[0], '">', $row[0], '</option>';
  }
}
echo "</select><br/></br>";
if (isset ($_POST['sousrub'])){
$sousrub = $_POST['sousrub'];
}
echo "<input type='submit' value='Soumettre'/><br></form></br></br>";
?>
0
rasteda Messages postés 34 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 3 mai 2010 1
1 janv. 2010 à 11:03
Avec le nouveau code ça ne passe pas non plus.
Je ne comprends pas bien ou ma variable doit être déclarée pour qu'elle soit reconnue.

BONNE ANNEE A TOUS !!!
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
1 janv. 2010 à 19:10
comment ça ?
Tu as fait ça ?
if (isset ($_POST['rubrique'],$_POST['sousrubrique'])){
$rubrique = $_POST['rubrique'];
$sousrub = $_POST['sousrubrique'];
...

Sinon montre cette partie du code. Si ça ne fonctionne toujours pas c'est que ta donnée en provenance du formulaire $_POST['sousrubrique'] revient vide !
Donc l'erreur provient du formulaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rasteda Messages postés 34 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 3 mai 2010 1
1 janv. 2010 à 21:20
En fait j'ai un peu modifié mon code pour mettre un champ hidden
A priori ca fonctionne.
Ca donne ca:

<form action="select_prod.php" method="post" id="choixrub">
<?
$query = "SELECT DISTINCT intitule FROM tbl_rub ORDER BY intitule ASC";
$result = mysql_query($query) or die("ERROR");
?>
	<fieldset> 
		<p>
			<label>Séléctionnez une rubrique</label>              
			<select name="rubrique" class="small-input" onchange='document.forms["choixrub"].submit();'>
				<?
echo "<option disabled='disabled' SELECTED>Rubriques ----------</option>";
				while ($row = mysql_fetch_array($result))
				{
				echo '<option value="', $row[0], '">', $row[0], '</option>';
				}
				?>
			</select> 
		</p>
</form>
				<?
				$rubrique = $_POST['rubrique'];
				echo "Vous avez séléctionné la rubrique: <strong>$rubrique</strong>";
				?>
<form action="result_select.php" method="post"  id="choixssrub">
<?
$query = "SELECT intitule FROM tbl_ssrub WHERE rub_asso='$rubrique'";
$result = mysql_query($query) or die("ERROR");
?>
	<input type="hidden" name="rubrique" value="<?php echo $rubrique ; ?>" />
		<p>
			<br>
			<br>
			<label>Séléctionnez une sous-rubrique</label>              
		<select name="sousrub" class="small-input">
			<?
			echo "<option disabled='disabled' SELECTED>Sous-rubriques ----------</option>";
			while ($row = mysql_fetch_array($result))
			{
			echo '<option value="', $row[0], '">', $row[0], '</option>';
			}
			?>
		</select> 
		</p>
		<br />
		<p>
		<input class="button" type="submit" value="Soumettre" />
		</p>
	</fieldset>
</form>


Maintenant le souci pour moi c'est de faire en sorte que la séléction soit conservé après la soumission :-)
C'est jamais simple la programmation. Surtout pour moi !!
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
2 janv. 2010 à 08:08
non c'est jamais simple la programmation c'est bien pour ça que je déteste ça. Mais j'en fait un peu quand même !

Déjà je vois un truc bizarre, tu ouvres 2 fois la balise formulaire pour afficher 2 input différents. Pas normal, tu n'as pas du comprendre le mécanisme.
L'idée est d'avoir un formulaire qui récupère les infos et qui sert à faire le traitement php par ex.

<form action="result_select.php" method="post">
-fait une seule requête pour récupérer les 2 infos. Je ne sais pas comment est structurée tes tables, mais tu va taper dans la même table donc c'est dommage de faire 2 req.
-appose tes input comme tu l'as déjà fait (merge les en un seul formulaire)
-Enfin tu mets ton bouton input type submit à la fin comme tu as déjà fait.
</form>

Normal que tu ne récupères pas l'info du 2nd parce qu'il est dans une autre balise de formulaire. Sinon, par logique il te faut 2 boutons parce que 2 formulaires !
0
rasteda Messages postés 34 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 3 mai 2010 1
2 janv. 2010 à 16:13
En fait ma logique un peu tordue c'était puisqu'on va chercher 2 infos différents à deux moments différents, je crée un formulaire pour chaque info à récupérér.
Dans mon premier formulaire j'ai un
onchange='document.forms["choixrub"].submit();
qui me permet de valider et d'afficher dans un second temps l'info dans le second menu.

Ce que je veux éviter c'est que les infos s'affichent toutes en même temps dans les 2 menus. c'est d'ailleurs impossible puisqu'on a besoin d'une sélection sur le premier menu (rubriques) pour afficher les infos du second
(sous-rubriques de la rubrique sélectionnée). Tout se passe donc en 2 étapes.

Je ne vois pas trop comment réaliser ces 2 étapes dans un même formulaire.
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
2 janv. 2010 à 18:38
je ne te suis plus là.
Tu peux me dessiner ou schématiser ta page de formulaires ?
Sinon passe moi le code complet
Là comme ça je ne vois pas ce que ça donne

Tu veux faire un enchainement de listes de choix ? On clique un item de la premiere puis la seconde se charge avec les infos associées ?
0
rasteda Messages postés 34 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 3 mai 2010 1
2 janv. 2010 à 19:49
c'est exactement ca.
j'ai un enchainement de deux sous-menu.
Le premier liste les rubriques du site
Le second liste les sous-rubriques de la rubrique séléctionnée dans le premier menu.

Voici mon code:
<form action="add_prod.php" method="post" id="choixrub">
<?
$query = "SELECT DISTINCT intitule FROM tbl_rub ORDER BY intitule ASC";
$result = mysql_query($query) or die("ERROR");
?>
	
	<fieldset>
								
		<p>
		<label>Séléctionnez une rubrique</label>              
		<select name="rubrique" class="small-input" onchange='document.forms["choixrub"].submit();'>
				<?
		echo "<option disabled='disabled' SELECTED>Rubriques</option>";
				while ($row = mysql_fetch_array($result))
				{
				echo '<option value="', $row[0], '">', $row[0], '</option>';
				}
				?>
			</select> 
		</p>
</form>
				<?
				$rubrique = $_POST['rubrique'];
				echo "Vous avez séléctionné la rubrique: <strong>$rubrique</strong>";
				?>
		</p>
<form action="validate_add_prod.php" method="post">
							<?
$query = "SELECT intitule FROM tbl_ssrub WHERE rub_asso='$rubrique'";
$result = mysql_query($query) or die("ERROR");
?>
			<input type="hidden" name="rubrique" value="<?php echo $rubrique ; ?>" />
		<p>
			<br>
			<label>Séléctionnez une sous-rubrique</label>              
			<select name="sousrub" class="small-input">
				<?
		echo "<option disabled='disabled' SELECTED>Sous-rubriques</option>";
				while ($row = mysql_fetch_array($result))
				{
				echo '<option value="', $row[0], '">', $row[0], '</option>';
				}
				?>
			</select> 
		</p>						
								
		<p>
			<input class="button" type="submit" value="Soumettre" />
		</p>
	</fieldset>
	</form>
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
2 janv. 2010 à 19:57
J'ai visualisé ta page, effectivement je ne sais pas faire ça.
J'ai déjà essayé mais c'est treop chiant. Au mieux fait faire de l'Ajax et tout... donc j'ai laissé tomber.

Bon courage
0