dthjnc306679 2019-07-29 00:31
浏览 58
已采纳

将数据从主页传递到模态内的php查询

I have a dataTable that passes it's row to a modal. Will it be possible to pass it directly to the php page using the same modal script?

This is my main_page.php

<table id="example1" class="table table-bordered">
                <thead>
                  <th>Reference No</th>
                  <th>Finger Scan No</th>
                  <th>Date From</th>
                  <th>Date To </th>
                    <th>Tools </th>
                </thead>
                <tbody>
<?php
$user = $user['fingerscanno'];
$sql = "
SELECT 
payroll.payrollno AS payrollno,
payroll.referenceno AS referenceno,
payroll.fingerscanno AS fingerscanno,
payroll.datefrom AS datefrom,
payroll.dateto AS dateto,
USERINFO.USERID,
USERINFO.BADGENUMBER

FROM 

payroll,
USERINFO

WHERE
USERINFO.BADGENUMBER = payroll.fingerscanno AND
payroll.fingerscanno='$user'
";
                    $query = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
                    while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)){
                      echo "
                        <tr>
                        <td>".$row['referenceno']."</td>
                          <td>".$row['fingerscanno']."</td>
                          <td>".$row['datefrom']."</td>
                          <td>".$row['dateto']."</td>
                          <td>
                            <button class='btn btn-success btn-sm edit btn-flat' data-id='".$row['referenceno']."'><i class='fa fa-edit'></i> Proof of Attendance</button>
                            <button class='btn btn-danger btn-sm delete btn-flat' data-id='".$row['referenceno']."'><i class='fa fa-edit'></i> Payslip Summary</button>
                          </td>

                        </tr>
                      ";
                    }
                  ?>
                </tbody>
              </table>

<?php include 'includes/mymodal.php'; ?>

This is the modal function

$(function(){
  $("body").on('click', '.edit', function (e){
    e.preventDefault();
    $('#edit').modal('show');
    var id = $(this).data('id');
    getRow(id);
  });

This is the modal page

mymodal.php

<div class="modal fade" id="edit">
<input type="hidden" class="decid" id="id" name="id">
<table id="example2" class="table table-bordered">
<thead>
<th>Schedule Date</th>
<th>Schedule Name</th>
<th>Recorded In</th>
<th>Recorded Out</th>
<th>Day Count</th>
<th>Day Value</th>
<th>N.D. Value</th>
<th>Leave Count</th>
<th>R.H. Count</th>
<th>R.H. Value</th>
</thead>
<tbody>
<?php 
$sql = "SELECT fingerscanno, scheduledate, schedulename, recordin, recordout, noofdays, rate, nightdifferential, leaveday, regularholiday, specialholiday, referenceno
FROM payrollrecords WHERE fingerscanno='$user' and referenceno='$id'";

                    $query = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
                    while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)){

 echo "
                        <tr>
                          <td>".$row['scheduledate']."</td>
                          <td>".$row['schedulename']."</td>
                          <td>".$row['recordin']."</td>
                          <td>".$row['recordout']."</td>
                          <td>".$row['noofdays']."</td>
                          <td>".$row['rate']."</td>
                          <td>".$row['nightdifferential']."</td>
                          <td>".$row['leaveday']."</td>
                          <td>".$row['regularholiday']."</td>
                          <td>".$row['specialholiday']."</td>
                        </tr>
                      ";
}

                  ?>
                  </tbody>
              </table>
</div>

My question is, how will I pass this into the table? So that the variable referenceno='$id' will receive the value from the main page.

  • 写回答

1条回答 默认 最新

  • dsqnonh2763 2019-07-29 02:47
    关注

    You need to use AJAX.

    Ajax is a javascript methodology that allows you to exchange information with a back-end PHP file, just as you are attempting to do.

    The AJAX code block will send data to the mymodal.php file, the mymodal.php file will do the MySQL lookup and create the HTML, then echo a string variable (which could be a json object or it could be the HTML that you built in your while loop) back to the main page. The AJAX code block will receive the data echo'd out from the PHP file inside the .done() function and, also in that function, you can modify the DOM to inject the new data. To the user, it will look like they clicked on an element with class edit and the data just appeared in the modal.

    Note that you do not include the mymodal.php file in your main_file.php page, because the AJAX code block knows how to communicate with that file.

    You will need to add the HTML structure for the modal to the bottom of your main page (note that it is initially set to display:none):

    <style>
        #lamodal{display:none;position:fixed;width:100vw;height:100vh;background:black;opacity:0.8;}
            #mdl_inner{width:60%;height:40%;}
        .myflex{display:flex;align-items:center;justify-content:center;}
    </style>
    <div id="lamodal" class="myflex">
        <div id="mdl_inner"></div>
    </div><!-- #lamodal -->
    

    Your javascript (AJAX) will look something like this:

    $(function(){
        $("body").on('click', '.edit', function (e){
            e.preventDefault();
            var id = $(this).data('id');
            $.ajax({
                type: 'post',
                 url: 'mymodal.php',
                data: 'userid=id'
            }).done(function(d){
                //console.log('d: '+d);
                $('#mdl_inner').html(d);
                $('#lamodal').show();
            });
        });
    });
    

    Your mymodal.php file would be changed to look like this:

    <?php 
        $sql = "SELECT fingerscanno, scheduledate, schedulename, recordin, recordout, noofdays, rate, nightdifferential, leaveday, regularholiday, specialholiday, referenceno
        FROM payrollrecords WHERE fingerscanno='$user' and referenceno='$id'";
        $query = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
    
        $out = '
            <table id="example2" class="table table-bordered">
                <thead>
                    <th>Schedule Date</th>
                    <th>Schedule Name</th>
                    <th>Recorded In</th>
                    <th>Recorded Out</th>
                    <th>Day Count</th>
                    <th>Day Value</th>
                    <th>N.D. Value</th>
                    <th>Leave Count</th>
                    <th>R.H. Count</th>
                    <th>R.H. Value</th>
                </thead>
                <tbody>
        ';
    
        while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)){
            $out .= '
                <tr>
                  <td>".$row['scheduledate']."</td>
                  <td>".$row['schedulename']."</td>
                  <td>".$row['recordin']."</td>
                  <td>".$row['recordout']."</td>
                  <td>".$row['noofdays']."</td>
                  <td>".$row['rate']."</td>
                  <td>".$row['nightdifferential']."</td>
                  <td>".$row['leaveday']."</td>
                  <td>".$row['regularholiday']."</td>
                  <td>".$row['specialholiday']."</td>
                </tr>
            ';
        }
    
        $out .= '
                </tbody>
            </table>
        ';
    
        echo $out;
    ?>
    

    Note how we are constructing a string variable and building it through concatination. When done, just echo $out and the newly-constructed HTML will appear in the .done() function of your AJAX code block.

    See these additional AJAX examples and explanations:

    http://www.jayblanchard.net/basics_of_jquery_ajax.html

    Simple Like/Unlike text button - adding ajax etc

    pass var to bootstrap modal where php will use this value

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用微信开发者工具实现一个“婚博会”小程序
  • ¥15 ros的rviz仿真机器人
  • ¥15 关于#linux#的问题(输入输出错误):出现这个界面接着我重新装系统,又让修电脑的师傅帮我扫描硬盘(没有问题)用着用着又卡死(相关搜索:固态硬盘)
  • ¥15 cv::resize不同线程时间不同
  • ¥15 web课程,怎么做啊😭没好好听课 根本不知道怎么下手
  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊