繁体   English   中英

如果满足条件,则在php时调用引导程序模态

[英]Invoke bootstrap modal when php if condition is satisfied

当在php中满足某些条件时,我想显示bootstrap 3模态(不使用onclick按钮)。我是php的新手。 如果这本书还不错,我想显示一个引导模式。 我是php bootstrap 3的新手,我真的对这个问题感到困惑。 PHP代码:-

<?php
$date = mysqli_real_escape_string($conn, trim('now()'));
if (isset($_POST['return'])) {
    try {
        //--- start if else
        if (isset($_POST['acc_no']) && !empty($_POST['acc_no'])) {
            $acc_no = mysqli_real_escape_string($conn, trim($_POST['acc_no']));
            //echo "$acc_no";
        } else {
            throw new Exception('<p class="notice">Please Enter an Accession Number.</p>');
        }
        //-----end of if else

        $sql = "SELECT * FROM `issue_tbl` WHERE `acc_no`='$acc_no' AND /*`member_no`='$member_no' AND*/ `issue_return_status`='issued'";
        $res = mysqli_query($conn, $sql);
        if (mysqli_num_rows($res) < 1) {
            throw new Exception('<p class="notice">No Book Issue found for this Accession Number.</p>');
        } else {
            $row          = mysqli_fetch_assoc($res);
            $title        = $row['title'];
            $acc_no       = $row['acc_no'];
            $issue_date   = $row['issue_date'];
            $cover_img    = $row['cover_img'];
            $author       = $row['author'];
            //no of days ,weeks
            $issue_on     = strtotime($issue_date);
            $current_date = time();
            $no_of_days   = $current_date - $issue_on;
            $no_of_days   = round($no_of_days / (60 * 60 * 24));
            $weeks        = $no_of_days / 7;
            //$weeks= round($weeks);
            $total_fine   = $weeks * 5;
            $total_fine   = round($total_fine, 2);
            //$total_fine=round($total_fine);
            if ($no_of_days <= 7) {
                $due_status = '<h1 class="label label-success">No Due</h1>';
                $total_fine = '0.00';
                $sql        = "UPDATE `issue_tbl` SET `issue_return_status`='return',`return_date`=$date WHERE `acc_no`='$acc_no' AND /* `member_no`='$member_no' AND */ `issue_return_status`='issued'";
                $res        = mysqli_query($conn, $sql);
                if (!$res) {
                    throw new Exception('<p class="notice">Failed to Return Book.</p>');
                } else {
                    $acc_update_sql = "UPDATE `acc_reg` SET `available`='true' WHERE `acc_no`= '$acc_no' AND `available`='false'";
                    if (mysqli_query($conn, $acc_update_sql)) {
                        echo '<p class="notice-success">Book Returned Successfully.</p>';
                    } else {
                        throw new Exception(mysqli_error($conn));
                    }
                }
                // throw new Exception($due_status);
            } else {
                $due_status = ' <h1 class="label label-danger"> Fine Due</h1>';
                // I want to display Bootstrap modal in this section just like i am using javascript alert in the below...

                // -------------------------------------- I want do this without modal button-------------------
                // <!-- Button trigger modal -->
                // echo' <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
                //                                Launch demo modal
                //                                </button>';
                // -------------------------------------- I want do this without modal button-------------------
                echo '<script language="javascript">';
                echo 'alert("message successfully sent")';
                echo '</script>';
                throw new Exception($due_status);
            }

        }

    }
    catch (Exception $e) { //end of try block
        echo $e->getMessage();
    } //end of catch block
} //end of Isset post issue
?>

情态:-

<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Modal Header</h4>
      </div>
      <div class="modal-body">
        <p>Some text in the modal.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>

请有人帮我。 对不起,我的英语不好。 这不是我的母语。 提前致谢

因为您才刚刚开始,所以我决定在问题下的评论中添加一些细节,然后将其转换为答案,为您提供更详细的解释,以希望您(以及其他未来的用户)会发现它有用。 这是我的原始评论,它概述了原理: php服务器端,JavaScript客户端

除了@ju_指出的内容外,您还需要了解以下原则:当页面被“烘焙”时(在服务器端),将执行php。 页面完成且已提供给浏览器(客户端)时,Bootstrap将通过JavaScript打开。 当您的条件为true(在php中)时,您需要在页面HTML标记中放置一些内容(例如data-*属性),您可以在页面到达浏览器后通过JavaScript进行检查。 如果您传递的元素/属性为true,请以编程方式打开模式。


了解您的php代码的逻辑与此处无关。 我只是假设您将条件的真实性放在php中的$isConditionTrue变量中。 在php中:

if ($isConditionTrue) {
    echo '<div style="display:none" data-condition></div>'
}

这将在您的标记中放置一个具有data-condition属性的隐藏div。

在JavaScript中(我将使用jQuery,因为它已经为Bootstrap加载了):

if ($("[data-condition]").is("[data-condition]")) {
    $('#yourModal').modal('show');
}

注意:不要忘了用适合您特定模态的代码来调整打开模态的代码。 还要注意, data-condition是一个非常通用的属性,您可能想使用更具体的属性(因此,与其他现有自定义属性发生冲突的可能性较小,例如: data-bookfinedata-myfinebook等)。

条件基本上检查页面中是否有具有data-condition属性的元素。 上面的解决方案假定您仅将此技术与一个元素一起使用。 如果您打算多次使用它,则可能需要向data-condition添加值,或者向隐藏元素中添加类和id,并调整JavaScript if()以便逻辑在每种情况下均能正常工作并且不会影响其他情况。


另一个注意事项:您不仅限于data-*属性,而且是向标记添加自定义逻辑的常用方法。 也可以通过jQuery中的.data()方法轻松访问它,当您有集合时特别有用,因此很多人都在使用它。 但是您可以使用任何有效的HTML标记。 例如,自定义标签:

<book-fine></book-file>

但不要忘了在CSS中book-fine{display:none}并将JS更改为:

if ($('book-fine').is('book-fine')) { 
  // open modal
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM