【发布时间】:2016-10-19 22:28:20
【问题描述】:
我想通过选择下拉字段更改数据库中的状态。 我用ajax发送。第一行一直在工作,但有多个数据我无法更新第二、第三……等等
我尝试使用 serialize(),但它不起作用。
从数据库中选择:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".allbooks").change(function(){
var allbooks = $(this).val();
var dataString = "allbooks="+allbooks;
$.ajax({
type: "POST",
data: dataString,
url: "get-data.php",
success: function(result){
$("#show").html(result);
}
});
});
});
</script>
</head>
<body>
<?php
define("HOST","localhost");
define("USER","root");
define("PASSWORD","");
define("DATABASE","hotel");
$euConn = mysqli_connect(HOST, USER, PASSWORD, DATABASE);
$selectRooms = "SELECT * FROM proba WHERE status='inRoom'";
$resultRooms = mysqli_query($euConn,$selectRooms);
if (mysqli_num_rows($resultRooms) > 0) {
echo "<div id='reserved' align='center'>";
While ($row = mysqli_fetch_array($resultRooms)) {
echo $row[1];
echo $row[0];
?>
<select name="allbooks" id="allbooks">
<option name="years">Choose</option>
<?php
for($i=1; $i<=19; $i++)
{
echo "<option value=".$i.">".$i."</option>";
}
?>
</select><br />
<?php }
}
else
echo "<h4>nothing in the db</h4></div>";
?>
<div id="show">
</div>
</body>
</html>
并得到结果:
if(!empty($_POST["allbooks"])) {
var_dump($_POST);
$id = 2;
//echo $_POST['modelS'];
$room = $_POST['allbooks'];
$sql2 = "UPDATE proba SET room='$room' WHERE id_reservation='$id'";
$query = mysqli_query($euConn, $sql2);
var_dump($query);
}
如何改变,或者什么是简单的解决方案?感谢您的帮助。
【问题讨论】:
-
你能更好地解释一下这是如何失败的吗? “第一行一直在工作,但有多个数据我无法更新第二、第三……等等”很模糊
-
一张图片有助于更好地理解问题?
-
您是说在呈现的页面上有多个元素与
idallbooks?如果是这样,那就错了,ID 必须是唯一的。您想将它们更改为一个类并使用$(".allbooks").change(function(){ .... -
另外,如果每一行都有自己的
show元素,你也需要在那里使用一个类,比如.show而不是#show并且你需要定位正确的元素。你如何做到这一点将取决于你的html。我举了一个例子,但你没有显示所有的 html,所以我不能 -
@barmar 这个问题根本不是关于从
multi-select传递多个选项的问题,OP 有 多个选择框,如其中,它们有多个并且他们对所有人都使用相同的ID。这不是这些问题的重复