• ベストアンサー

HTMLのテーブルにデータを流し込む際のレイアウト

度々、失礼させていただきます。なにぶん見よう見まねです。 「abc.csv」より条件(1)で抽出した後HTMLのテーブルに並べます。 但しこのままですとHTML上、右に伸びていってしまうので4つぐらいで 新しいテーブルに改行したいのですが、お力お貸しください。 <table> <tr> <td> <?php $Data=file("abc.csv"); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($line[0]=="0" && $line[1]=="1"){ //条件(1) print "<td><table><tr>\n" ; print "<td>{$line[2]}</td></tr>" ; print "<tr>" ; print "<td>{$line[4]}</td></tr>" ; print "</table></td>\n" ; } } ?> </td> </tr> </table>

  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

HTMLがおかしいのですが、それは別問題なのでスルーします。 if($line[0]=="0" && $line[1]=="1"){ //条件(1) #(略) $j++; if (!($j%4)) { print "</tr><tr>"; } とやればいいのではないかと思います。

seaweed5000
質問者

お礼

ありがとうございました! HTMLも直したらうまく動きました。

その他の回答 (2)

  • funaho
  • ベストアンサー率58% (43/74)
回答No.3

こんな感じでどうでしょう。 <table> <tr> <?php $Data=file("abc.csv"); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($line[0]=="0" && $line[1]=="1"){ //条件(1) if($j==4){ $j=0; print "</tr><tr>\n"; } print "<td><table><tr>\n"; print "<td>".$line[2]."</td></tr>"; print "<tr>"; print "<td>".$line[4]."</td></tr>"; print "</table></td>\n"; $j++; } } ?> </tr> </table>

seaweed5000
質問者

お礼

ありがとうございました! この書き方もあるのですね。 勉強になりました。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちくわ。 >>新しいテーブルに改行したいのですが の意味がイマイチ分かりませんが。。。 とりあえず、改行できりゃ問題ないと受け取ります。 「abc.csv」から抽出したものの文字数かバイト数のどちらかを調べて、何文字、もしくは何バイトかしたら改行。でやってやればいいかと。 PHPの知識は無いですが、関数で何かないですか? LenBとかLengthとか。。。

関連するQ&A

  • テーブルに送信ボタンをつける

    phpで以下のようなテーブルにデータを表示させるプログラムがあるのですが、表示させる各行の最後に送信ボタンを付けたいのですがどうすればよろしいでしょうか?よろしくお願いいたします。 print ("<TABLE border=\"1\"><TBODY>\n") ; for ($i = 0; $i < $numrows; $i++) { $data = pg_fetch_array ($result, $i) ; print ("<TR>") ; print ("<TD>" . $data[" "] . "</TD>"); print ("<TD>" . $data[" "] . "</TD>"); print ("<TD>" . $data[" "]. "</TD>"); print ("</TD>\n"); } print ("</TBODY></TABLE>\n");

    • ベストアンサー
    • PHP
  • HTMLでテーブルを作成した際、テーブル間にスペースが空いてしまいます

    HTMLでテーブルを作成した際、テーブル間にスペースが空いてしまいます。 スタイルシートを使用/使用せず、いずれの場合も変わりません。 会社のPCで表示した時になり、家ですると自動的に詰めて表示されるみたいです。 コードはいたってシンプルで・・・ <html><head><title>aaa</title> </head> <body> aaa <hr> <table border=1> <tr><td>名前</td><td><input type="text" name="name"></td></tr> </table> <table border=1> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr></table> <table border=1> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr> <tr><td>名前</td><td><input type="text" name="name"></td></tr> </table> </body> </html> 守秘義務があるので、今は中身を適当に書いてますが、書き方はこんな感じです。 スタイルシートやHTMLコードなど色々調べましたが、テーブルの中の文字などを 詰めたりする方法は載ってましたが、今の私の知識ではテーブル自体は左右にしか動けません。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • csvデータをテーブル表示させる

    再び新規質問で申し訳ありません これしか方法がわからなかったもので; csvデータから最初の項目に5というものが含まれている場合 その列を表示する、というのを先ほど質問させていただいて解決に至りました。 csvデータファイルの内容 5,データ1,データ1の説明 5,データ2,データ2の説明 5,データ3,データ3の説明 6,データ4,データ4の説明 ・・・ ↓ open(IN, "data.csv"); while (<IN>) { if ((split(/,/))[0] == 5) { print $_. "\n"; } } close(IN); これで最初の欄に5が含まれている列だけ表示されるのですが htmlに出力すると、そのまま下記のように表示されます 5,データ1,データ1の説明 5,データ2,データ2の説明 5,データ3,データ3の説明 これでは余りにみずらいので、以下のように変更しました open(IN, "data.csv"); print "<table>"; while (<IN>) { if ((split(/,/))[0] == 5) { print "<tr><td>". $_. "</td></tr>"; } } </table> close(IN); これで少しは見やすくなったのですが・・・ ↓のように。 5,データ1,データ1の説明 5,データ2,データ2の説明 5,データ3,データ3の説明 この,で区切られた部分も</td><td>で表示したいのですがうまくいきません。 先ほど質問した時に教えていただいたURLを参照しましたがサッパリでした; 検索で、csvファイルをリストに格納して print "<table><tr>"; print "<td>$data_view[0]</td>"; print "<td>$data_view[1]</td>"; print "<td>$data_view[2]</td>"; print "</tr></table>"; と表示させれば良い、という記事をみつけたのですが これをすると 先ほど成功した最初のデータに5が一致した分だけ表示させる、という部分が機能しませんでした;; まだまだ勉強不足かとは思いますが何卒お願い致します

    • ベストアンサー
    • Perl
  • HTMLのレイアウト

    HTMLのテーブルである列だけ伸縮を自由にしたいです。 ほかの列は画面を延ばしても固定で動かない状態です。 イメージ的には以下のように2番目の列だけ幅を動かしたいのです。 <table> <tr> <td height="100%" width="200">aaa </td> <td height="100%" width="100%">bbb </td> <td height="100%" width="100">ccc </td> </tr> </table> 何か方法はないでしょうか。

    • ベストアンサー
    • HTML
  • txtに入っているデータの全件テーブル表示をする場合

    下記のdata.txt内のデータをphpでtable表示で全件を表示させたいのですが、最初の一件を表示することはできたのですが、あとのデータを同じように表示させる事を試みましたが、できませんでした。 一件目から縦に全件を表示させるにはどうしたらいいのでしょうか? よろしくお願いします。 data.txt------------ 12345,54321,田中,010,1234,5678,青森,2134,6854,山本,020,3210,5439,長崎,57404,74748,清水,030,5673,2865,岡山 ---------------------------------------------- <?php //ファイルオープン $fp = fopen('data.txt','r'); //データの読み込み $data=fgets($fp); //ファイルクローズ fclose($fp); //分割処理 $hairetu = split(',',$data); //出力処理 print("<table BORDER='1'>\n"); print("<tr><td>ID</td><td>パスワード</td><td>名前</td><td>TEL</td><td>住所</td></tr>\n"); print("<tr>\n"); print("<td>".$hairetu[0]."</td>\n"); print("<td>".$hairetu[1]."</td>\n"); print("<td>".$hairetu[2]."</td>\n"); print("<td>".$hairetu[3]."-".$hairetu[4]."-".$hairetu[5]."</td>\n"); print("<td>".$hairetu[6]."</td>\n"); print("<tr>\n"); print("</table>\n"); ?>

    • ベストアンサー
    • PHP
  • HTMLのテーブルについて

    HTMLのテーブルについて 今、HTMLを勉強しています。下記のようにテーブルを作成し一部にセルの結合を行ったところ、(2)の結合したセル右端から外枠までが広がってしまいます。せっかく綺麗に見えるように上の表と下の表のセル幅を合わせても、上の表の右端が出っ張ってしまって意味がありません。 これを解決するにはどのように改善すればいいのでしょうか? <html> <head> <title>A</title> </head> <body> <table border="2"> <tr> <th>No.</th> <th>名前</th> <th width="50">備考</th> </tr> <tr> <td>1</td> <td>A君</td> <td>(1)</td> </tr> <tr> <td>1</td> <td>B君</td> <td rowspan="2">(2)</td> </tr> <tr> <td>1</td> <td>C君</td> <td></td> </tr> </table> <br> <table border="2"> <tr> <th>No.</th> <th>名前</th> <th width="50">備考</th> </tr> <tr> <td>2</td> <td>D君</td> <td>(3)</td> </tr> <tr> <td>2</td> <td>E君</td> <td>(4)</td> </tr> <tr> <td>2</td> <td>F君</td> <td>(5)</td> </tr> </table> </body> </html>

  • テーブルをテーブルで囲う意味はありますか?

    <table border=1> <tr><td> <table border=1> <tr><td> a </td><td> b </td></tr> </table> </td> </tr> </table> このようにテーブルをテーブルで囲う意味はありますか? htmlの勉強をしていて、 ネット上でテーブルのサンプルを拾ったのですが、 上記のようにテーブルをテーブルで囲んでました。 この方法でサイト上に100個くらいテーブルを作ってしまったのですが 今更ながらこういう書き方に意味はあるのかな? と思い始めてきました。 意味はあるのでしょうか?

    • ベストアンサー
    • HTML
  • HTMLでテーブルをfloatで中央配置に並べたい

    よろしくお願いします。 floatを使ってテーブルを横に複数個並べているのですが、全体が左に寄ってしまいます。 並べたテーブルすべてを中央に配置するにはどうしたらよいのでしょうか。 テーブルとテーブルの間の隙間を固定にしたいので、マージンは固定です。 ■HTML <body> <table><tr><td>TEST1</td></tr></table> <table><tr><td>TEST2</td></tr></table> <table><tr><td>TEST3</td></tr></table> </body> ■CSS table{   float: left;   width: 100px;   border: 1px solid #000000;   margin: 0px 10px 0px 10px; } よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • ポーリングとHTMLデータのリロードの方法

    次のことをするcgiを作りたいのですが  1. 起動したらデータを読み込み、その内容を表に表示。(即時)  2. 5秒ごとにデータを読みに行き(ポーリング)、変化があったら表を    リロードして新しいデータの表を表示する。 下記のようにすると、リロードされずに表がいくつも表示されてしまいます。 (リロード処理を入れてないので当たり前なんですが) また、その表示が5秒ごとではなく、かなり長い時間(数十秒?)たってから 1度に数個表示されるというのを繰り返してしまいます。  Q1 リロードさせるには、javascriptを使えばよいのかと思うのですが、    どのようなスクリプトを使えばよいのでしょうか。    また、javascriptでなくても他に方法があれば教えてください。    (Perlのプログラム上では無理でしょうか)  Q2 起動時にまずは最初のデータを表示させたいのですが、sleeを使うと    起動後すぐ表示されないように思いますが、どのようにしたらよい    でしょうか。 なお、下記テストプログラムでは、データを更新して表示する処理は 省いています。 よろしくお願い致します。 ------------------------- $kaisuu = 0; $change = 0; while (1) {   &data;   if($kaisuu == 0 ){     &hyou;     $kaisuu = 1;   }elsif (($kaisuu == 1) && ($change == 1)){     &hyou;   }   sleep 5; } sub data {   #データの読み込み処理   if(データに変化あり){     $change = 1;   } } sub hyou {   print "Content-type: text/html\n";   print "\n";   print "<html>\n";   print "<head>\n";   print "<title>Test</title>\n";   print "</head>\n";   print " <table border=2 frame=border>\n";   print " <tr><td>項目</td>\n";   print " <td>名前</td></tr>\n";   print " <tr><td>1</td>\n";   print " <td>まるまる</td></tr>\n";   print " <tr><td>2</td>\n";   print " <td>ばつばつ</td></tr>\n";   print " </table>\n";   print "</body>\n";   print "</html>\n"; }

    • ベストアンサー
    • Perl
  • ACCESSのテーブルをHTMLファイルで出力したい

    ACCESSのテーブルをHTMLファイルで出力したいと考えています。 VBAでプログラムを作成すればいいのでしょうか。 ACCESSははじめたばかりでよくわかりません。 丸投げのようで恐縮ですが、宜しくお願い致します。 *************************************** テーブル1 *************************************** ID 名前 住所 1 伊藤 愛知 2 加藤 大阪 3 稲垣 東京 … *************************************** 2.html *************************************** <html> <body> <table> <tr> <td>ID</td> <td>名前</td> <td>住所</td> </tr> <tr> <td> … ここにテーブル1のデータを出力したい … </table> </body> </html> *************************************** 2.htmlのファイルを出力するようなことをしたいと考えています。 宜しくお願いします。

専門家に質問してみよう