2016-08-03 4 views
0

Как я могу сгруппировать это по навыкам и отследить все фотографии для каждого навыка.Группы 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 

Я подчеркиваю, что это пример. Я действительно не знаю имен «умения», так как они созданы учениками. Я не знаю, сколько навыков будет указано во всем. Я не знаю, какие пользователи будут добавлять какие навыки к учителям.

Я попытался использовать петли и петли 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> 

ответ

1

Во-первых, порядок мастерством, так что вы получите их в следующем порядке:

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) за пределами вашего цикла. Проверьте, изменилось ли оно и соответствующим образом выводит данные. Взгляните на приведенный ниже пример. Ваш 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'] . '">'; 
} 
+0

взял меня минута, чтобы понять, FetchRow есть -> выборки (PDO :: FETCH_ASSOC), но я получил его. :) Большое вам спасибо – Bruce

+0

@Bruce Вы никогда не отправляли свой код подключения к базе данных/извлечения, поэтому мне пришлось немного [псевдокод] (https://en.wikipedia.org/wiki/Pseudocode) угадать. – FrankerZ

-1
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 ?.** 
+0

Как это доводит его до конечного результата? – FrankerZ

+0

вы получите требуемый результат. SELECT skills.teacher, skills.student, skills.skill, profile.photo FROM skills INNER JOIN profile ON skills.student = profile.username WHERE teacher = 'training1' Группа by skills.skill запускает этот запрос в моем sql you получите. – piyushiiitm