web-dev-qa-db-fra.com

PHP code pour obtenir le texte sélectionné d'une liste déroulante

J'ai une liste déroulante nommée "Make". Dans cette liste déroulante, je charge les noms des fabricants de véhicules. Lorsque je clique sur le bouton RECHERCHER, je souhaite afficher le nom du fabricant sélectionné. Ci-dessous une partie de mon code HTML.

<label for="Manufacturer"> Manufacturer : </label>
<select id="cmbMake" name="Make" >
   <option value="0">Select Manufacturer</option>
   <option value="1">--Any--</option>
   <option value="2">Toyota</option>
   <option value="3">Nissan</option>
</select>

<input type="submit" name="search" value="Search"/>

Vous trouverez ci-dessous mon code PHP jusqu'à présent. 

 <?php

if(isset($_POST['search']))
{
    $maker = mysql_real_escape_string($_POST['Make']);
    echo $maker;
    }
 ?>

Si je sélectionne Toyota dans la liste déroulante et appuie sur le bouton RECHERCHER, la réponse est «2». Cela signifie que cela me donne la valeur de la «Toyota». Mais je veux afficher le nom "Toyota". Comment puis je faire ça? Aidez-moi, s'il vous plaît .... 

4
Emmanuel Yasith

Essayez avec ça. Vous obtiendrez la valeur de la zone de sélection dans $ _POST ['Make'] et le nom dans $ _POST ['selected_text'] 

<form method="POST" >
<label for="Manufacturer"> Manufacturer : </label>
  <select id="cmbMake" name="Make"     onchange="document.getElementById('selected_text').value=this.options[this.selectedIndex].text">
     <option value="0">Select Manufacturer</option>
     <option value="1">--Any--</option>
     <option value="2">Toyota</option>
     <option value="3">Nissan</option>
</select>
<input type="hidden" name="selected_text" id="selected_text" value="" />
<input type="submit" name="search" value="Search"/>
</form>


 <?php

if(isset($_POST['search']))
{

    $makerValue = $_POST['Make']; // make value

    $maker = mysql_real_escape_string($_POST['selected_text']); // get the selected text
    echo $maker;
}
 ?>
5
Ajeesh

Mettez tout ce que vous voulez envoyer à PHP dans l'attribut value.

  <select id="cmbMake" name="Make" >
     <option value="">Select Manufacturer</option>
     <option value="--Any--">--Any--</option>
     <option value="Toyota">Toyota</option>
     <option value="Nissan">Nissan</option>
  </select>

Vous pouvez également omettre l'attribut value. Il utilise par défaut le texte.

Si vous ne voulez pas changer le code HTML, vous pouvez mettre un tableau dans votre PHP pour traduire les valeurs:

$makes = array(2 => 'Toyota',
               3 => 'Nissan');

$maker = $makes[$_POST['Make']];
4
Barmar

Vous pouvez y parvenir en créant un nouveau tableau:

<?php
$array = array(1 => "Toyota", 2 => "Nissan", 3 => "BMW");

if (isset ($_POST['search'])) {
  $maker = mysql_real_escape_string($_POST['Make']);
  echo $array[$maker];
}
?>
1
Bora

si vous le chercher à partir de la base de données alors 

<select id="cmbMake" name="Make" >
<option value="">Select Manufacturer</option>
<?php $s2="select * from <tablename>"; 
$q2=mysql_query($s2); 
while($rw2=mysql_fetch_array($q2)) { 
?>
<option value="<?php echo $rw2['id']; ?>"><?php echo $rw2['carname']; ?></option><?php } ?>
</select>
1
chirag ode

vous pouvez créer un événement jQuery onChange pour obtenir le texte de la liste déroulante lorsque l'utilisateur sélectionne l'un d'entre eux:

<script>    
     $( "select" )
     .change(function () {
     var str = "";
     $( "select option:selected" ).each(function() {
     str += $( this ).text() + " ";
     });
     $('#EvaluationName').val(str);
     })
     .change();
 </script>

Lorsque vous sélectionnez une option, le texte est enregistré dans un masque de saisie.

  <input type="hidden" id="EvaluationName" name="EvaluationName" value="<?= $Evaluation ?>" />

Après cela, lorsque vous soumettez le formulaire, il vous suffit de récupérer la valeur de l'entrée

$Evaluation = $_REQUEST['EvaluationName'];

Vous pouvez ensuite faire ce que vous voulez avec le texte, par exemple, enregistrez-le dans une variable de session et envoyez-le sur une autre page. etc.

0
David Ortega

Changez la valeur de vos options de sélection:

<select id="cmbMake" name="Make" >
     <option value="">Select Manufacturer</option>
     <option value="Any">--Any--</option>
     <option value="Toyota">Toyota</option>
     <option value="Nissan">Nissan</option>
  </select>

Vous ne pouvez pas obtenir le texte de l'option sélectionnée en php. il ne donnera que la valeur de l'option sélectionnée.

Édité:

<select id="cmbMake" name="Make" >
     <option value="0">Select Manufacturer</option>
     <option value="1_Any">--Any--</option>
     <option value="2_Toyota">Toyota</option>
     <option value="3_Nissan">Nissan</option>
  </select>

ON php file:

$maker = mysql_real_escape_string($_POST['Make']);
$maker = explode("_",$maker);
echo $maker[1]; //give the Toyota
echo $maker[0]; //give the key 2
0
Code Lღver