みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

forの中でforをループしてそれぞれ配列に格納したい

お世話になります。
5レコードずつのデータをテーブルに吐き、テーブル自体を4個
横に並べて表示したいです。
ひとつめのforを使って最初の5行を取得しテーブルに収めることは
できたのですが、6-10行目のレコードは、また同じようなforを
書いて、隣のテーブルに書かないといけないでしょうか。
配列の引数に配列もしくは変数を用いて書けば、何度も同じような
コードを書かなくて済むと思ったのですが、記述しても膨大な
計算をしているらしく、タイムアウト?か、真っ白な画面を出して
きます。

No 氏名 No 氏名 No 氏名
1 山田  6 川田  11 谷田
2 山下  7 川上  12 谷川
3 山本  8 川本  13 谷本
5行まで

要するに、1つのテーブルがいっぱいになったら(ここでは5行)
となりのテーブルに行ってほしいのです。1-5を第1テーブル、
6-10を第2テーブル・・・とすると、第1と第2のコードはループ
2回で取れないでしょうか。

$start = 0;
for ($A = 0; 3; $A++){  //テーブル4個分のループ
//1テーブル5行分のループ
for ($recno = $start + ($A * 5); $recno < $start + 5 + ($A * 5); $recno++){
if (! $row =& $res->fetchRow(db_fechtmode_assoc,$recno)) {
break;
}
$body['$A'].="<tr>";
$body['$A'].="<td>".$row["No"]."</td>";
$body['$A'].="<td>".$row["氏名"]."</td>";
$body['$A'].="</tr>\n";
}
}

で、$body[0]の第1テーブルを書き出し、$body[1]の第2テーブルを
書き出し・・・と、そのまま使えたら楽だと思ったのです。
そもそも、$body[0]の中にはNoと氏名とは2つ入らないでしょうか・・・。
PHP5.2.6 と PEAR です。よろしくお願いします。

投稿日時 - 2008-08-26 22:45:40

QNo.4281146

困ってます

質問者が選んだベストアンサー

> for ($A = 0; 3; $A++){  //テーブル4個分のループ
の2つ目の引数は $A < 3 の誤りでは?
これだと条件が常に真なので永久ループになるような気がします。

あと $start は必要なのですか?

投稿日時 - 2008-08-26 23:09:27

お礼

2つ目の引数は $A < 3 ですね。
$startは、要求されたNoによっては、テーブルに書き出す
開始位置を決めたかったので入れています。
$recno = $start + ($A * 5); こんなように足しても問題ない
ですよね・・・という確認の意味で書きました。
何とか表示されています。もう少々手直しが必要ですが、あとは
いけると思います。ありがとうございました。

投稿日時 - 2008-08-26 23:31:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問