[英]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">×</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-bookfine
或data-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.