我想从数据库中获取数据并在codeigniter视图中显示结果并延迟。
我的代码如下所示:
df <- read.table(text = "Planner.Group.No Order.Status
1 P0B Finished
2 P0C Finished
3 P0C Finished
4 P0A Finished
5 P0C Finished
6 P0B Finished
7 P0C Finished", header = TRUE)
df
library(tidyverse) # for ggplot2 and forcats
# using factors
ggplot(df, aes(x = factor(Planner.Group.No,
levels = names(sort(table(Planner.Group.No), decreasing = T))))) +
geom_bar()
# using factors with forcats:
ggplot(df, aes(x = fct_reorder(f = Planner.Group.No,
x = Planner.Group.No,
fun = length,
.desc = TRUE))) +
geom_bar()
但这只会加载一次页面并显示所有数据。我需要的是使用 function loadPage($data) {
for($i = 0; $i < count($data); $i++) {
$this->load->view('mypage', $data[$i]);
sleep(5);
}
}
加载页面,延迟5秒,使用$data[0]
加载页面,依此类推。
请指教。谢谢。
编辑:
我想用php做这件事。不是javascript或jquery。
答案 0 :(得分:1)
服务器中的PHP进程并将处理后的html返回给浏览器。这是它的工作原理。但正如您在评论中所解释的那样,我认为您想要做的是在for循环运行时向浏览器显示内容。
要做到这一点,你需要使用输出缓冲(AFAIK,CI已经在核心中调用ob_ *方法),这样可能会导致问题(或者可能无法正常工作。)但是,不要多次加载视图,我建议你将数据传递给视图并在那里循环(并在睡眠状态下逐个显示结果。)
你可以这样做。
在您的控制器中:
HTTP Debug Sessions
在您的视图(mypage.php)中:
public function index(){
$data = [1,2,3,4,5];
$this->load->view('mypage', ['data' => $data]);
}
希望有所帮助:)
答案 1 :(得分:0)
将$data
数组发送到视图文件,因为我们无法从视图文件返回控制器以始终执行下一行代码。
因此代码需要放在视图文件中。
让$data
成为数组。
<?php
foreach($data as $row) {
?>
//use `$row` where you want to use in the HTML section of the view file
<?php
sleep(5);
}
?>
注意:阅读代码后的一个基本问题 您正在从控制器功能调用视图文件是绝对正确的。 但是一旦调用并且你在视图文件中,你是否正在调用控制器函数来执行for循环的下一部分?
Codeigniter是一个MVC(模型 - 视图 - 控制器)框架。从视图中调用函数真的不是一个好主意。