|
|
|
| Функция date() выводит день, месяц, год и время а есть ли какакя нибудь функция для вывода календаря за один месяц ???
Мне нужно в браузер вывести календарь за месяц причем если наступает следующий месяц то календарь соответственно должен быть уже за следующий (короче всегда актуальный). | |
|
|
|
|
|
|
|
для: Felix
(27.01.2006 в 05:20)
| | в пхп такой функции нет.. придеться либо искать готовое решение (думаю таких не мало), либо самому изобретать | |
|
|
|
|
|
|
|
для: Felix
(27.01.2006 в 05:20)
| | Предлагаю самодельную функцию. Может не очень изящно, но работает :-)
<?php
function month_print($y, $m)
// $m - месяц в формате 1, 2, 3, ..., 12
// $y - год в формате четырехзначного числа
{
// определяем номер дня недели первого числа месяца
$weekday_1 = getdate(mktime(0, 0, 0, $m, 1, $y));
$weekday_1 = $weekday_1['wday'];
if ($weekday_1 == 0) $weekday_1 = 7; // если номер дня недели 0 (ВС), делаем его 7
$days = days_in_month($m, $y); // определяем количество дней в месяце
echo '<table>';
echo ' <tr>';
echo ' <th>ПН</th><th>ВТ</th><th>СР</th><th>ЧТ</th><th>ПТ</th><th>СБ</th><th>ВС</th>';
echo ' </tr>';
$day = 1;
for ($rows=1; $rows<=6; $rows++)
{
echo ' <tr>';
for ($cols=1; $cols<=7; $cols++)
{
$d = $day - $weekday_1 + 1;
if ($d <= 0) $d = ' ';
echo '<td align="right">'.$d.'</td>';
$day = $day + 1;
if ($d >= $days) break;
}
echo ' </tr>';
if ($d >= $days) break;
}
echo '</table>';
}
function days_in_month($month, $year)
{
$days_in_month[1] = 31;
$days_in_month[2] = 28;
$days_in_month[3] = 31;
$days_in_month[4] = 30;
$days_in_month[5] = 31;
$days_in_month[6] = 30;
$days_in_month[7] = 31;
$days_in_month[8] = 31;
$days_in_month[9] = 30;
$days_in_month[10] = 31;
$days_in_month[11] = 30;
$days_in_month[12] = 31;
$days = $days_in_month[$month];
if ($year/4 == ceil($year/4) and $days == 28) // проверяем високосный год
{
$days = 29;
return $days; // если високосный и месяц февраль, то прибавляем 1, т.е. число дней 29
}
else
{
return $days;
}
}
?>
|
Функции надо передать год в форме четырехзначного числа и месяц в форме 1,2,3, ..., 12. Неделя начинается с понедельника | |
|
|
|
|
|
|
|
для: WebTech
(27.01.2006 в 11:25)
| | Чето не работает. я в начале скрипта написал
$y=date("Y");
$m=date("m");
|
и не работает... странно ... главное не ругается и не выводит ничего....
кстати что ето за строка ?
echo ' <th>ПН</th><th>ВТ</th><th>СР</th><th>ЧТ</th><th>ПТ</th><th>СБ</th><th>ВС</th>';
|
можнт быть вот так было бы правильнее :)
echo ' <td>ПН</td><td>ВТ</td><td>СР</td><td>ЧТ</td><td>ПТ</td><td>СБ</td><td>ВС</td>';
|
но один черт не работает..... | |
|
|
|
|
|
|
|
для: Felix
(27.01.2006 в 12:38)
| | Нужно месяц без ведущего нуля
$y=date("Y");
$m=date("n");
month_print($y, $m);
|
Тег <th></th> выводит заголовок столбца таблицы. Это просто жирный шрифт. В принципе не важно :-) | |
|
|
|
|
|
|
|
для: WebTech
(27.01.2006 в 12:58)
| | спасибо календарь заработал, только вот почему если мне надо вывести календарь в случае наличия определенной переменной то он не работает ? Ругается на month_print($y, $m);
Примерно так выглядит:
<?php
if(isset($_POST['go']))
{
$y=date("Y");
$m=date("n");
month_print($y, $m);
function month_print($y, $m)
// $m - месяц в формате 1, 2, 3, ..., 12
// $y - год в формате четырехзначного числа
{
// определяем номер дня недели первого числа месяца
$weekday_1 = getdate(mktime(0, 0, 0, $m, 1, $y));
$weekday_1 = $weekday_1['wday'];
if ($weekday_1 == 0) $weekday_1 = 7; // если номер дня недели 0 (ВС), делаем его 7
$days = days_in_month($m, $y); // определяем количество дней в месяце
echo '<table>';
echo ' <tr>';
echo ' <th>ПН</th><th>ВТ</th><th>СР</th><th>ЧТ</th><th>ПТ</th><th>СБ</th><th>ВС</th>';
echo ' </tr>';
$day = 1;
for ($rows=1; $rows<=6; $rows++)
{
echo ' <tr>';
for ($cols=1; $cols<=7; $cols++)
{
$d = $day - $weekday_1 + 1;
if ($d <= 0) $d = ' ';
echo '<td align="right">'.$d.'</td>';
$day = $day + 1;
if ($d >= $days) break;
}
echo ' </tr>';
if ($d >= $days) break;
}
echo '</table>';
}
function days_in_month($month, $year)
{
$days_in_month[1] = 31;
$days_in_month[2] = 28;
$days_in_month[3] = 31;
$days_in_month[4] = 30;
$days_in_month[5] = 31;
$days_in_month[6] = 30;
$days_in_month[7] = 31;
$days_in_month[8] = 31;
$days_in_month[9] = 30;
$days_in_month[10] = 31;
$days_in_month[11] = 30;
$days_in_month[12] = 31;
$days = $days_in_month[$month];
if ($year/4 == ceil($year/4) and $days == 28) // проверяем високосный год
{
$days = 29;
return $days; // если високосный и месяц февраль, то прибавляем 1, т.е. число дней 29
}
else
{
return $days;
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Felix
(01.02.2006 в 10:20)
| | А как ругается?
Попробуй переписать так
<?php
if(isset($_POST['go']))
{
$y=date("Y");
$m=date("n");
month_print($y, $m);
}
function month_print($y, $m)
// $m - месяц в формате 1, 2, 3, ..., 12
... далее остальной скрипт функции
|
т.е. надо вынести определение функции из блока IF | |
|
|
|
|
 3.5 Кб |
|
|
для: Felix
(27.01.2006 в 05:20)
| | на многих сайтах видел такое (см. приложение). как такое делают??? особенно интересует форма | |
|
|
|
|
|
|
|
для: P@Sol
(01.02.2006 в 14:06)
| | Это, однако, очень сильно похоже на элемент управления ActiveX :-) Или что-то вроде того. На вряд ли JavaScript.
Наверняка такие штуки можно найти в сети. | |
|
|
|
|
|
|
|
для: WebTech
(01.02.2006 в 14:37)
| | WebTech, спасибо! Все заработало :) | |
|
|
|
|
|
|
|
для: WebTech
(01.02.2006 в 14:37)
| | Здравствуйте WebTech, я немного переделал ваш календарь под свои нужды
<form action="kalendar.php" method="POST">
<table border='1'>
<tr>
<td colspan='2' align='center'><font color='#ff0000'>Календарь</font></td>
</tr>
<tr>
<td align="center">Год:</td>
<td align="center">
<SELECT name="year" size="1">
<OPTION selected value='2006'> 2006</OPTION>
<OPTION value='2007'> 2007</OPTION>
<OPTION value='2008'> 2008</OPTION>
<OPTION value='2009'> 2009</OPTION>
<OPTION value='2010'> 2010</OPTION>
<OPTION value='2011'> 2011</OPTION>
<OPTION value='2012'> 2012</OPTION>
<OPTION value='2013'> 2013</OPTION>
<OPTION value='2014'> 2014</OPTION>
<OPTION value='2015'> 2015</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td align="center">Месяц:</td>
<td align="center">
<SELECT name="mount" size="1">
<OPTION selected value="1"> Январь</OPTION>
<OPTION value="2"> Февраль</OPTION>
<OPTION value="3"> Март</OPTION>
<OPTION value="4"> Апрель</OPTION>
<OPTION value="5"> Май</OPTION>
<OPTION value="6"> Июнь</OPTION>
<OPTION value="7"> Июль</OPTION>
<OPTION value="8"> Август</OPTION>
<OPTION value="9"> Сентябрь</OPTION>
<OPTION value="10"> Октябрь</OPTION>
<OPTION value="11"> Ноябрь</OPTION>
<OPTION value="12"> Декабрь</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="kal" value="Показать"></td>
</tr>
</table>
</form>
<?
//////////////////////////////////////////////////////////////////////////////////////////
include("../autoriz/config.php");
if(isset($_POST['go']))
{
$ch = $_POST['check'];
foreach($ch as $key => $val)
{
#$day=array_shift($_POST['day']);
print "$key -> $val <br>";
#mysql_query("UPDATE kalendary SET off_day='".$val."' WHERE day='".$day."' and mount='".$_POST['mount']."' and year='".$_POST['year']."'", $dbcnx) or die(MySQL_Error());
}
}
//////////////////////////////////////////////////////////////////////////////////////////
if(isset($_POST['kal']))
{
$y=$_POST['year'];
$m=$_POST['mount'];
month_print($y, $m);
}
function month_print($y, $m)
{
// определяем номер дня недели первого числа месяца
$weekday_1 = getdate(mktime(0, 0, 0, $m, 1, $y));
$weekday_1 = $weekday_1['wday'];
if ($weekday_1 == 0) $weekday_1 = 7; // если номер дня недели 0 (ВС), делаем его 7
$days = days_in_month($m, $y); // определяем количество дней в месяце
echo '<form action="kalendar.php" method="POST"><table border="1" bgcolor="#200060">';
echo ' <tr bgcolor="#004000">';
echo ' <th>ПН</th><th>ВТ</th><th>СР</th><th>ЧТ</th><th>ПТ</th><th>СБ</th><th>ВС</th>';
echo ' </tr>';
print"<input type='hidden' name='mount' value='".$m."'><input type='hidden' name='year' value='".$y."'>";
$day = 1;
for ($rows=1; $rows<=6; $rows++)
{
echo ' <tr>';
for ($cols=1; $cols<=7; $cols++)
{
$d = $day - $weekday_1 + 1;
if ($d <= 0) $d = ' ';
if ($d <= ' ')
{
echo '<td align="right">'.$d.'';
}
else
{
echo '<td align="right"';
$off=mysql_query("SELECT off_day FROM kalendary WHERE day='".$d."' && mount='".$_POST['mount']."' && year='".$_POST['year']."'");if(!$off) exit(mysql_error());
while($off_day=mysql_fetch_assoc($off))
{
if($off_day['off_day']=='checked')
{
print" bgcolor='#a00000'><b>".$d."</b><input type='hidden' name='day[]' value='".$d."'>";
}
else
{
print" ><b>".$d."</b><input type='hidden' name='day[]' value='".$d."'>";
}
}
$tm=mysql_query("SELECT * FROM kalendary WHERE day='".$d."' && mount='".$_POST['mount']."' && year='".$_POST['year']."'");
while($tim=mysql_fetch_assoc($tm))
{
print"<INPUT type='checkbox' name='check[]' value='' ".$tim['off_day'].">";
}
}
print'</SELECT></td>';
$day = $day + 1;
if ($d >= $days) break;
}
echo ' </tr>';
if ($d >= $days) break;
}
echo '</table><br><input type="submit" name="go" value="Сохранить"></form>';
}
function days_in_month($month, $year)
{
$days_in_month[1] = 31;
$days_in_month[2] = 28;
$days_in_month[3] = 31;
$days_in_month[4] = 30;
$days_in_month[5] = 31;
$days_in_month[6] = 30;
$days_in_month[7] = 31;
$days_in_month[8] = 31;
$days_in_month[9] = 30;
$days_in_month[10] = 31;
$days_in_month[11] = 30;
$days_in_month[12] = 31;
$days = $days_in_month[$month];
if ($year/4 == ceil($year/4) and $days == 28) // проверяем високосный год
{
$days = 29;
return $days; // если високосный и месяц февраль, то прибавляем 1, т.е. число дней 29
}
else
{
return $days;
}
}
?>
|
Подскажите почему в строке
print "$key -> $val <br>"; ,
|
я не вижу вывода отмеченных мною чекбоксов ? | |
|
|
|