0

テーブルを印刷すると、次のような結果が得られるクエリがあります。

+---------------------------------------------------------------------+
|    ID      |    Name     |    Color      |     Size     |    Qty    |
+---------------------------------------------------------------------+
|    1       |    First    |    Green      |      S       |     1     |
|    2       |    First    |    Green      |      L       |     2     |
|    3       |    First    |    Green      |      XL      |     1     |
|    4       |    First    |    Red        |      M       |     2     |
|    5       |    First    |    Red        |      L       |     3     |
|    6       |    Second   |    Blue       |      S       |     1     |
|    7       |    Second   |    Blue       |      M       |     4     |
+---------------------------------------------------------------------+

ここで、誰かがボタンをクリックして編集または削除できる概要 (実際にはこれらは製品です) を作成したいと思います。foreachループなどでループして、次のように出力したい:

+========================================================================+
|    Name     |    Color      |     Size     |    Qty    |    Action     |
+========================================================================+
|    First    |    Green      |      S       |     1     |  Edit|Delete  |
|             |               |      L       |     2     |  Edit|Delete  |
|             |               |      XL      |     1     |  Edit|Delete  |
+------------------------------------------------------------------------+
|    First    |    Red        |      M       |     2     |  Edit|Delete  |
|             |               |      L       |     3     |  Edit|Delete  |
+------------------------------------------------------------------------+
|    Second   |    Blue       |      S       |     1     |  Edit|Delete  |
|             |               |      M       |     4     |  Edit|Delete  |
+------------------------------------------------------------------------+

しかし、どういうわけか、このループをどのようにプログラムするかについて頭を悩ませることができません。または、クエリを変更する必要がありますか? 誰かが助けてくれることを願っています。さらに情報が必要な場合は、教えてください。

4

2 に答える 2

0

これの一部をデータベースで実行すると、コードでのデータの表示が簡単になります。

select 
    group_concat(ID) as id, 
    name, 
    color, 
    group_concat(size) as size, 
    group_concat(qty) as qty 
from 
    myTable
group by
    name,
    color

結果は次のようになります。

ID     | name  | color | size   | qty
1,2,3  | First | Green | S,L,XL | 1,2,1
etc...

これで、コード内で、希望どおりの出力がはるかに簡単になります。

echo "<table>";
while($row=someFetchFromDatabase($results))
{
    echo "<tr><td>".$row['name']."</td><td>".$row['color']."</td>";
    $temp=explode($row['size']);
    echo "<td>";
    foreach($temp as $val)
    {
        echo $val."<br>";
    }
    echo "</td>";
    $temp=explode($row['qty']);
    echo "<td>";
    foreach($temp as $val)
    {
        echo $val."<br>";
    }
    echo "</td>";
    $temp=explode($row['IDs']);
    echo "<td>";
    foreach($temp as $val)
    {
        echo "<a href='someLink.php?action=edit&ID=".$val."'>Edit</a> | <a href='someLink.php?action=delete&ID=".$val."'>Delete</a>";
    }
    echo "</td></tr>";
}
echo "</table>'
于 2012-09-26T10:25:51.917 に答える
0

私はクエリに対して何もしません。

疑似コードで(私はPHPを話せません)...

variables $name = "", $colour = "";
for (every row)    
    if (row.name = $name) and (row.colour = $colour)
        display nothing for name and colour
    else
        display row.name
        display row.colour
        $name = row.name
        $colour = row.colour
于 2012-09-26T10:30:16.627 に答える