abiieez
abiieez

Reputation: 3189

Get selected text from dropdown in PHP

I am totally new in PHP, in fact the reason I am doing this is to customize a wordpress plugin so it can fit my need. So far I have a default form, what I am doing now is to add a country dropdown. Here's how I add it

<div class="control-group">
    <label class="control-label" for="Country">Country :</label>
    <div class="controls">
        <select id="itemType_id" name="cscf[country]" class="input-xlarge">
            <option value="[email protected]">Malaysia</option>
            <option value="[email protected]">Indonesia</option> 
        </select>   
        <span class="help-inline"></span>
    </div>  
</div>

So far I only able to retrieve the value of selected item with

$cscf['country'];

How can I get the display text which is the country name in this case ?

Upvotes: 4

Views: 58731

Answers (4)

aRyhan
aRyhan

Reputation: 355

<select name="text selection" onchange="getText(this)">
  <option value="">Select text</option>
  <option value="1">my text 1</option>
  <option value="2">my text 2</option>
</select>

First put a java script function on the attribute "onchange" of the select. Then, create your function that will transfer the text in a text box by using getElementById

<script>
  function getText(element) {
  var textHolder = element.options[element.selectedIndex].text
  document.getElementById("txt_holder").value = textHolder;
  }
</script>

Then create a temporary holder:

<input type="" name="txt_holder" id="txt_holder"> type should be hidden

Then assign it in a PHP variable:

$variableName=$_POST['txt_holder'];

Upvotes: 3

eyettea
eyettea

Reputation: 1446

You can use a hidden field, and with JavaScript and jQuery you can set the value to this field, when the selected value of your dropdown changes.

<select id="itemType_id" name="cscf[country]" class="input-xlarge">
  <option value="[email protected]">Malaysia</option>
  <option value="[email protected]">Indonesia</option> 
</select>
<input type="hidden" name="country" id="country_hidden">

<script>
  $(document).ready(function() {
    $("#itemType_id").change(function(){
      $("#country_hidden").val(("#itemType_id").find(":selected").text());
    });
  });
</script>

Then when your page is submitted, you can get the name of the country by using

$_POST["country"]

Upvotes: 12

Rohan Kumar
Rohan Kumar

Reputation: 40639

Try it like,

<?php
   if(isset($_POST['save']))
   {
      //Let $_POST['cscf']['country']= [email protected]
      // you can explode by @ and get the 0 index name of country
      $cnt=explode('@',$_POST['cscf']['country']);
      if(isset($cnt[0]))// check if name exists in email
         echo ucfirst($cnt[0]);// will echo Malaysia
   }
?>

<form method="post">
    <div class="controls">
        <select id="itemType_id" name="cscf[country]" class="input-xlarge">
            <option value="[email protected]">Malaysia</option>
            <option value="[email protected]">Indonesia</option> 
        </select>   
        <span class="help-inline"></span>
    </div>
    <div class="controls">
        <input type="submit" name='save' value="Save"/>   
        <span class="help-inline"></span>
    </div>
</form>

Upvotes: 1

Padmanathan J
Padmanathan J

Reputation: 4620

Try this

<?php
   if(isset($_POST['save']))
   {
       $arrayemail = $_POST['cscf'];
       $mail =  $arrayemail['country'];
       $explode=explode('@',$mail);
      // print_r($explode);
        if(isset($explode[0]))
         echo ucfirst($explode[0]);     

   }
?>

<form method="post">
    <div class="controls">
        <select id="itemType_id" name="cscf[country]" class="input-xlarge">
            <option value="[email protected]">Malaysia</option>
            <option value="[email protected]">Indonesia</option> 
        </select>   
        <span class="help-inline"></span>
    </div>
    <div class="controls">
        <input type="submit" name='save' value="Save"/>   
        <span class="help-inline"></span>
    </div>
</form> 

Upvotes: 1

Related Questions