私のページのさまざまな場所で、while ループ内で mysql_fetch_array() を使用して値を新しい PHP 配列にコピーしました。そこから、implode() を使用して値を文字列に書き込み、ユーザーに表示しました。これは、1 つの列、または 1 行に結合して表示できる 2 つの列しか扱っていない場合にうまく機能しました。
今、役割と名前の 2 つのデータを持つ配列を扱っています。ロールの値に応じて、出力文字列を異なる行に表示したいと考えています。これはライブラリ データベースなので、著者の役割に関連するすべての名前を 1 行に、発行者の役割に関連する名前を別の行に、というように表示します。
$sql = mysql_query("select role, party_name from vw_roles where publication_id =
$id order by role", $link);
while($role = mysql_fetch_array($sql)) {
$roles[] = $role[role] . ": ". $role[party_name]; }
$the_roles = implode(" ; ", $roles);
出力: 著者: Origen ; 書店: Gulielmus Morden ; 書かれたテキストのコメンテーター: タリン、ジャン; テキストのコメンテーター: Hoeschel, David ; 編集者: ウィリアム・スペンサー; プリンター: ジョアン。ヘイズ
しかし、その後、文字列をさまざまな部分文字列に分割して、見出し Author の下の出力テーブルに Origen のみが出力されるようにする必要があります。配列 $roles[] を調べて、名前をその役割の新しい配列に分けたほうがよいでしょうか? そう
if ($roles[role] == "Author")
$author[] = $roles[party_name];
ロールごとになんらかの形で繰り返しますか? しかし、この特定のレコードに role が含まれている場合に備えて、role に可能なすべての値を指定する必要があり、コードが非常に長くなります。
ここに進むにはもっと良い方法があるに違いありませんが、まだ見つけられていません。誰でもアイデアはありますか?