|
|
|
|
|
для: Trianon
(28.04.2007 в 10:46)
| | Теперь понял...)) | |
|
|
|
|
|
|
|
для: kis-kis
(27.04.2007 в 20:53)
| | Но Вы же эту задачу решаете не для данного числа, а для всех тридцати чисел месяца? | |
|
|
|
|
|
|
|
для: Trianon
(27.04.2007 в 17:53)
| | Извините, может я чего не понял... но зачем все это? Ведь задача просто если в данное число месяца были новости то сделать ссылку, если нет то просто вывести число...?! Что-то вроде календаря новостей. | |
|
|
|
|
|
|
|
для: kis-kis
(27.04.2007 в 12:55)
| |
$date_from = sprintf("%04d-%02d-01 00:00:00", $year, $month);
$date_to = sprintf("%04d-%02d-%02d 00:00:00", $year, $month, $numdays)
$sql = "SELECT COUNT(id) as cnt, date_format(data,"%e") AS n
FROM news
WHERE data BETWEEN '$date_from' AND '$date_to'
GROUP BY n";
$res = mysql_query($sql); or die("$sql : ".mysql_error());
while($row = mysql_fetch_assoc($res))
$counts[$row['n']] = $row['cnt'];
print_r($counts);
|
| |
|
|
|
|
|
|
|
для: Trianon
(27.04.2007 в 12:53)
| | >>Блин, если б я знал, зачем Вам нужен этот запрос. ей-богу, сделал бы усилие над собой, чтобы не ответить.
Он составлен сильно не грамотно? Вообще его писал не я... А просто хотел сделать под свои нужды? Вы не поможете мне уже в 100 раз?! | |
|
|
|
|
|
|
|
для: kis-kis
(27.04.2007 в 12:20)
| | Блин, если б я знал, зачем Вам нужен этот запрос, ей-богу, сделал бы усилие над собой, чтобы не ответить.
Во первых, в MySQL есть функция COUNT() считающая число записей.
Во вторых , можно сгруппировать строки по датам конструкцией GROUP BY
В третьих, получить весь ряд количеств сообщений одним (!) запросом.
А не вытаскивать сами сообщения, да еще по тридцать раз на вызов скрипта.
А то что Вы деалете - издевательство. | |
|
|
|
|
|
|
|
для: zerocool
(27.04.2007 в 12:29)
| | Можно подробнее? | |
|
|
|
|
|
|
|
для: kis-kis
(27.04.2007 в 12:20)
| | Вы забыли о функциях
или
при выводе данных из БД | |
|
|
|
|
|
|
|
для: Trianon
(27.04.2007 в 11:58)
| | Почему-то не работает, по сути при таком запросе должны быть ссылки на дни календаря, в которые были публикации новостей, а весь календарь неактивен :(.
Вот полный код:
<?php
$now_month = date("n",time());
$now_year = date("Y",time());
$now_today = date("j", time());
//очистка от гамна
if (isset($_GET['month'])) {
$month = $_GET['month'];
$month = ereg_replace ("[[:space:]]", "", $month);
$month = ereg_replace ("[[:punct:]]", "", $month);
$month = ereg_replace ("[[:alpha:]]", "", $month);
if ($month < 1) { $month = 12; }
if ($month > 12) { $month = 1; }
}
if (isset($_GET['year'])) {
$year = $_GET['year'];
$year = ereg_replace ("[[:space:]]", "", $year);
$year = ereg_replace ("[[:punct:]]", "", $year);
$year = ereg_replace ("[[:alpha:]]", "", $year);
if ($year < 1990) { $year = 1990; }
if ($year > 2035) { $year = 2035; }
}
if (isset($_GET['today'])) {
$today = $_GET['today'];
$today = ereg_replace ("[[:space:]]", "", $today);
$today = ereg_replace ("[[:punct:]]", "", $today);
$today = ereg_replace ("[[:alpha:]]", "", $today);
}
function denned_to_rus($denned)
{
if($denned==0) $denned=7;
return $denned;
}
$month = (isset($month)) ? $month : date("n",time());
$year = (isset($year)) ? $year : date("Y",time());
$today = (isset($today))? $today : date("j", time());
$daylong = date("l",mktime(1,1,1,$month,$today,$year)); //день недели текст англ.
$monthlong = date("F",mktime(1,1,1,$month,$today,$year)); //название месяца англ.
$dayone = date("w",mktime(1,1,1,$month,1,$year)); //день недели цифрой
$numdays = date("t",mktime(1,1,1,$month,1,$year)); //количество дней в месяце
$alldays = array('Пн','Вт','Ср','Чт','Пт','<font color=red>Сб</font>','<font color=red>Вс</font>');
$next_year = $year + 1;
$last_year = $year - 1;
$next_month = $month + 1;
$last_month = $month - 1;
if ($today > $numdays) { $today--; }
if($month == "1" ){$month_ru="январь";}
elseif($month == "2" ){$month_ru="февраль";}
elseif($month == "3" ){$month_ru="март";}
elseif($month == "4" ){$month_ru="апрель";}
elseif($month == "5" ){$month_ru="май";}
elseif($month == "6" ){$month_ru="июнь";}
elseif($month == "7" ){$month_ru="июль";}
elseif($month == "8" ){$month_ru="август";}
elseif($month == "9" ){$month_ru="сентябрь";}
elseif($month == "10"){$month_ru="октябрь";}
elseif($month == "11"){$month_ru="ноябрь";}
elseif($month == "12"){$month_ru="декабрь";}
//echo $month;
//echo $dayone;
/*
if(checkdate($month,29,$year) && $month==2) {
//echo "это 29 мес!!! ";
$dayone=7;
}
*/
echo "<table border=0 cellpadding=4 cellspacing=1 width=170>";
//выводим название года
echo "<tr bgcolor=#E7EBEF>
<td align=center><a href=".$PHP_SELF."?year=".$last_year."&today=".$today."&month=".$month.">«</a></td>";
echo "<td width=100% class=\"cellbg\" colspan=\"5\" valign=\"middle\" align=\"center\">
<b>".$year." г.</b></td>\n";
echo "<td align=center><a href=".$PHP_SELF."?year=".$next_year."&today=".$today."&month=".$month.">»</a></td>";
echo "</tr></table>";
//выводим название месяца
echo "<table border=0 cellpadding=4 cellspacing=1 width=170>";
echo "<tr bgcolor=#E7EBEF>
<td align=center><a href=".$PHP_SELF."?year=".$year."&today=".$today."&month=".$last_month.">«</a></td>";
echo "<td width=100% class=\"cellbg\" colspan=\"5\" valign=\"middle\" align=\"center\">
<b>".$month_ru."</b></td>\n";
echo "<td align=center><a href=".$PHP_SELF."?year=".$year."&today=".$today."&month=".$next_month.">»</a></td>";
echo "</tr></table>";
$denned1day = denned_to_rus(date("w",mktime(1,1,1,$month,1,$year)));
$dennedNOWday = denned_to_rus(date("w",mktime(1,1,1,$month,$today,$year)));
$dennedLASTday = denned_to_rus(date("w",mktime(1,1,1,$month,$numdays,$year)));
$num_of_zero_days = 7 - $dennedLASTday;
$days=array();
echo "<table border=0 cellpadding=2 cellspacing=1 width=170><tr>";
//выводим дни недели
foreach($alldays as $value) {
echo "<td valign=\"middle\" align=\"center\" width=\"10%\">
<b>".$value."</b></td>\n";
}
echo "</tr>\n<tr>\n";
//выводим пустые дни месяца как пробелы
echo "<tr>\n";
for($z=1;$z<$denned1day;$z++)
{
echo "<td valign=\"middle\" align=\"center\"> </td>\n";
}
//выводим дни месяца
for($d=1;$d<=$numdays;$d++)
{
$days[$d]=denned_to_rus(date("w",mktime(1,1,1,$month,$d,$year)));
if($days[$d]==1) echo "<tr>\n";
if ($d == $today)
{
echo "<td valign=\"middle\" align=\"center\" bgcolor=#B9D7D5>";
$news_date = $year."-".$month."-".$d;
$news_result = mysql_query("select * from news where date(data) = '".$news_date."'");
$news_rows = mysql_num_rows($news_result);
if($news_rows >0) {
echo "<a href=\"".$_SERVER['PHP_SELF']."?year=".$year."&today=".$d."&month=".$month."\">".$d."</a>";
}
else {
echo $d;
}
echo "</td>\n";
}
else {
echo "<td valign=\"middle\" align=\"center\">";
$news_date = $year."-".$month."-".$d;
$news_result = mysql_query("select * from news where date(data) = '".$news_date."'");
$news_rows = mysql_num_rows($news_result);
if($news_rows >0) {
echo "<a href=\"".$_SERVER['PHP_SELF']."?year=".$year."&today=".$d."&month=".$month."\">".$d."</a>";
}
else {
echo $d;
}
echo "</td>\n";
}
if($days[$d]==7) echo "</tr>\n\n";
}
for($z=0;$z<$num_of_zero_days;$z++)
{
echo "<td valign=\"middle\" align=\"center\"> </td>\n";
}
echo "</tr>\n";
echo "</table>";
?>
|
| |
|
|
|
|
|
|
|
для: kis-kis
(27.04.2007 в 11:39)
| | Можно например так:
$news_result = mysql_query("select * from news where data LIKE '%".$news_date."%'");
|
| |
|
|
| |
|