-1

誰かが助けてくれることを願っています。以下のクエリを実行し、次のように行を HTML テーブルに出力します。

ARTIST 1, (Featuring) ARTIST 2, (and) ARTIST 3 
Song Title                                            YEAR       YT LINK

group_concat で私が抱えている問題は、ARTIST 1、ARTIST 2、ARTIST 3 の index.php リンク (以下) が、artist.php?id=1,2,3 を表示するようになったことです。次のようなリンクを使用して、各アーティストの個別の artist.php に各 ID をリンクするには、ID を分離する必要があります。

<a href="artist.php?id='.$row[3].'">'.$row[4].'</a>

テーブルのレイアウトを維持しながら、ID とアーティスト名を分割するにはどうすればよいですか? このクエリ内で Implode を使用する必要がありますか?

SELECT r.release_name, r.release_year, r.release_yt,
group_concat( a.artist_id ) AS artist_ids,
group_concat( a.artist_name ) AS artist_names
FROM tbl_release_artists ra
JOIN tbl_releases r ON r.release_id = ra.release_id
JOIN tbl_artists a ON a.artist_id = ra.artist_id
GROUP BY r.release_year, r.release_name, r.release_yt
ORDER BY artist_names, r.release_year, r.release_name ASC

どんな助けでも大歓迎です。前もって感謝します。

4

3 に答える 3

1

使用する

explode(',', $_GET['id']) 

これはIDの配列を返します

編集:あなたの質問を理解したので-

$artist_ids = explode(',', $row[3]);
$artist_names = explode(',', $row[4]);

foreach($artist_ids as $index => $id)
    echo '<a href="artist.php?id='. $id .'">'. $artist_names[$index] .'</a>';

クエリから名前で列を参照できるように、実際には assoc fetch モードを使用する必要があります。これにより、コードがはるかに明確になります。

于 2013-09-11T04:26:35.370 に答える
0

SQL QUERY では、PHP で個別の ID として使用したい場合に、ID を連結しています。最初に、「group_concat(a.artist_id) as artist_ids」を省略し、a.artist_id を artist_id として使用して、artis_id を連結せずに試してください。2 番目の部分 (artist_id として) は、$row[4] のようにアクセスしている場合はあまり問題になりません。

ただし、SQL QUERYで連結する必要がある場合は、他の回答で述べたように爆発を使用できます。ただし、どの ID をどのリンクにマップするかを管理するロジックを追加する必要があります。

それが役立つことを願っています!

于 2013-09-11T04:32:56.570 に答える
0

get url artist.php?id=1,2,3 は文字列です。これを配列にしたいのです。EXPLODE() を使用します

<a href="artist.php?id='.$row[3].'">'.$row[4].'</a>

$whatiwant = $_GET['id'];
$whatiwant = explode($whatiwant, ',')
于 2013-09-11T04:26:05.603 に答える