アプリ版:「スタンプのみでお礼する」機能のリリースについて

月~金までそれぞれ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つのセルに納めたいと思っています。
お分かりになる方がいましたらご教授ください。
よろしくお願いいたしたします。

A 回答 (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の場合は変な動作になる。
# しかしフラグが多すぎて汚いソースになってしまった・・・
# 何の考えなしに組むとだめだね。
    • good
    • 0
この回答へのお礼

moon_night様、ありがとうございます。

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

お礼日時:2007/07/12 16:41

配列に収めればいいのでは?


$rows = array(1,4,1,2,1,1,1,1);
print "rowspan=" .$rows[0];
print "rowspan=" .$rows[1];
など
    • good
    • 0
この回答へのお礼

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>

お礼日時:2007/07/10 12:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!