怎么解决重复赋值

文章讲述了在PHP控制器中,如何通过SQL查询和数据处理,从detail和shouli两个数据库表中获取数据,合并后以表格形式渲染到HTML中,确保在数据量不一致时保持正确布局。
摘要由CSDN通过智能技术生成

数据库名: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();//detashou//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>  

不要这样的效果
不需要这样的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值