※ ChatGPTを利用し、要約された質問です(原文:html、php、IE6またはfirefoxでの表示について)
問:html、php、IE6またはfirefoxでの表示について
このQ&Aのポイント
MySQLに入れてあるデータをphpのforeachループを回すことでhtmlのテーブルに取り出して表示しようとしています。
データはちゃんと取り出せてテーブルに入っているのですが、テーブルの画面上での配置がうまく設定できません。
firefoxでは、普通に表示されるのですが、IE6だとなぜか画面上だいぶん下の方に表示されます(表の上はぽっかりと大きな空白ができます)。ループを回したテーブルをdivタグで囲って色を付けてみますと(絶対値指定で座標を0、0にした)、画面左上の位置からちゃんと色がつくのですが、テーブルはそれとはずれて、だいぶん下に配置されます。余計なCSS、javascriptなどは全部落としてみましたが、ダメでした。PHPフレームワークとしてCodeIgniterを使用しています。
html、php、IE6またはfirefoxでの表示について
MySQLに入れてあるデータをphpのforeachループを回すことでhtmlのテーブルに取り出して表示しようとしています。データはちゃんと取り出せてテーブルに入っているのですが、テーブルの画面上での配置がうまく設定できません。
firefoxでは、普通に表示されるのですが、IE6だとなぜか画面上だいぶん下の方に表示されます(表の上はぽっかりと大きな空白ができます)。ループを回したテーブルをdivタグで囲って色を付けてみますと(絶対値指定で座標を0、0にした)、画面左上の位置からちゃんと色がつくのですが、テーブルはそれとはずれて、だいぶん下に配置されます。余計なCSS、javascriptなどは全部落としてみましたが、ダメでした。
PHPフレームワークとしてCodeIgniterを使用しています。
以下に作成したものを貼り付けておきます。どなたかわかりましたら、よろしくご指導お願いします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登山記録</title>
</head>
<body>
<table border="1">
<tr>
<th>山名</th>
<th>登山期間</th>
<th>集合場所</th>
<th>集合時刻</th>
<th>登山開始</th>
<th>登頂時刻</th>
<th>登山終了</th>
<th>山篭り(時間)</th>
<th>天気</th>
<th>出席メンバー</th>
<th>コメント</th>
<th>欠席メンバー(理由)</th>
<th>パスワード</th>
<?php foreach($all_data as $row): ?>
<tr>
<td><?=form_prep($row->yama_name);?></td>
<td><? if($row->time_range1==$row->time_range2){ if($row->time_range1!=0){ echo form_prep(date("Y/m/d",$row->time_range1));}else { echo "-";}}else{?>
<?php echo form_prep(date("Y/m/d",$row->time_range1))."~".form_prep(date("Y/m/d",$row->time_range2));} ?></td>
<td><? if($row->gathering_place==""){ echo "-"; }else{ echo form_prep("$row->gathering_place");}?></td>
<td><? if($row->g_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->g_time));} ?></td>
<td><?php if($row->nobori_start_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->nobori_start_time));} ?></td>
<td><?php if($row->nobori_peak_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->nobori_peak_time));} ?></td>
<td><?php if($row->nobori_end_time==0){ echo "-"; }else{ echo form_prep(date("Y/m/d H:i",$row->nobori_end_time)); } ?></td>
<td><?php if($row->yama_gomori_time==0){ echo "-"; }else{ echo sprintf("%.2f",form_prep($row->yama_gomori_time)); } ?></td>
<td><?php if($row->weather==""){ echo "-"; }else{ echo form_prep($row->weather); } ?></td>
<td><?=form_prep($row->go_with);?></td>
<td><?php if($row->comment==""){ echo "-"; }else{ echo form_prep($row->comment);}?></td>
<td><?php if($row->absence_member==""){ echo "-"; }else{ echo form_prep($row->absence_member)."(".form_prep($row->absence_reason).")";}?></td>
<td>
<?=form_open('mount/mod_del/' . $row->id);?>
<input type="password" name="password" size="6" value="" />
</td>
<td>
<input type="submit" name="modify" value="修正" /><br>
<input type="submit" name="delete" value="削除" />
<?=form_close();?>
</td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
お礼
回答ありがとうございました。 返事が遅れまして本当に申し訳ありません!!! テーブルヘッダーの行のTRが確かに抜けていますね! ご指摘ありがとうございました。 ただ、TRの閉じタグを追加してみましたが、何も変わりませんでした。 TRの閉じタグがなくても今まで表示されてたのも不思議。。。 うーん、どうしたらよいのでしょう?? IE8でも確認してみましたが、IE6と同じ表示でした。。。
補足
回答にお礼をしたあとなんですが、何とか解決できました。 原因はよく分かりませんが、行った操作を書いておきます。 1.以前はforeachを外すと、タイトルTHの所だけですが、ちゃんとした位置に表示されていたので、phpとIE6の連携が上手くいっていないのかなぁと漠然と思っていました。 2.けれど、skyfangさんの回答にもありますように、htmlの問題かと思い、まず意味もなくテーブルの列数を減らしてみました。いろいろな組み合わせで減らしてみると、「欠席者」の列を消してみたらちゃんとした位置に表示されることがわかりました。 3.列数を減らしても、「欠席者」の列が含まれているとちゃんとした位置に表示されないことが分かり、「欠席者」の列の部分に他の列をコピーして埋め合わせてもちゃんと表示されたので、なぜかわかりませんが、「欠席者」列に問題があるようだと言うことが分かりました。 4.それで、結局やったことは、「コメント」列をコピーして、変数を欠席者用に替えました。すると、なぜかちゃんと表示されるようになりました。 読みにくく且つ長くなってしまいましたが、質問時のhtmlを読んで下さり、本当にありがとうございました!