0

i have two drop downs. first drop down populate from database. second drop down populated from database based on selected value of first drop down.

$(document).ready(function() {
  $("#c").change(function() {
    var c1 = $('#c :selected').text();
    if(c1 != "") {
      $.ajax({
        url:'getstatw.php',
        data:{c:c1},
        type:'POST',
        success:function(response) {
          var resp = $.trim(response);
          $("#c").html(resp);
        }
      });
    } else {
      $("#c").html("<option value=''>Select state</option>");
    }
  });
});
 <form id = "world" method="post" action="insert.php">
<select name="country" id="c" style = "width:200px" class="btn btn-primary dropdown-toggle" ;>
      <option>country</option>
  
      <?php
          
      $sql = "select DISTINCT country from table1";
      $res = mysqli_query($con, $sql);
      if(mysqli_num_rows($res) > 0) {
        while($row = mysqli_fetch_object($res)) {
          echo "<option value='".$row->id."'>".$row->c."</option>";
    
        }
      }
      ?>
    </select>
<br><br>
  <label for="s" >State</label>

<select name="State" id="s" style = "width:200px  " ; class="btn btn-primary dropdown-toggle";><option>Select state</option></select><br><br>
<button id = "sub" type="submit" class="btn btn-primary" disabled>Submit</button>
</form>
  

insert.php

$con=mysqli_connect("localhost","root","","world");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
//home tab
$c = mysqli_real_escape_string($con, $_POST['country']);
$s = mysqli_real_escape_string($con, $_POST['state']);


//query for table_mainast
$sql1="INSERT INTO table1 (Country, State)
VALUES ('$c', '$s',)";
//query for table_dataast


if (!mysqli_query($con,$sql1)) {
  die('Error: ' . mysqli_error($con));
}

echo "1 record added";

mysqli_close($con); 
getstate.php

<?php
$con=mysqli_connect("localhost","root","","test");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

if(isset($_POST['c'])) {
  $sql = "select DISTINCT `State` from `table2` where `Country`='".mysqli_real_escape_string($con, $_POST['c'])."'";
  $res = mysqli_query($con, $sql);
  if(mysqli_num_rows($res) > 0) {
     echo "<option value=''>------- Select --------</option>";
    while($row = mysqli_fetch_object($res)) {
      echo "<option value='".$row->id."'>".$row->c."</option>";
    }
  }
} else {
  header('location: ./');
}


?>

i have tried almost all solution given on net. but do not understand my data is not inserted into mysql database. How to insert HTML select value as text in MySQL via PHP PHP Drop down list selected value not inserted in the database

Sarah_Salar
  • 183
  • 2
  • 13

2 Answers2

0

You need to concantenate them properly and also you don't you put , after last column in the query

Change following

$sql1="INSERT INTO table1 (Country, State)
VALUES ('$c', '$s',)";

to

$sql1="INSERT INTO table1 (country, state)
VALUES ('".$c."', '".$s."')";
Ayaz Ali Shah
  • 3,453
  • 9
  • 36
  • 68
0

if want to add options to the second drop down you need to use append not html and your using same ID i.e. #c to write the response in ajax success, change it to second drop down ID i.e. #s

you can try this:

$(document).ready(function() {
  $("#c").change(function() {
    var c1 = $('#c :selected').text();
    if(c1 != "") {
      $.ajax({
        url:'getstatw.php',
        data:{c:c1},
        type:'POST',
        success:function(response) {
          var resp = $.trim(response);
          $("#s").append(resp);
        }
      });
    } else {
      $("#c").append("<option selected value=''>Select state</option>");
    }
  });
});

then remove , in insert query.

$sql1="INSERT INTO table1 (Country, State)
VALUES ('$c', '$s')";
Madhu
  • 326
  • 2
  • 7
  • kindly look at this problem https://stackoverflow.com/questions/49043561/insert-two-array-and-variable-value-into-mysql-table-with-single-query – Sarah_Salar Mar 02 '18 at 05:30