数据库名:book
数据库表单:books.sql
使用以下语句shouli表内同1条数据会被多次渲染赋值给html
$datalists = M(‘detail’)->join(‘shouli’)->select();
t
h
i
s
−
>
a
s
s
i
g
n
(
′
d
e
t
a
i
l
′
,
this->assign('detail',
this−>assign(′detail′,datalists);
$this->display();
使用以下语句html无数据输出
$datalists = M(‘detail’)->join(‘shouli’)->where(‘shouli.ids != shouli.ids’)->select();
t
h
i
s
−
>
a
s
s
i
g
n
(
′
d
e
t
a
i
l
′
,
this->assign('detail',
this−>assign(′detail′,datalists);
$this->display();
使用以下语句,tr内第二个td或第二张数据表会被挤到最底部
$datalistsDeta = M(‘detail’)->select();
$datalistsShou = M(‘shouli’)->select();
//将两个表的数据合并为一个数组
d
a
t
a
l
i
s
t
s
=
a
r
r
a
y
m
e
r
g
e
(
datalists = array_merge(
datalists=arraymerge(datalistsDeta, $datalistsShou);
t
h
i
s
−
>
a
s
s
i
g
n
(
′
d
e
t
a
i
l
′
,
this->assign('detail',
this−>assign(′detail′,datalists);
$this->display();
功能需求是将detail表和shou表各自的数据左右排列
并向下遍历循环数据,如果detail表和shou表数据条数
不相等,数据少td由上至下遍历完数据没有数据的td留空白即可
数据库sql
– phpMyAdmin SQL Dump
– version 5.2.1
– https://www.phpmyadmin.net/
– 主机: localhost
– 生成日期: 2024-01-25 16:47:41
– 服务器版本: 5.7.34
– PHP 版本: 8.0.28
SET SQL_MODE = “NO_AUTO_VALUE_ON_ZERO”;
START TRANSACTION;
SET time_zone = “+00:00”;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /;
/!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS /;
/!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION /;
/!40101 SET NAMES utf8mb4 */;
–
– 数据库: books
–
– 表的结构 nav_detail
CREATE TABLE nav_detail
(
id
int(10) UNSIGNED NOT NULL COMMENT ‘日历ID’,
calendar
text NOT NULL COMMENT ‘日历’
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘时间表’;
–
– 转存表中的数据 nav_detail
INSERT INTO nav_detail
(id
, calendar
) VALUES
(1, ‘2024-05-05’),
(2, ‘2024-06-06’),
(3, ‘2024-07-07’),
(4, ‘2024-08-08’);
–
– 表的结构 shouli
CREATE TABLE shouli
(
ids
int(10) UNSIGNED NOT NULL COMMENT ‘中国农历ID’,
calendars
text NOT NULL COMMENT ‘中国日历’
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘时间表’;
–
– 转存表中的数据 shouli
INSERT INTO shouli
(ids
, calendars
) VALUES
(1, ‘2024-04-08’);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT /;
/!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS /;
/!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
php控制器代码
public function index(){
d
a
t
a
l
i
s
t
s
=
M
(
′
d
e
t
a
i
l
′
)
−
>
j
o
i
n
(
′
s
h
o
u
l
i
′
)
−
>
w
h
e
r
e
(
′
s
h
o
u
l
i
.
i
d
s
=
s
h
o
u
l
i
.
i
d
s
′
)
−
>
s
e
l
e
c
t
(
)
;
/
/
同
时
查
询
d
e
t
a
和
s
h
o
u
表
/
/
datalists = M('detail')->join('shouli')->where('shouli.ids = shouli.ids')->select(); // 同时查询 deta 和 shou 表 //
datalists=M(′detail′)−>join(′shouli′)−>where(′shouli.ids=shouli.ids′)−>select();//同时查询deta和shou表//datalistsDeta = M(‘detail’)->select(); //
d
a
t
a
l
i
s
t
s
S
h
o
u
=
M
(
′
s
h
o
u
l
i
′
)
−
>
s
e
l
e
c
t
(
)
;
/
/
将
两
个
表
的
数
据
合
并
为
一
个
数
组
/
/
datalistsShou = M('shouli')->select(); // 将两个表的数据合并为一个数组 //
datalistsShou=M(′shouli′)−>select();//将两个表的数据合并为一个数组//datalists = array_merge($datalistsDeta, $datalistsShou);
// 赋值给模板变量并渲染模板
t
h
i
s
−
>
a
s
s
i
g
n
(
′
d
e
t
a
i
l
′
,
this->assign('detail',
this−>assign(′detail′,datalists); $this->display();
}
功能需求效果
html代码是
<table border="1">
<tr>
<th colspan="2">
<h3>日期表</h3>
</th>
</tr>
<tr>
<th>日历</th>
<th>农历</th>
</tr>
<foreach name="detail" item="vo">
<tr>
<td>
{$vo.calendar}
</td>
<td>
{$vo.calendars}
</td>
</tr>
</foreach>
<tr>
<td colspan="2">
现在时间是
</td>
</tr>
</table>
不要这样的效果