Récupération d'une valeur en fonction d'une autre

Nouveau WRInaute
Bonjour,

Sur mon formulaire, j'ai un menu déroulant comme ceci :

<SELECT name="category" size=1><?php echo "$category";?>
<OPTION value="0"></OPTION>
<OPTION value="trail">Trail</OPTION>
<OPTION value="randovtt">Rando VTT</OPTION>
<OPTION value="raid">Raid</OPTION>
<OPTION value="Autre">Autre</OPTION>
</SELECT>

Je souhaiterais que quand l'utilisateur sélectionne par exemple la valeur "Trail", la valeur "puce_noir.png" soit récupérée par la variable $puce.

Voir http://chti.sportif.free.fr/formulaire/ajout.php

Comment faire ?
Merci
 
WRInaute passionné
Tu crées un array :
Code:
$category=$_REQUEST['category'];
$val=array('trail'=>puce_noir.png','randovtt'=>'rando.png','autre'=>'autre.png');
$puce = $val[$category];
 
Nouveau WRInaute
Peux tu me dire où je dois introduire ce code ?
dsl mais le javascript m'échappe...

Code:
<?php
// Partie de traitement du formulaire...

// Si la requete s'est bien effectuée et donc qu'un ajout a été effectué
if ($_GET['message']=="ok")
{
	// On affiche un message de confirmation
	?>
	<h1>Votre manifestation a bien été ajoutée à notre base de données</h1>
	<h1>Elle sera traitée dans les meilleurs délais.</h1>
		<h3><a href="manifestation.php">Voir les derniers ajouts proposés</a></h3>
		<h3><a href="ajout.php">Ajouter une autre manifestation sportive</a></h3>
	<?php
}
// Si erreur dans la requete 
else if($_GET['message']=="errbdd")
{
	// On affiche un message d'erreur
	?>
	<p>Erreur de connexion à la Bdd...</p>
	<p align="center"><a href="index.php">Retour &agrave; l'index</a></p>
	<?php
}
// Sinon...
else
{

	if (isset($_GET['lat']) && is_numeric($_GET['lat']))
	{
     $lat = $_GET['lat'];
	}
	if (isset($_GET['lng']) && is_numeric($_GET['lng']))
	{
     $lng = $_GET['lng'];
	}
	if (isset($lng) && isset($lat))
{
					$requete = "INSERT INTO markers_formulaire (lat,lng) VALUES('$lat','$lng')";
					$execution = mysql_db_query($db_select, $requete);
}

	// Si le bouton ajouter! a été appuyé
	if (isset($_POST['ajouter']) && $_POST['ajouter'] == 'Ajouter!')
	{ 
		// Récuperation des variables postés
		$date = htmlentities($_POST['date']);
		$position = htmlentities($_POST['position']);
		$puce = htmlentities($_POST['puce']);
		$lat = htmlentities($_POST['lat']);
		$lng = htmlentities($_POST['lng']);
		$category = htmlentities($_POST['category']);
		$ville = strtoupper($_POST['ville']);
		$address = htmlentities($_POST['address']);
		$name = htmlentities($_POST['name']);
		$link = htmlentities($_POST['link']);
		$madate = htmlentities($_POST['madate']);
		$infoUrl = htmlentities($_POST['infoUrl']);
		$fiche = htmlentities($_POST['fiche']);
		$photo = htmlentities($_POST['photo']);
		$info = htmlentities($_POST['info']);
		
		// Si tous les champs ont étés remplis
		if ( $_POST['address']!="" && $_POST['madate']!="" && $_POST['category']!="" && $_POST['name']!="" && $_POST['ville']!="" && $_POST['info']!="" && $_POST['link']!="" && $_POST['date']!="" )
		{
				// Connexion avec la BDD
				$mysql_link = include ('mysql_connect_formulaire.php');
				// Si connexion effectuée
				if($mysql_link)
				{
					// Requete et execution de la requete
					$requete = "INSERT INTO markers_formulaire (geo_id,geo_statut,geo_date,geo_pos,geo_address,puce,lat,lng,madate,category,ville,name,info,link,infoUrl,fiche,photo) VALUES('','1','$date','$position','$address','$puce','$lat','$lng','$madate','$category','$ville','$name','$info','$link','infoUrl','fiche','photo')";
					$execution = mysql_db_query($db_select, $requete);
					// Suivi d'une redirection JS
					?>
					<SCRIPT LANGUAGE="JavaScript">
					 document.location.href="ajout.php?message=ok"
					</SCRIPT>
					<?php
				}
				// Si erreur de connexion à la bdd
				else
				{
					?>
					<SCRIPT LANGUAGE="JavaScript">
					 document.location.href="ajout.php?message=errbdd"
					</SCRIPT>
					<?php
				}
				?>
				<?php		
		}
		// Si un des champs est vide on affiche un message d'erreur
		else
		{
			?>
			<h1>Erreur<br />Au moins un des champs est vide !</h1>
			<?php
		}
	}

// Partie formulaire
	?>
	<form action="ajout.php" method="POST">
	<div class="hr"></div>
	<?php
	$date = date('Y-m-j H:i:s');

	?>

<div class="right_formulaire">		
    <label>Addresse: </label><input id="address" name="address" type="text" value="<?php echo "$address";?>" class="champs" size="50" />
    <div id="map_canvas"></div><br/>
    <label>latitude: </label><input id="lat" name="lat" type="text" value="<?php echo "$lat";?>" class="champs" size="50" /><br/>
    <label>longitude: </label><input id="lng" name="lng" type="text" value="<?php echo "$lng";?>" class="champs" size="50" />

</div>
	
<div class="left_formulaire">
	<p>Ville (en majuscules SVP)</p>
	<p><input name="ville" type="text" value="<?php echo "$ville";?>" onchange="addVille(this.value); return false" class="champs" size="50" /><input name="date" type="hidden" value="<?php echo "$date";?>" class="champs"/><input name="position" id="position" type="hidden" value="<?php echo "$position";?>" readonly="readonly" class="champs"  /></p>

	<p>Date</p>
	<p><input name="madate" id="madate" type="text" value="<?php echo "$madate";?>" class="date_input" size="50" /></p>
	
	<p>Nom (ex : Trail d2B)</p>
	<p><input name="name" type="text" value="<?php echo "$name";?>" class="champs" size="50" /></p>
			
	<p>Courte description</p>
	<p><textarea name="info" cols="38" rows="" class="champs"><?php echo "$info";?></textarea></p>
	
	<p>Site web</p>
	<p><input name="link" type="text" value="<?php echo "$link";?>" class="champs" size="50" /></p>
	
	<p>Catégorie</p>
	<p><fieldset><legend><?php echo "$category";?></legend>
    <select name="category" size=1 onchange="fnChange(this);">
      <option value="0"></option>
      <option value="trail">Trail</option>
      <option value="randovtt">Rando VTT</option>
      <option value="raid">Raid</option>
      <option value="Autre">Autre</option>
    </select></fieldset>
	</p>	
	
	<p align="center"><input type="submit" name="ajouter" id="submit" value="Ajouter!" class="bouton"></p>
	</form>
	
</div>
	<?php
}
?>
 
Nouveau WRInaute
Résolu avec une autre méthode :

NoSmoking a dit:
Le code du SELECT devient donc
Code:
  <fieldset>
    <legend>categorie</legend>
    <select name="category" size=1 onchange="fnChange(this);">
      <option value="0"></option>
      <option id="image_trail.jpg" value="trail">Trail</option>
      <option id="image_rando.jpg" value="randovtt">Rando VTT</option>
      <option id="image_raid.jpg"  value="raid">Raid</option>
      <option id="image_autre.jpg" value="Autre">Autre</option>
    </select>
    <br><input name="puce" id="puce" type="hidden" value="">
  </fieldset>

Maintenant il reste à faire la fonction d'affectation, je te la mets ci dessous sans vraiment l'expliquer, les commentaires me semblant suffisant
Code:
function fnChange( obj){
  // recup numero option selectionnee
  var index = obj.selectedIndex;
  // recup element champ puce
  var oDest = document.getElementById('puce');
  // affectation de la valeur recupere dans l'ID de l'option
  oDest.value = obj.options[index].id;
}
on notera juste que l'on passe en paramètre de la fonction la référence au SELECT pour pouvoir l'exploiter.

A toi de finaliser...
 
WRInaute accro
Y'a aussi la solution d'avoir les deux données dans le value de chaque option, et de les séparer par un |, puis de faire un explode sur la valeur récupérée.
 
Discussions similaires
Haut