我正在为客户建立发票系统,并希望通过从选择下拉菜单中选择订单来更改订单状态和付款状态。
表格
<form action="changestatus.php" method="post">
<input type="hidden" name="status" value="order"/>
<input type="hidden" name="orderid" value="33"/>
<select name="orderstatus">
<option value="Complete">Complete</option>
<option value="Incomplete">Incomplete</option>
</select>
</form>
<form action="changestatus.php" method="post">
<input type="hidden" name="status" value="payment"/>
<input type="hidden" name="orderid" value="33"/>
<select name="paymentstatus">
<option value="Complete">Complete</option>
<option value="Incomplete">Incomplete</option>
</select>
</form>
changestatus.php
<?php
switch($_POST['status'])
{
case"payment":
mysql_query("UPDATE orders SET payment_status = '$_POST[paymentstatus]' WHERE ID = '$_POST[orderid]'")or die(mysql_error());
break;
case"order":
mysql_query("UPDATE orders SET order_status = '$_POST[orderstatus]' WHERE ID = '$_POST[orderid]'")or die(mysql_error());
break;
}
?>
我想我可以使用jquery.post()(http://api.jquery.com/jQuery.post/),但我不知道如何实现它。
///// EDIT
好的,我找到了解决方案。
我更改了“changestatus.php”以接受GET变量
<?php
include"../inc/config.php";
switch($_GET['status'])
{
case"payment":
$query = mysql_query("UPDATE orders SET payment_status = '$_GET[paymentstatus]' WHERE ID = '$_GET[ID]'")or die(mysql_error());
if($query){echo"Saved";}else{echo"Not Saved";};
break;
case"order":
$query = mysql_query("UPDATE orders SET orderStatus = '$_GET[orderstatus]' wHERE ID = '$_GET[ID]'")or die(mysql_error());
if($query){echo"Saved";}else{echo"Not Saved";};
break;
}
?>
然后将表单更改为
<select name="orderstatus">
<option value="Complete">Complete</option>
<option value="Incomplete">Incomplete</option>
</select>
<select name="paymentstatus">
<option value="Complete">Complete</option>
<option value="Incomplete">Incomplete</option>
</select>
最后是javascript
<script>
$(document).ready(function() {
$('#paymentstatus').change(function() {
url = "changestatus.php?ID=<?php echo $_GET['ORDERID'];?>&status=payment&paymentstatus="+$('#paymentstatus').val();
$("#payment_status_result").load(url)
});
$('#orderstatus').change(function() {
url = "changestatus.php?ID=<?php echo $_GET['ORDERID'];?>&status=order&orderstatus="+$('#orderstatus').val();
$("#order_status_result").load(url)
});
});
</script>
答案 0 :(得分:1)
请参阅http://api.jquery.com/change/,了解如何在更改下拉菜单时触发javascript。
至于jquery帖子,使用它的主要原因是进行AJAX调用。无论你做什么,你都不想忽视结果。您的脚本应始终返回错误或成功消息。
答案 1 :(得分:0)
首先提供表单并选择ID如下:
<form action="changestatus.php" method="post" id="orderStatusForm">
<form action="changestatus.php" method="post" id="paymentStatusForm">
<select name="orderstatus" id="orderstatus">
<select name="paymentstatus" id="paymentstatus">
然后在脚本中添加更改观察器:
var changeOrderStatus = function(){
$.post("changestatus.php", $("#orderStatusForm").serialize());
}
var changePaymentStatus = function(){
$.post("changestatus.php", $("#paymentStatusForm").serialize());
}
$('#orderstatus').change(changeOrderStatus);
$('#paymentstatus').change(changePaymentStatus);
这应该让你开始,然后阅读更多关于jQuery AJAX函数,以便你可以处理来自服务器的响应。
答案 2 :(得分:0)
当然,请像这样使用change():
$("#orderStatus").change(function() { /* post() your form here */ });
并将id="orderStatus"
添加到订单状态下拉列表