【问题标题】:PHP Groupings and LOOPSPHP 分组和循环
【发布时间】:2016-12-08 14:53:58
【问题描述】:

我将如何按技能分组并为每个技能回显所有照片。

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>

【问题讨论】:

    标签: php mysql pdo


    【解决方案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 ?.**
    

    【讨论】:

    • 这如何让他得到最终结果?
    • 您将获得所需的结果。 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 中运行这个查询,你会得到。
    【解决方案2】:

    首先,按技能排序,以便您按顺序获得它们:

    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
    

    在 while 循环之外分配一个变量(在本例中为 $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'] . '">';
    }
    

    【讨论】:

    • 我花了一分钟才意识到 fetchrow 是 ->fetch(PDO::FETCH_ASSOC) 但我明白了。 :) 非常感谢
    • @Bruce 你从未发布过你的数据库连接/获取代码,所以我不得不在pseudocode 那里做一些猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多