• 締切済み

動的にhtmlテーブルを表示

月~金までそれぞれ4つずつ入力フォームがあり、データをCSVとして保存します。 これを曜日ごとの入力数でテーブルの表示も変更させたいです。 CSVにはmon1,mon2,mon3,mon4,tue1,tue2…としています。 月曜日に入力フォーム1に「ああ」、入力フォーム2に「いい」と入力し 火~金は入力フォーム1だけに入力します。 この場合月曜日が2行になり、他は「rowspan=2」で1行として表示させます。 月が1行、火が4行、水2行などとなった場合、月は「rowspan=4」、火は「rowspan=1」、水は「rowspan=2」「rowspan=2」になどしたいです。 自分では月~木が1行で金が2行のとき…月~水が1行で木が2行で金が3行とき…など 条件分岐させていましたが組み合わせがかなりありできませんでした。 あくまでも1つのデータは1つのセルに納めたいと思っています。 お分かりになる方がいましたらご教授ください。 よろしくお願いいたしたします。

みんなの回答

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

なんとなくわかった。 質問を理解してませんでした。 元のCSVファイルの形式が悪いように思えます。 月~金のみでログファイルは一定、データの増減はない (編集はある) とするならば、 ## CSV ## mon1 tue1,tue2,tue3,tue4 wed1 thu1 fri1,fri2 ######### とする。 ファイルを読み取る。 一行目は必ず月曜日、二行目は火曜日と言う風になるので、 $mon = split(",",$file[0]); $tue = split(",",$file[1]); 等とやる。 count($mon)でやれば値数が帰ってるので、それから計算する。 $mon1 = count($mon); $mon2 = 4-($mon1-1); $mon3 = 0; $mon4 = 0; $tue1 = count($tue); $tue2 = 4-($tue1-1); $tue3 = 0; $tue4 = 0; ... for($i=0;$i<=3;$i++){ print "<tr>\n"; if (!$mon3) { $mon3 = $mon2; print "<td rowspan="$mon2"> $mon[$mon4]</td>\n"; $mon3--; $mon4++; } if (!$tue3) { $tue3 = $tue2; print "<td rowspan="$tue2"> $tue[$tue4]</td>\n"; $tue3--; $tue4++; } ... print "</tr>\n"; } # 要素数が3の場合は変な動作になる。 # しかしフラグが多すぎて汚いソースになってしまった・・・ # 何の考えなしに組むとだめだね。

mpban
質問者

お礼

moon_night様、ありがとうございます。 for文を提示していただきありがとうございます。 各曜日の値の数をカウントするのですね。 参考にさせていただきます。csvの保存形式は変更しました。

全文を見る
すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

配列に収めればいいのでは? $rows = array(1,4,1,2,1,1,1,1); print "rowspan=" .$rows[0]; print "rowspan=" .$rows[1]; など

mpban
質問者

お礼

moon_night様ありがとうございます。 配列に収め、この組み合わせを何通りも作るということでしょうか。 月が3行目のときは以下のようになるのですが、2,3行目の<tr>と表示させる値を どのように記述していいのかがわかりませんでした。 もし宜しければご教授の程、お願い致します。 <tr>  <td> $Mon1</td>  <td rowspan="3"> $Tue1</td>  <td rowspan="3"> $Wed1</td>  <td rowspan="3"> $Th1</td>  <td rowspan="3"> $Fri1</td> </tr> <tr>  <td>$Mon2</td> </tr> <tr>  <td>$Mon3</td> </tr>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでの日付表示について

    Excelで日付表示するには、[分類] ボックスの [ユーザー定義] をクリックし、[種類] ボックスに「dddd」または「ddd」と入力。 "dddd" の場合は曜日が完全表記 (Monday、Tuesday、など) で表示され、"ddd" の場合は曜日が略語 (Mon、Tue、Wed、など) で表示される。というのはわかるのですが、月曜日、火曜日、水曜日・・・または、月、火、水・・・のように表示させることは可能でしょうか。 また、その方法をご教授いただけないでしょうか。

  • 選択日付(曜日)を◎で表示させたいのですが

    選択日付(曜日)を◎で表示させたいのですが ■選択 B1=年 C2=月 ■選択条件(入力規則/リスト選択) D3=リスト(月・火・水・木・金・土・月水金・月金・火木土・火木) から D20=リスト(月・火・水・木・金・土・月水金・月金・火木土・火木) ■一覧表表示 CT2 から DX2 まで横一行に1日から31日までの日付 その下の行から表示エリア CT3 から DX20 までの表にその選択年月のリスト指定曜日に 「◎」を表示させたい。 ■例(B1=22年 C2=6月 D3=月曜) CZ3=7日/DG3=14日/DN3=21日/DU3=28日 該当セルに◎表示 それ以外のセルは空白 どうぞお知恵をよろしくお願い致します。

  • エクセルの棒グラフ、データの無い場所を表示しないようにするには?

    例えば、 月、火、水、木、金、土、日 5、0、8、9、6、8、0 のようなデータがあった場合に、 グラフにすると、 月、火、水、木、金、土、日 が出ると思います。 これを 月、水、木、金、土 でグラフを作成されるようにするにはどうすればいいでしょうか?? 補足:もし、水曜が0になったら、水曜を非表示にするみたいな設定です。

  • SQLで曜日のソートを月火水木金土日にしたい

    こんにちは。SQLiteのソートについてお教え頂けませんでしょうか。 フィールドに曜日が入っています。その曜日をソートをかけると下記のようになります。 土 日 月 木 水 火 金 欲しい並び順は下記です。 日 月 火 水 木 金 土 Or 月 火 水 木 金 土 日 CSVに出力したり、色々したいので曜日順になっていてもらった方が色々助かるのですが、何か良い方法はないでしょうか? 今考えているのは、C#のフォームからSQL文を発行してSQLiteに問い合わせ。結果をC#側で受け取って、CSVに出力という事を考えています。

  • ある条件での最小値を抽出

    いま、ある条件での最小値を抽出する関数がわからなくて困ってます。 月 1 火 4 水 5 木 2 金 1 月 2 火 3 水 木 2 金 5 というデータがるとします。これで月曜日や火曜日のの最小値をだしたいです。 それと水曜日のように数字が入ってないときは「0」と認識せずに、無視するような関数をくみたいのですが、どなたか教えていただけないですか?

  • 曜日のみを表示させたいです。

      _ 1|月|   _ 2|火|   _ 3|水|   _ 4|木|   _ 5|金|   _ 6|土|   _ 7|日|   _ 8|月|   _ 9|火|   _   ・   ・   ・ と上のように日付は出さずに曜日だけを表示させ、カレンダーのように繰り返し表示したいのですが、全くわかりません。 わかる方いらっしゃいましたら、教えてもらえると助かります。

    • ベストアンサー
    • PHP
  • Excelカレンダーでのうるう年の処理

    よろしくお願いいたします。 A2以降に日付を固定で入力し、B2にそれに対応した曜日を表示させているのですが、 うるう年の処理に困っています。 例として、A1に2015/4/1と入れた場合、   列A 列B 行2 | 4/1 水 行3 | 4/2 木 行4 | 4/3 金 ~~~~~~~ 行335 | 2/27 土 行336 | 2/28 日 行337 | 2/29 月 行338 | 3/1 火 行339 | 3/2 水 のような形で表示されていたのを、A1に2014/4/1と入力した際には、   列A 列B 行2 | 4/1 火 行3 | 4/2 水 行4 | 4/3 木 ~~~~~~~ 行335 | 2/27 金 行336 | 2/28 土 行337 | 行338 | 3/1 日 行339 | 3/2 月 と表示されるようにしたいのです。 つまり、行の位置は変えずに、閏年で必要なときのみ2/29とその曜日が表示され、 必要ないときは、非表示にし、他の日付の曜日は自動的に変わるようにしたいです。 うまくやりたいことが伝えられていないような気がしますが、 どなたか教えて頂けないでしょうか。 よろしくお願いいたします。

  • エクセルの関数について

    エクセルに詳しくないので関数に強い方宜しくお願いいたします。 シート1の1行目に月・火・水・木・金・土・日と曜日を入れ、2行目にその曜日に合わせた月曜日が「3」、火曜日が「9」、水曜日が「4」など決まった数字を入れるとします。 シート2に月間の7/1から7/31で水曜日から始まる表を作り、その下の行にシート1に入れた7/1(水)だったら「4」、7/2(木)なら・・・と数字が表示されるような関数はあるでしょうか?

  • Access コンボボックスの表示データを取り出す方法

    お世話になっております。 レコードが1、2、3、・・・となっているフォームのコンボボックスの値集合ソースを別テーブルに指定して、1、2、3、・・・に該当するデータが月、火、水・・・とします。 つまり、コンボボックス上は月、火、水・・・と表示されますが、データとしては1、2、3、・・・です。 ここのデータを取り出そうとした場合、当然1、2、3、・・・が取り出されるのですが、月、火、水・・・として取り出す方法はありますでしょうか。 たとえば、このデータを他のフォームに渡す場合、月、火、水・・・として渡したいと思っています。 ご教授いただければ幸いです。よろしくお願いいたします。

  • エクセル 関数 曜日別データの並び替え

    エクセルの関数で曜日別データの並び替えを教えてください 月 100 火 90 水 -10 木 -20 金 30 月 120 水 150 金 -120 のデータを 月   火   水   木   金 100  90   -10   -20   30 120  150            -120 のように並び替えたいです