我有两个表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
答案 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)您的表单元素名称分别是offices1
和offices2
,但是您正在使用$offices1
,$offices2
作为$_POST
数组键。它们应该是offices1
,offices2
。
2)您将$_POST
的值分配给$off1
,$off2
,然后使用$offices1
,$offices2
构建查询。
在代码中跟随所有变量名,并确保它们对应。我认为您在数组键和变量名之间有些困惑。他们是分开的东西。 $_POST
数组键应与表单中的name=
元素匹配。
而且,这非常重要,您需要清理对数据库的输入。您让自己不受SQL injection攻击。
您需要在所有用户提供的变量上使用mysqli_real_escape_string
。此外,您可以考虑进一步验证输入。举例来说,假设您希望输入的数字介于1到100之间。请检查是否收到的数字介于1到100之间,否则显示错误。
此外,还需要考虑其他一些事情,例如防范Cross Site Scripting (XSS)。这是关于该主题的另一篇文章。