人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPとMySQLでアンケートを作成しています。

質問のテーブルは
[質問ID][質問内容]
1 好きな色は?
2 好きな犬は?

回答のテーブルは
[質問ID][回答内容]
1 赤
1 青
2 チワワ
2 コーギー

という状態だとします。これをtableタグで画像のような表にしたいと思っています。

自分で試したのは、質問タイトルと回答と分けてwhileで出力する方法と、最初は1列で出力してCSSのfloatで回り込ませる方法です。

しかし、もっとスマートに出来ないものかと思い、アイディアをいただければと思います。

1196397720
●拡大する


●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:CSS MySQL PHP いもの アイディア
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 牛乳先生(tukihatu)
●47ポイント

スマートかどうかは謎ですが、この場合一番楽な方法は、大きいテーブルをつくり、その中にもうひとつテーブルを作るのがいいかと

table

tr

td ----------------

table

tr

td 質問内容(一つ目)

/tr

tr

td 質問の答え

/tr

tr

td 質問の答え

/tr

/table

/td ----------------

td ----------------

table

tr

td 質問内容(二つ目)

/tr

tr

td 質問の答え

/tr

tr

td 質問の答え

/tr

/table

/td ----------------

/tr

という風な書き方にすれば、質問ごとにtdが増えるので、横にきれいに並びます。

echo <table><tr>//外枠
$i=0
while($quest = mysql_fetch_array($quest_res)){
echo <td>
echo <table><tr>//内枠
echo <td> 質問 </td>
echo </tr>

while($answer = mysql_fetch_array($answer_res[$i])){
echo <tr>
echo <td> 答え </td>
echo </tr>
}
echo </tr></table>
echo </td>
$i++
}

echo </tr></table>

↑イメージ的に作ってみました。DBは質問と答えがセットなテーブルだとやりやすいです。もちろんdivなどでも同じように対応できるはずです。

先に出力する文字をDBから取り出して格納しておくとソース見栄えもよくなります。

◎質問者からの返答

うーん、、私がコメントにて記載した方法と変わらないのではないでしょうか。しかも、そっちの方がテーブルの入れ子にしないので、スマート(簡略)だと思いますし。


2 ● KeyKey
●23ポイント
$ary = array(
 1 => array(
 'quest' => '好きな色は?',
 'answer' => array('赤', '青',),
 ),
 2 => array(
 ...
);

と配列に格納して。

foreach ($ary as $val) {
 $table['quest'] .= "<th>". $val['quest'] ."</th>\n";
 foreach ($val['answer'] as $key2 => $val2) {
 $table[$key2] .= "<td>". $val2 ."</td>\n";
 }
}

とするのはどうだろう?

$table['quest']に質問が入って、$table[0]...に一列に表示する回答が入っていく

◎質問者からの返答

確かにソースはシンプルで短いですが、余計複雑になりそうな気もします。それに、whileをforeachに変えただけのような気も。。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ