0

以下のようなデータベーステーブルがあります。

id | igroup | title     | url          | text
1  |   gr1  | Title 1   | urltoimage1  | text1
2  |   gr1  | Title 2   | urltoimage2  | text2
3  |   gr2  | Title 3   | urltoimage3  | text3
4  |   gr2  | Title 4   | urltoimage4  | text4

つまり、以下のような多次元配列(上記の構造用)が必要です。

$result[gr1] = [Title 1|urltoimage1][Title 2|urltoimage2]
$result[gr2] = [Title 3|urltoimage3][Title 4|urltoimage4]

最後に、この$result配列を JSON 経由でページに送信します。

So, in my page I'll arrange these values for classified image gallery, like:

Group 1(caption text)
--------
image1 image2 (clickable images)

Group 2(caption text)
--------
image3 image4 (clickable images)

編集:igroupによるグループフィールドを修正しました。

質問が修正されました。

4

1 に答える 1

2

ORDER BYクエリに追加されたステートメントを使用して結果をフェッチする必要があります。

SELECT id, igroup, title, url, text
FROM images
ORDER BY igroup;

警告:

mysql_*関数を使用して新しいコードを記述しないでください。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが見えますか?

代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。この記事では、使用する API を決定する方法について詳しく説明します。PDO については、ここに良いチュートリアルがあります。

コード例:

$result = mysql_query(THE_STATEMENT_ABOVE);

$groups = array();
while ( $row = mysql_fetch_assoc($result) )
    $groups[ $row['igroup'] ][] = $row;

$groupsこれにより、素敵な配列が構築されます。上で作成した配列を解析するには、イテレータまたは単純なforeach構造を使用できます。

foreach ( $groups as &$one_group ) {
    print("Group 1: <br>");

    foreach ( $one_group as &$one_image ) {
        // Here you have the contets of the previously fetched $row rows of the result.
        print('<a href="' .$one_image['url']. '">' .$one_image['title']. '</a><br>');
    }
}

これにより、以下のような素敵な出力が得られます。

Group 1:
Image 1 (clickable)
Image 2 (clickable)

Group 2:
Image 3 (clickable)
Image 4 (clickable)

適用されなくなりました:また、 MySQLGROUPの予約語の 1 つであるため、フィールド名として使用しないでください。

編集:フィールド名も修正しましたigroup

于 2012-08-06T20:36:04.293 に答える