在sql调用之前显示Bootstrap警报

时间:2018-03-09 18:52:18

标签: php html mysql twitter-bootstrap-3

我想显示一个引导警报:

<div class="alert alert-warning" id="slow_loading_data">
    <strong>Warning!</strong> Retrieving a large quantity of data, please wait.
</div>

我希望在运行PHP代码的其余部分之前立即显示它。我有一个SQL语句从MySQL数据库中检索超过5000条记录,所以我希望用户知道页面正在加载。

$sql = "SELECT * FROM " . dbname_bowl . ".ball_model";
try {
    $query = $conn->prepare($sql);
    $query->execute();
    while($data = $query->fetch()) {
        $modelID = $data['modelID'];
        $model[$modelID]['name'] = $data['name'];
    }
        $query->closeCursor();
    } catch (Exception $e) {
        $error_message = 'There was an error processing your request. Page aborted. Please contact the System Administrator with Date & Time of your error. (' . date('Y-m-d H:i:s',time()) . ")";
        $application->enqueueMessage(JText::_($error_message), 'error');
        return;
    }

任何有助于解决此问题的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您想要做的是在循环之前将输出刷新到屏幕。您可以使用ob_flush&amp; PHP的flush方法

请尝试以下方法:

<?php之后(或session_start()之后,如果你有),请添加以下行:

if (ob_get_level() == 0) ob_start();

这将打开输出缓冲区。阅读/倾斜更多ob_start

然后,在$sql = ...位之前,添加以下内容:

ob_flush();
flush();

ob_flush的作用是:

  

刷新(发送)输出缓冲区

flush方法的作用是:

  

刷新系统输出缓冲区

如果不起作用,请在ob_flush()之前添加以下内容:

echo str_pad("", 4096);

(通过添加上面的echo,您会欺骗它认为 有足够的数据来执行刷新)

ob_flush的PHP手册页上dermeister的每条评论需要注意的另一件事 -

  

ob_flush()和flush()的一些问题可以通过定义内容类型标题来解决:

header( 'Content-type: text/html; charset=utf-8' );