就像以前一样,如果您需要在站点上显示某些内容的列表,则必须使用一些循环结构来遍历数据。
在我的例子中是foreach()在表
的<tr>
上foreach($candidates as $candidate)
之后是values:
$candidate->id
问题是一个特定的值,它是强制的。在我的数据库中,我有如下表所示的数据,例如,对于candidates_id
= 600,有执行1和0
id | candidates_id | enforcement
-------------------------------------
1 | 598 | 2
2 | 599 | 4
3 | 600 | 1
4 | 600 | 0
直到现在一切都很好,我从DB得到值,并在现场回显它。问题是像0或1这样的值对最终用户没有意义。所以我写IF/ELSE condition
if($candidate->enfor == 0)
echo "TEXT1";
elseif($candidate->enfor == 1)
echo "TEXT2";
else
echo "some default text";
在示例数据中,有两条记录,candidates_id=600和不同的执行值。
现在脚本产生两个独立的<tr>
元素。一个含有<td>TEXT1</td>
,另一个含有<td>TEXT2</td>
。
我正在寻找一种方法来输出<td>TEXT1,TEXT2</td>
在相同的html表行和列的基础上,有这两个记录为candidate_id=600在数据库中。
我试着制作另一个循环,但没有成功。我甚至不确定我的想法是否正确。
编辑:my Query to DB is:
SELECT c.id, c.firstname, c.surname, c.email, c.process, c.search_work, c.note,c.registration_date,
MAX(CASE WHEN cl.language = 'angličtina' THEN cl.level ELSE '-' END)AS 'en',
MAX(CASE WHEN cl.language = 'němčina' THEN cl.level ELSE '-' END)AS 'ge',
group_concat(DISTINCT ce.enforcement) as enfor,
group_concat(DISTINCT cc.city) as city
FROM candidates AS c
LEFT JOIN candidates_languages AS cl ON c.id = cl.candidates_id
LEFT JOIN candidates_enforcement as ce on c.id = ce.candidates_id
LEFT JOIN candidates_city as cc on c.id = cc.candidates_id
GROUP BY c.id, c.firstname, c.surname, c.email DESC
情况是查询中的group_concat
将为id=600
返回0,1
。你应该这样做:
foreach($candidates as $candidate){
// do your things ...
$enfor_array = explode(',', $candidate->enfor);
foreach($enfor_array as $enf) {
if($enf == 0)
echo "TEXT1";
elseif($enf == 1)
echo "TEXT2";
else
echo "some default text";
}
}