Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ajax和php更新mysql(使用jquery)_Php_Jquery_Mysql_Ajax - Fatal编程技术网

使用ajax和php更新mysql(使用jquery)

使用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

下面的代码负责使用选定状态更新MySQL数据库的一列。选择状态后,用户单击submit按钮并执行查询。但是,要在屏幕上显示新状态,必须刷新页面

我读了一些关于AJAX的文章,我认为可以把PHP脚本放在一边,用AJAX发送信息,这样在用户单击“更改”按钮后,新的状态就会改变,而不必刷新页面

我学习了如何通过AJAX发送文本变量,但我还需要发送复选框选择


有人知道如何编写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;'>&nbsp<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;
             };

             ?>