thinkkphp 用foreach遍历如何where

lidaoying 2016-07-22 04:00:28
thinkkphp 用foreach遍历如何where


下面是前台如何显示这种效果,就是推荐人等级显示对应的推荐人等级


控制器代码:

public function userlist()
{
$game = M('characters');

$count=$game->count();
$page=new \Think\Page($count,10);
$show = $page->show();//分页显示输出
$list = $game->order('guid')->limit($page->firstRow.','.$page->listRows)->select();

$this->assign('list',$list); // 赋值数据集
$this->assign('page',$show);
$this->display('Index/userlist');

}


前台代码:

<table class="tablelist">
<thead>
<tr>
<th>编号<i class="sort"><img src="/sncss/images/px.gif" /></i></th>
<th>用户</th>
<th>等级</th>
<th>推荐人</th>
<th>推荐人等级</th>
</tr>
</thead>
<tbody>

<foreach name='list' item='v'>
<tr>
<td><{$v.guid}></td>
<td><{$v.name}></td>
<td><{$v.level}></td>
<td><{$v.tuijianren}></td>
<td ><{$v.tuijianrenlevel}></td>
</tr>
</foreach>
</tbody>
</table>
...全文
238 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
justS0 2016-07-25
  • 打赏
  • 举报
回复
引用 3 楼 lidaoying 的回复:
[quote=引用 2 楼 justS0 的回复:] $list = $game->alias('a')->field('a.guid,a.name,a.level,a.tuijianren,b.level as tuijianrenlevel')->order('guid')->join(" left join characters b on b.tuijianren=a.name")->limit($page->firstRow.','.$page->listRows)->select();
我的不是两个表,而是在同一个表的[/quote] 你可以把这一张表 当做两张一样的表啊 根据链接条件链接这两张表被
u014567183 2016-07-24
  • 打赏
  • 举报
回复
可以呀,if标签,看tp手册。不过还是建议逻辑上的能在后台写,干嘛要写到前台去。
lidaoying 2016-07-23
  • 打赏
  • 举报
回复
引用 12 楼 u014567183 的回复:

header("Content-type:text/html;charset=utf8");      
$a =array(array('id'=>'1','level'=>'1','name'=>'zhangsan','tuijianren'=>'2'),
	array('id'=>'2','level'=>'2','name'=>'lisi','tuijianren'=>'3')
	);
foreach($a as $v){
	echo $v['id'];
	foreach($a as $vv){
		if($v['tuijianren'] ==$vv['id']){
			echo '的推荐人等级是'.$vv['level'];
		}
	}
	echo '<br>';
}
前台是不是没有办法套循环在判断,只能在后台
u014567183 2016-07-23
  • 打赏
  • 举报
回复

header("Content-type:text/html;charset=utf8");      
$a =array(array('id'=>'1','level'=>'1','name'=>'zhangsan','tuijianren'=>'2'),
	array('id'=>'2','level'=>'2','name'=>'lisi','tuijianren'=>'3')
	);
foreach($a as $v){
	echo $v['id'];
	foreach($a as $vv){
		if($v['tuijianren'] ==$vv['id']){
			echo '的推荐人等级是'.$vv['level'];
		}
	}
	echo '<br>';
}
u014567183 2016-07-23
  • 打赏
  • 举报
回复
加颜色没加上。。。

select a.guid,a.name,a.level,a.tuijianren,b.level from a LEFT JOIN (select name,level from a)as b on a.tuijianren = b.name;
u014567183 2016-07-23
  • 打赏
  • 举报
回复

select a.guid,a.name,a.level,a.tuijianren,b.level from a LEFT JOIN (select name,level from a)as b on a.tuijianren = b.name;
lidaoying 2016-07-23
  • 打赏
  • 举报
回复
引用 10 楼 u014567183 的回复:
循环里套循环然后做判断。
循环里套循环然后做判断 这个没有玩过,能给个列子我参考看看吗,谢谢你
u014567183 2016-07-23
  • 打赏
  • 举报
回复
循环里套循环然后做判断。
lidaoying 2016-07-23
  • 打赏
  • 举报
回复
引用 8 楼 u014567183 的回复:
看来你也没理解我们的意思。你不想改代码就直接写推荐人等级?
我看了你的代码 select a.guid,a.name,a.level,a.tuijianren,b.level from a LEFT JOIN (select name,level from a)as b on a.tuijianren = b.name; a.guid,a.name,a.level,a.tuijianren,b.level 这里是A表,和B表 ,然后你这里是关联了A表的tuijianren和b表的name人后在进行查询 这个代码我看得懂意思, 我是想问我哪种方法有没有办法实现呢,就是推荐人对应等级,不重新建数据,直接在进行个筛选, 筛选tuijianren和name对应的等级
lidaoying 2016-07-23
  • 打赏
  • 举报
回复
引用 1 楼 zhangbin1988 的回复:

//没用过thinkphp,但是可用用SQL

select a.guid,a.name,a.level,a.tuijianren,b.level as tuijianrenlevel from 表名 a,表名 b where a.tuijianren = b.name;
理解错了,可能是我表达的不清楚。不是多表查询,哪两个图片 一个图片是数据库,一个是前台显示的,我只是简单做了下
u014567183 2016-07-23
  • 打赏
  • 举报
回复
看来你也没理解我们的意思。你不想改代码就直接写推荐人等级?
lidaoying 2016-07-23
  • 打赏
  • 举报
回复
引用 6 楼 u014567183 的回复:
加颜色没加上。。。

select a.guid,a.name,a.level,a.tuijianren,b.level from a LEFT JOIN (select name,level from a)as b on a.tuijianren = b.name;
你们都理解错误了,没有看到我那个字体的描述;

这个是我数据库内容;


这是我想要达到的效果

这是我现在的代码
lidaoying 2016-07-22
  • 打赏
  • 举报
回复
引用 2 楼 justS0 的回复:
$list = $game->alias('a')->field('a.guid,a.name,a.level,a.tuijianren,b.level as tuijianrenlevel')->order('guid')->join(" left join characters b on b.tuijianren=a.name")->limit($page->firstRow.','.$page->listRows)->select();
我的不是两个表,而是在同一个表的
justS0 2016-07-22
  • 打赏
  • 举报
回复
$list = $game->alias('a')->field('a.guid,a.name,a.level,a.tuijianren,b.level as tuijianrenlevel')->order('guid')->join(" left join characters b on b.tuijianren=a.name")->limit($page->firstRow.','.$page->listRows)->select();
ayzen1988 2016-07-22
  • 打赏
  • 举报
回复

//没用过thinkphp,但是可用用SQL

select a.guid,a.name,a.level,a.tuijianren,b.level as tuijianrenlevel from 表名 a,表名 b where a.tuijianren = b.name;

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧