2016-08-03 53 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 

我強調這是一個例子。我實際上並不知道學生創建的「技能」的名稱。我不知道會列出多少技能。我不知道用戶會向什麼教師添加什麼技能。

我嘗試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> 

回答

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)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'] . '">'; 
} 
+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 ='teach1'Group by skills.skill在我的sql中運行此查詢會得到。 – piyushiiitm