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

CyberNord
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 32
Inscription: 13 Oct 2004

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

Message le Dim Jan 30, 2011 11:21

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


MikeR
WRInaute impliqué
WRInaute impliqué
 
Messages: 587
Inscription: 9 Jan 2010

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

Message le Dim Jan 30, 2011 16:44

Tu crées un array :
Code: Tout sélectionner
$category=$_REQUEST['category'];
$val=array('trail'=>puce_noir.png','randovtt'=>'rando.png','autre'=>'autre.png');
$puce = $val[$category];

CyberNord
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 32
Inscription: 13 Oct 2004

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

Message le Dim Jan 30, 2011 19:16

Peux tu me dire où je dois introduire ce code ?
dsl mais le javascript m'échappe...

Code: Tout sélectionner
<?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
}
?>

CyberNord
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 32
Inscription: 13 Oct 2004

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

Message le Dim Jan 30, 2011 20:27

Résolu avec une autre méthode :

[QUOTE=NoSmoking]
Le code du SELECT devient donc
Code: Tout sélectionner
  <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: Tout sélectionner
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...[/QUOTE]


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

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

Message le Dim Jan 30, 2011 20:36

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.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité