PHP 余分に出来たタグを消したい
PHP初心者です。
ただ今カレンダーを作成しております。
コードは以下です。
<?php
$d=isset($_GET['d'])? $_GET['d']:date("Y-n-d");
list($year,$month,$day)=explode("-",$d);
$prev=date("Y-n-d",mktime(0,0,0,$month-1,1,$year));
$next=date("Y-n-d",mktime(0,0,0,$month+1,1,$year));
$timestamp = mktime(0,0,0,$month,1,$year);
$fd=date("w",$timestamp);
$ld=date("t",$timestamp);
?>
<table>
<tr>
<th><a href="?d=<?php echo$prev; ?>">←</a></th>
<th colspan="5"><?php echo ("<h1>".$year."年".$month."月</h1>"); ?></th>
<th><a href="?d=<?php echo$next; ?>">→</a></th>
</tr>
<tr>
<th class="sun">日</th>
<th>月</th>
<th>火</th>
<th>水</th>
<th>木</th>
<th>金</th>
<th class="sat">土</th>
</tr>
<tr>
<?php
$offset = $fd; //
while($fd--){
//$y ++; // 空セル文曜日を増やす
$s .= "<td></td>\n";
}
for($i=1; $i<=$ld; $i++){
$tmp = $offset + $i; //$tmpを$offset(1日までの空セル) と $i(31日)を足したものにする
$s.="<td>$i</td>\n"; //$sに日数とセルを追加
if($tmp % 7 ==0){ //$tmp(空セル+その月の日数)を7で割りあまりが0すなわち土曜日まできたら
$s.= "</tr>\n<tr>\n"; //</tr>で改行をいれる
}
}
$y=0;
for($i=1; $i<=$tmp; $i++){ //$tmp(空セル+その月の日数)になるまで
if($y % 7 == 0){ //7倍数になったら0にリセットする
$y = 0;
}
$y++; //リセットされた残りの曜日
}
$r=7-$y;
$y=0;
while($r--){
$s.='<td></td>';
}
for($i=1; $i<=$tmp; $i++){
if($tmp % 7 == 0){
$s.="</table>\n";
break;
}else{
$s.="</tr></table>\n";
break;
}
}
echo $s;
?>
一見出来ているようですが、最終日が土曜日になると余分な<tr>が入ってしまいます。
原因として、
if($tmp % 7 ==0){
$s.= "</tr>\n<tr>\n";}
と入れてあり、土曜日に7がくる(7で割り切れる数字で終わる)であるとは理解しているのですが、どうすれば、「最終セルに最後の日が来たときに<tr>をいれない」といった命令の仕方がわかりません。
素人ですので、分かりやすく解説していただけると嬉しいです。
よろしくお願い致します。
お礼
ありがとうございます! 時間の足し引きができました。 勉強になりました!!m(_._)m