使用ajax和php更新mysql(使用jquery)
下面的代码负责使用选定状态更新MySQL数据库的一列。选择状态后,用户单击submit按钮并执行查询。但是,要在屏幕上显示新状态,必须刷新页面 我读了一些关于AJAX的文章,我认为可以把PHP脚本放在一边,用AJAX发送信息,这样在用户单击“更改”按钮后,新的状态就会改变,而不必刷新页面 我学习了如何通过AJAX发送文本变量,但我还需要发送复选框选择使用ajax和php更新mysql(使用jquery),php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,下面的代码负责使用选定状态更新MySQL数据库的一列。选择状态后,用户单击submit按钮并执行查询。但是,要在屏幕上显示新状态,必须刷新页面 我读了一些关于AJAX的文章,我认为可以把PHP脚本放在一边,用AJAX发送信息,这样在用户单击“更改”按钮后,新的状态就会改变,而不必刷新页面 我学习了如何通过AJAX发送文本变量,但我还需要发送复选框选择 有人知道如何编写AJAX代码吗 //the select where the user set the status <label
有人知道如何编写AJAX代码吗
//the select where the user set the status
<label>Selecione o status:</label>
<select name="changePed">
<option value="separacao">Em Separação</option>
<option value="separado">Separado</option>
<option value="faturado">Faturado</option>
<option value="exp">Expedido</option>
<option value="entrg">Mercadoria Entregue</option>
<option value="cancelado">Cancelado</option>
</select>
<button type="submit" >Alterar</button>
<?php
echo "<table id='pedidos' class='table table-hover table-responsive'>
<thead>
<tr>
<th><input type='checkbox' name='select-all' id='select-all' /></th>
<th>Data</th>
<th>EMS</th>
<th>Pedido do cliente</th>
<th>Cliente</th>
<th>Valor</th>
<th>Aut. Comercial</th>
<th>Status</th>
<th>Nota Fiscal</th>
</tr>
</thead>";
while($row = mysqli_fetch_array($resultFIL))
{
$dataped = $row['emissaoPed'];
$valorped = $row['vlr'];
echo "<tbody><tr>";
echo "<td><input name='checkbox[]' type='checkbox' value=" . $row['id'] . "></td>";
echo "<td>" . date('d/m/Y', strtotime($dataped)) . "</td>";
echo "<td><a id='ver_pedido' data-ref=".$row['nPedido']." data-toggle='modal' id='abremodal' href='#myModal'>" . $row['nPedido'] . "</a></td>";
echo "<td>" . $row['NrPedido'] . "</td>";
echo "<td>" . $row['nomeAbrev'] . "</td>";
echo "<td>" . number_format($valorped, 2, ',', '.') . "</td>";
echo "<td><input type='button' value='Autorizado' name='autCom' ></td>";
echo "<td>" . $row['status'] . "</td>";
echo "<td><input type='text' placeholder='0012345' style='width: 70px;'> <button type='submit' class='btn'><i class='fa fa-check' aria-hidden='true'></i></button></td> ";
echo "</tr></tbody>";
}
echo "</table>";
?>
<?php
//The current php script that executes the query to update the database
switch($_POST['changePed']){
case 'separacao':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Em separação" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'cancelado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Cancelado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'faturado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Faturado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'exp':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Expedido" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'exc':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'DELETE FROM pedidos WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'entrg':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Mercadoria Entregue" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'separado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Separado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
};
?>
}
status.php是这样的
<?php
//Conexão à base de dados
$connect = mysqli_connect("localhost","root","", "table_orders") or die ("Forninho fall");
//recebe os parâmetros
$change = $_REQUEST['changePedi'];
$checki = $_REQUEST['checki'];
print_r($change );
switch($change){
case 'separacao':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($checki)){
$arr = filter( $checki );
$sql = 'UPDATE pedidos SET status="Em separação" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'cancelado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Cancelado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'faturado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Faturado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'exp':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Expedido" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'exc':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'DELETE FROM pedidos WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'entrg':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Mercadoria Entregue" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'separado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Separado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
};
?>
这是我的代码
$('#SubBtn')。单击(函数(){
var checkboxValues=$.map($('.checkbox:checked'),函数(e){
返回$(e.val();
}).join();
$.ajax({
url:“”,
方法:“POST”,
数据:{
已更改:$('[name=changed]')。val(),
复选框:复选框值,
}
}).完成(功能(结果){
警惕(“成功”);
}).fail(函数(){
警报(“错误”);
});
})
SELECIO状态:
埃姆塞帕拉昂
塞帕拉多
法图拉多
埃斯佩迪多
麦卡多里亚·恩特雷格
坎塞拉多
1.
2.
3.
Alterar
“有人知道如何编写AJAX代码吗?”是的。但这不太可能吸引很多人。首先,展示一些您尝试过的ajax,展示哪些特定的东西没有按照您想要的方式工作。@TimMorton,嗨Tim,感谢您的建议,我用我尝试过的代码编辑了这个问题:当使用mysqli
时,您应该使用并将用户数据添加到您的查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。您所说的“我尝试了此代码,但无效”是什么意思?你以为会发生什么事而没有发生?是否存在任何错误(在浏览器控制台和/或PHP错误日志、其他日志等中)?Hi@SamOnela。我已经重写了ajax,并放置了一个console.log来了解要获取的值。'changePedi':$(“#changed”).val(),
正在正确地从选择中选取值,但是'checkbox':$(“#checked”)。Val()
,用于获取第一个复选框的值,无论是否选中该复选框。注意:这些复选框是由php脚本生成的,它们的值是mySQL行的id(echo”“;
)亲爱的@gxvv谢谢您的回答。但是对我来说不起作用。复选框是由该代码自动生成的(echo”“;
),其值是MySQL ID。我需要将这些ID发送到status.php页面,以便查询可以进行更改:/如果您想获得多个复选框值,则不能使用ID选择器(#checped)。稍后我将编辑我的代码。
<?php
//Conexão à base de dados
$connect = mysqli_connect("localhost","root","", "table_orders") or die ("Forninho fall");
//recebe os parâmetros
$change = $_REQUEST['changePedi'];
$checki = $_REQUEST['checki'];
print_r($change );
switch($change){
case 'separacao':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($checki)){
$arr = filter( $checki );
$sql = 'UPDATE pedidos SET status="Em separação" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'cancelado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Cancelado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'faturado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Faturado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'exp':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Expedido" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'exc':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'DELETE FROM pedidos WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'entrg':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Mercadoria Entregue" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
case 'separado':
function filter( $dados ){
$arr = Array();
foreach( $dados AS $dado ) $arr[] = (int)$dado;
return $arr;
}
if(isset($_POST['checkbox'])){
$arr = filter( $_POST['checkbox'] );
$sql = 'UPDATE pedidos SET status="Separado" WHERE id IN('.implode( ',', $arr ).')';
$result = mysqli_query($connect,$sql);
}
break;
};
?>