0

簡単な投票アプリケーションがあり、各ユーザーは投票から1つのオプションしか選択できないとしましょう

私の投票表

+-----------+---------------------+ 
| poll_id   | question            | 
+-----------+---------------------+
|         1 | q1?                 |     
+-----------+---------------------+
|         2 | q2?                 |     
+-----------+---------------------+
|         3 | q3?                 |     
+-----------+---------------------+

私のオプション表

+-----------+---------------------+---------+---------+ 
| option_id | poll_id             | option  | counter |
+-----------+---------------------+---------+---------+
|         1 | 1                   |   yes   |  254    | 
+-----------+---------------------+---------+---------+
|         2 | 1                   |   no    |392333337| 
+-----------+---------------------+---------+---------+
|         3 | 2                   |   yes   | 1000    | 
+-----------+---------------------+---------+---------+

今、私はこのようなことをして、すべての投票を 1 ページに表示します

$polls = $db->query("select * from polls ");
foreach ($polls as $poll)
{ 

  echo $poll->question;

  $options = $db->query("select * from options where poll_id = '$poll->id' ");
  foreach($options as $op )
  {
    echo '<checkbox />'.$op->option; 
  }


}

joine と 1 つのクエリを使用してこれを行う場合

$query = "select p.* , o.* from polls p JOIN options  o ON p.poll_id = o.poll_id ";

結果を表すために使用されるデータ構造は何ですか? おそらく多次元配列ですか?結果を印刷する方法がわからない

この例のように、結果は次のようになります

resul_array (
      poll_id  poll_question  option   option 
        1         q1            ys       no
        2         q2            no  
}

結果を配列行として取得した場合、同様の名前の列がありますか? よくわかりません

4

1 に答える 1

0

私の意見では、クエリに「order by」を追加し、結果を配列に格納してから、そのロジックを処理するだけで済みます。

何かのようなもの:

$polls = $db->query("select p.* , o.* from polls p JOIN options  o ON p.poll_id = o.poll_id order by p.poll_id");
$currentPoll = $polls[0];
foreach ($polls as $poll)
{ 
  if($poll->poll_id != $currentPoll->poll_id) {
     echo $poll->question;
     $currentPoll = $poll;
  }

  echo '<checkbox />'.$poll->option; 

}

HTH。

于 2012-06-28T04:33:42.567 に答える