1

私のページのさまざまな場所で、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 に可能なすべての値を指定する必要があり、コードが非常に長くなります。

ここに進むにはもっと良い方法があるに違いありませんが、まだ見つけられていません。誰でもアイデアはありますか?

4

1 に答える 1

2
$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]; }
foreach($roles as $role => $values) {
  echo "Role ".$role.": " implode(" ; ", $values);
}

それがあなたの言っていることかどうかわかりませんか?

于 2011-01-27T16:44:43.923 に答える