PHP分组和LOOPS
我如何按照技能对此进行分组,然后按照每种技能回显所有照片。PHP分组和LOOPS
SELECT skills.teacher, skills.student, skills.skill, profile.photo
FROM skills
INNER JOIN profile ON skills.student = profile.username
WHERE teacher = 'teach1'
teacher | student | skill | photo
------- | -------- | ------ | ------------
teach1 | student1 | skill1 | student1.jpg
teach1 | student2 | skill1 | student2.jpg
teach1 | student3 | skill2 | student3.jpg
teach1 | student3 | skill1 | student3.jpg
teach1 | student4 | skill3 | student4.jpg
teach1 | student1 | skill2 | student1.jpg
我强调这是一个例子。我实际上并不知道学生创建的“技能”的名称。我不知道会列出多少技能。我不知道用户会向什么教师添加什么技能。
我尝试while循环和foreach循环。我只是无法弄清楚如何分组这个和使用什么类型的循环...
我需要我的最终结果,让我回声。
<div>skill1
<img src="student1.jpg">
<img src="student2.jpg">
<img src="student3.jpg">
...
...
...
</div>
<div>skill2
<img src="student1.jpg">
<img src="student3.jpg">
...
...
...
</div>
<div>skill3
<img src="student4.jpg">
...
...
...
</div>
首先,为了通过技能,这样你才能让他们:
SELECT skills.teacher, skills.student, skills.skill, profile.photo
FROM skills
INNER JOIN profile ON skills.student = profile.username
WHERE teacher = 'teach1'
ORDER BY skills.skill
分配一个变量(在这种情况下$lastSkill
)while循环之外。检查它是否已更改,并相应地输出内容。看看下面的例子。你的PHP代码看起来类似这样:
$lastSkill = null;
while ($row = fetchrow())
{
if ($row['skill'] !== $lastSkill)
{
//Don't close a div, if it's the first row
if ($lastSkill !== null)
echo '</div>';
//We've moved onto a new row, echo it out
echo '<div>' . $row['skill'];
//Store the lastSkill
$lastSkill = $row['skill'];
}
echo '<img src="' . $row['photo'] . '">';
}
SELECT skills.teacher, skills.student, skills.skill, profile.photo
FROM skills
INNER JOIN profile ON skills.student = profile.username
WHERE teacher = 'teach1' Group by skills.skill order by skills.?
**ORDER BY WHATEVER YOU WANT PUT IN PLACE OF ?.**
这是如何让他达到他的最终结果? – FrankerZ
你会得到所需的结果。 SELECT skills.teacher,skills.student,skills.skill,profile.photo FROM skills INNER JOIN profile on skills.student = profile.username WHERE teacher ='teach1'Group by skills.skill在我的sql中运行此查询会得到。 – piyushiiitm
花了一分钟,以实现fetchrow是 - >取(PDO :: FETCH_ASSOC),但我得到了它。 :)非常感谢你 – Bruce
@Bruce你从未发布过你的数据库连接/获取代码,所以我不得不在那里猜测一些[伪代码](https://en.wikipedia.org/wiki/Pseudocode)。 – FrankerZ