Home > other >  How to get select value on form in php?
How to get select value on form in php?

Time:02-08

I want to get a selected value on the form.

Suppose If I select category "car" from sub-category "nissan". I want this value on php.

Not value 1 and 1 because I do not recognise what value is selected. I want name or unique value in my php file.

This is php file on the same page:

<?php

if(isset($_POST['select1'])){
    $select1 = $_POST['select1'];
}

if(isset($_POST['select2'])){
 $select2 = $_POST['select2'];
}

?>


 <html>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js 
 </script>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<select name="select1" id="select1">
 <option value=""></option>
 <option value="1">car</option>
 <option value="2">phone</option>
 <option value="3">tv</option>
</select>


<select name="select2" id="select2">
 <option value=""></option>
 <option value="1">toyota</option>
 <option value="1">nissan</option>
 <option value="1">bmw</option>
 <option value="2">Iphone</option>
 <option value="2">LG</option>
 <option value="2">Samsung</option>
 <option value="3">Philips</option>
 <option value="3">Samsung</option>
</select>
</form>
</html>

<script>
 $("#select1").change(function() {
  if ($(this).data('options') == undefined) {
  /*Taking an array of all options-2 and kind of embedding it on the select1*/
  $(this).data('options', $('#select2 option').clone());
  }
  var id = $(this).val();
  var options = $(this).data('options').filter('[value='   id   ']');
  $('#select2').html(options);
 });
</script>

Any idea or suggestions would be welcome Thank You.

CodePudding user response:

You can remove the value property from all your options if you want to receive the text on the server instead. Try this

// get all categories and sub categories
let categories = {};
$('#select2 option[data-category]').each(function(i, element){
    let category = $(this).data('category');

    // add category
    if( categories[category] == undefined ) categories[category] = [];
    // add sub category to category
    categories[category].push(element.textContent);
    // remove the option from the DOM
    element.remove();
});

// append related sub categories to #select 2
$("#select1").change(function() {
    let subs = categories[this.value] ?? []; // sub categories for selected category
    $('#select2').html('<option></option>').append(subs.map(txt => `<option>${txt}</option>`));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
    <select name="select1" id="select1">
        <option></option>
        <option>car</option>
        <option>phone</option>
        <option>tv</option>
    </select>
    <select name="select2" id="select2">
        <option></option>
        <option data-category="car">toyota</option>
        <option data-category="car">nissan</option>
        <option data-category="car">bmw</option>
        <option data-category="phone">Iphone</option>
        <option data-category="phone">LG</option>
        <option data-category="phone">Samsung</option>
        <option data-category="tv">Philips</option>
        <option data-category="tv">Samsung</option>
    </select>
</form>

CodePudding user response:

hmm, Add the data attribute in the parent option and give a value like data-parent='1' and change value='car'

same you can do with child data-child='1' and value="toyota"

then simply target the data attribute in js and remove other options from the child options

  •  Tags:  
  • Related