如何从动态下拉列表中将数据插入到另一个表中

时间:2018-10-14 01:54:38

标签: php mysql

我有两个表Set.retainAll; office1

我想从下拉列表中插入所选内容

Office2

drop.php

saveoffice

ajaxpro.php

    <!DOCTYPE html>

<html dir="rtl"
lang="ar">
<head>
<meta charset="utf-8">
    <title>dependent dropdown list using jquery Ajax?</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="http://demo.itsolutionstuff.com/plugin/bootstrap-3.min.css">
</head>
<body>
  <form action="savedata.php" name="myForm" method="POST"/>
<div class="container">
    <div class="panel panel-default">
      <div class="panel-heading">Select office 1 and get bellow Related office 2</div>
      <div class="panel-body">
      <div class="form-group">
                <label for="title">offices 1:</label>
                <select name="office1" id="office2" class="form-control">
                <option value="">--- choose office 1 ---</option>

                    <?php
                        require('config.php');
                        $sql = "SELECT * FROM office1";
                        $result = $con->query($sql);
                        while($row = $result->fetch_assoc()){
                            echo "<option value='".$row['id']."'>".$row['off1']."</option>";
                        }
                    ?>
                        </select>
                        </div>


                        <div class="form-group">
                        <label for="title">offices 2</label>
                        <select name="office2" id="office2" class="form-control" style="width:350px">
                        </select>

                        </div>
                      </br>
            <div class="col-md-4">
            <input type="submit" name="submit" value="Insert Data" class="btn btn-danger">
            </div>

      </div>

    </div>

</div>


<script>
$( "select[name='office1']" ).change(function () {
    var stateID = $(this).val();
    if(stateID) {
        $.ajax({
            url: "ajaxpro.php",
            dataType: 'Json',
            type:'POST',
            data: {'id':stateID},
            success: function(data) {
                $('select[name="office2"]').empty();
                $.each(data, function(key, value) {
                    $('select[name="office2"]').append('<option value="'+ key +'">'+ value +'</option>');
                });
            }
        });
    }else{
        $('select[name="office2"]').empty();
    }
});

</script>


</body>

</html>

savedata.php <它不起作用

  <?php


   require('config.php');
   $sql = "SELECT * FROM office2
         WHERE off2_id LIKE '%".$_POST['id']."%'";
   $result = $con->query($sql);


   $json = [];
   while($row = $result->fetch_assoc()){
        $json[$row['id']] = $row['off2'];
   }
   echo json_encode($json);
?>

我可以要求对 <?php include('config.php') $off1 = $_POST['$offices1']; $off2 = $_POST['$offices2']; $query = " INSERT INTO `saveoffice`(`id`, `offices1`, `offices2`) VALUES (0,".$office1.",".$offices2.") "; $query_execute=mysqli_query($con,$query); if($query_execute) { header("location:drop.php?q=success"); } else { echo mysqli_error($con); header("location:drop.php?e=error"); } ?> 进行哪些更改 将数据插入表savedata.php

2 个答案:

答案 0 :(得分:0)

看起来您正在创建名为$off1$off2的变量,但是您正在SQL语句中名为$offices1$offices2的变量中使用其他变量:

$off1 = $_POST['$offices1'];
$off2 = $_POST['$offices2'];
$query = " INSERT INTO `saveoffice`(`id`, `offices1`, `offices2`) VALUES (0,".$office1.",".$offices2.") ";

尝试将$offices1更改为$off1,将$offices2更改为$off2

答案 1 :(得分:0)

1)您的表单元素名称分别是offices1offices2,但是您正在使用$offices1$offices2作为$_POST数组键。它们应该是offices1offices2

2)您将$_POST的值分配给$off1$off2,然后使用$offices1$offices2构建查询。

在代码中跟随所有变量名,并确保它们对应。我认为您在数组键和变量名之间有些困惑。他们是分开的东西。 $_POST数组键应与表单中的name=元素匹配。

而且,这非常重要,您需要清理对数据库的输入。您让自己不受SQL injection攻击。

您需要在所有用户提供的变量上使用mysqli_real_escape_string。此外,您可以考虑进一步验证输入。举例来说,假设您希望输入的数字介于1到100之间。请检查是否收到的数字介于1到100之间,否则显示错误。

此外,还需要考虑其他一些事情,例如防范Cross Site Scripting (XSS)。这是关于该主题的另一篇文章。

What's the best method for sanitizing user input with PHP?