首页 > 解决方案 > 表单在 php 中提交 ajax 加载后无法保存检查的多个复选框值

问题描述

我有一个简单的表格,它有:从日期,到日期当我点击提交时,我会得到关于 ajax 负载的汽车预订列表。在每一行中都有一个复选框来选择该行,并且在多次选择行后,单击一个通用按钮以在下一页添加账单。现在我的问题是我想选择多行并再次填写从日期到日期然后提交表单以获取其他列表以再次选择其他行以添加账单,现在问题是当我再次提交表单时旧的选定行没有得到保存,以便我可以在账单页面上一起选择所有行。现在下面的片段都正常工作,但我不知道当再次填写表格并完成选择时如何做到这一点。下面的代码只做当前页面的选择。1.这是ajax脚本

<script> $("#button").click(function(){
document.getElementById("loading").style.display = "block"; 
document.getElementById("overlay").style.opacity = '0.2';
var toDate = $("#datepicker2").val();
var fromDate = $("#datepicker").val();  
// var comp = $("#comp").val();
var dataString = 'fromDate='+ fromDate + '&toDate='+ toDate;
$.ajax({
  url: 'CloseBookingload.php',
  data:dataString,
  type: 'POST',
  success: function(result){
          // console.log(result);
           $("#load").show();
          $("#resultData").html(result);
           document.getElementById("loading").style.display = "none"; 
           document.getElementById("overlay").style.opacity = '1';
        }
      }); });</script>

这是加载后我的 ajax 页面复选框字段

 <input type="checkbox" id="checkselect" name="checkselect[]" value="<?php echo $row['car_booking_id'];?>">

这是获取复选框值的地方

    $checkselect=array();
if(!empty($_POST['checkselect']))
{
    $checkselect=$_POST['checkselect']; 
    $nc = count($checkselect);
    for($i=0;$i<$nc;$i++)
    {
    $dids = $checkselect[$i];
    }
    $ids = join(",",$checkselect);
    $booking_car = $db->prepare("SELECT * FROM `car_booking`
    left join driver_master on driver_master.driver_id = car_booking.driver_id
    left join vendor_master on vendor_master.vendor_id=car_booking.vendor_name
    left join company_master on company_master.company = car_booking.company
    inner join city_master on city_master.city_id=car_booking.action
    WHERE booked_status=1 and car_booking.slip=1 and car_booking.car_booking_id in ($ids)  order by  str_to_date( booking_date,'%d/%m/%Y') asc ");
    $booking_car->execute();
    $MyArr=$booking_car->fetchall();
    // print_r($MyArr);
    // die;
    $booking_car2 = $db->prepare("SELECT * FROM `car_booking`
    left join driver_master on driver_master.driver_id = car_booking.driver_id
    left join vendor_master on vendor_master.vendor_id=car_booking.vendor_name
    left join company_master on company_master.company = car_booking.company
    inner join city_master on city_master.city_id=car_booking.action WHERE booked_status=1 and car_booking.slip=1 and car_booking.car_booking_id in ($ids) order by  str_to_date( booking_date,'%d/%m/%Y') asc ");
    $booking_car2->execute();
    $r2=$booking_car2->fetch();
}

for($i=0;$i<count($MyArr);$i++){

    $NewIDArr[$i][0]=$MyArr[$i]['car_booking_id'];
}
$Mixed = $NewIDArr;
$r = json_encode($Mixed);
$RequestText = urlencode($r);
?>
    <input type="hidden" name="RequestText" value="<?php echo $RequestText; ?>"> 
    <input type = "submit" name = "update" value = "Update">

首页 IMAGE 主页 IMAGE

获取和更新实际值的页面

<?php
                require_once '../dbconfig.php';
                $r = urldecode($_REQUEST['RequestText']);
                $Mixed = json_decode($r);
                $bill=$_POST['bill'];
                $remark=$_POST['remark'];

                //$RequestText = $_POST['RequestText'];
                $singleArray = []; 
                foreach ($Mixed as $childArray) 
                { 
                    foreach ($childArray as $value) 
                    { 
                    $singleArray[] = $value; 
                    } 
                }


                // print_r($singleArray);
                // print_r( $bill);
                // print_r($remark);
                // die;7615, 7631

                    $nc = count($singleArray);
                    //print_r($nc);
                        for($i=0;$i<$nc;$i++)
                        {
                        $did = $singleArray[$i];
                        $data=array('bill_no'=>$bill,'remark'=>$remark);
                        $where = array('car_booking_id' =>$did);    
                        $update = $db->update('car_booking',$data,$where)- 
                       >affectedRows();

                        }
                        header("Location:close_booking.php");
                            //echo "Updated";

    ?>

标签: javascriptphpajaxcheckbox

解决方案


现在,当您将在数组中发送选定的行时,从已关闭预订的会话值中检查 id 并进行操作而无需再次点击并继续进行账单页面。在将响应发送回客户端服务器并存储之前,使用已关闭的预订创建会话,如下所示:-

Array
(
[closed_bookings] => Array
    (
        [123] => Array
            (
                [name] => abc
                [company_name] => abc pvt ltd
                [id] => 123
            )

        [1234] => Array
            (
                [name] => xyz
                [company_name] => abc pvt ltd
                [id] => 1234
            )

    )

)

选定的行值将类似于..

Array
(
[0] => 123,
[1] => 1234
)

现在将 foreach 循环与选定的行一起使用,并使用该键从已关闭的预订中获取值(选定值的值 ex 123)并进行操作。


推荐阅读