<?php /* problem leży na samym dole */ if (($rok == '') && ($m == '')) { // jeżeli nie ma podanych tych wartości to wyświetla aktualny miesiąc } else { $d_rok = $rok; $d_miesiac = $m; $d_dzienTygodnia = $sMiesiaca; } if ($d_dzienTygodnia == 0) { // od ktorego dnia miesiaca zaczac wyswietlac dane. $d_dzienTygodnia = 7; } $nextM = $d_miesiac + 1; $prevM = $d_miesiac - 1; "1" => "Styczeń", "2" => "Luty", "3" => "Marzec", "4" => "Kwiecień", "5" => "Maj", "6" => "Czerwiec", "7" => "Lipiec", "8" => "Sierpień", "9" => "Wrzesień", "10" => "Padziernik", "11" => "Listopad", "12" => "Grudzień" ); "7" => "Nd", "1" => "Pon", "2" => "Wt", "3" => "r", "4" => "Czw", "5" => "Pt", "6" => "So" ); "1" => 31, "2" => 28, "3" => 31, "4" => 30, "5" => 31, "6" => 30, "7" => 31, "8" => 31, "9" => 30, "10" => 31, "11" => 30, "12" => 31 ); print "<td colspan='7' bgcolor='#2d6cc2' style="font-size: 10px; padding: 3px; font-family: verdana; font-weight: bold; color: #ebeaea; text-align: center">$miesiace[$d_miesiac] $d_rok</td>n"; print "<td width='60' bgcolor='#ebeaea' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[1]</td>n"; print "<td width='60' bgcolor='#ebeaea' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[2]</td>n"; print "<td width='60' bgcolor='#ebeaea' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[3]</td>n"; print "<td width='60' bgcolor='#ebeaea' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[4]</td>n"; print "<td width='60' bgcolor='#ebeaea' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[5]</td>n"; print "<td width='60' bgcolor='#ebeaea' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[6]</td>n"; print "<td width='60' bgcolor='#d9d9d9' style="font-size: 10px; font-weight: bold; padding: 3px; font-family: verdana; color: #2d6cc2; text-align: center">$dniTygodnia[7]</td>n"; // wyswietlanie dni w kalendarzu if ($sMiesiaca == '') { $dt = $d_dzienTygodnia; for ($y = $d_dzienMiesiaca; $y > 1; $y--) { if ($dt > 1) { $dt = $dt - 1; } else { $dt = 7; } } $sMiesiaca = $dt; } if (((($sMiesiaca == 6) && ($ileDni[$d_miesiac] == 31)) || ($sMiesiaca == 7)) && ($d_miesiac != 2)) { $ile = 42; } else { $ile = 35; } print "Data: $d_dzienMiesiaca / $miesiace[$d_miesiac] / $d_rok | Start miesišca: <b>$sMiesiaca</b>; Ile komorek: $ile; $ileDni[$d_miesiac]"; // wyswietlanie dni for ($f = 0; $f < $sMiesiaca - 1; ++$f) { } for ($i = $f + 1; $i <= $ileDni[$d_miesiac] + $f; $i++) { if (($i % 7 == 1) && ($i != '1')) { $front = "<tr>n"; $end = ""; $nd = " bgcolor='#f4f4f4'"; } else if ($i % 7 == 0) { $front = ""; $end = "</tr>n"; $nd = " bgcolor='#d9d9d9'"; } else { $front = ""; $end = ""; $nd = " bgcolor='#f4f4f4'"; } print "$front<td height='20' $nd style="font-size: 10px; padding: 3px; font-family: verdana; color: #000000; text-align: center">"; } $ostDzien = $i % 7; for ($i = $i; $i <= $ile; ++$i) { } /* Tutaj jest problem. Zobacz do postu */ $startPrevM =; // konczy sie xDniem, trwa yDni gdzie: xDzien = $sMiesiac - 1; yDni = $ileDni[$dmiesiac-1];
$startNextM = $ostDzien; print "<td colspan='3' bgcolor='#7da7e0' style="font-size: 10px; padding: 3px; font-family: verdana; text-align: center"><a href=?sMiesiaca=$startPrevM&m=$prevM><<Poprzedni Miesišc</a></td>"; print "<td colspan='3' bgcolor='#7da7e0' style="font-size: 10px; padding: 3px; font-family: verdana; text-align: center"><a href=?sMiesiaca=$startNextM&m=$nextM>Następny Miesišc>></td>"; ?>
I mam problem. Jak odczytać numer dnia tygodnia w którym to dniu zaczyna się miesiąc poprzedzający?
Próbowałem już kilka godzin i nic.
Myślałem, że np:
1. W miesiącu A dzień rozpoczyna się dniem w tygodniu o numerze X gdzie x należy do 1 - 7;
2. Miesiąc A-1 (numer miesiąca) ma Y dni (jeśli A = 1 to A-1 = 12)
3. Toznaczy że miesiąc A-1 zaczyna się w dniu:
$startPrevM = (Y + X) % 7;
4. to nie koniec
$startPrevM musimy jeszcze uwzględnić liczbę dni. Gdyż przy dzieleniu przez 7 wyjdzie nam reszta równa:
0 == ze miesiac A-1 zacznie sie w tym samy,m dniu tygodnia co miesiac A (dotyczy tylko lutego, nie przestepnego)
1 = oznacza ze miesiac A-1 rozpocznie sie dzien wczesniej itd
2
3
4
5
6
I wtedy trzeba odpowiednio poprzesuwać zmienna X czyli dzień tygodnia (czyli im mniej dni.
Niestety tak nie działa albo zle kombinuje. Poradzcie prosze:)