Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Запрос даты из базы

Сообщения:  [1-10]   [11-12] 

 
 автор: kis-kis   (28.04.2007 в 11:00)   письмо автору
 
   для: Trianon   (28.04.2007 в 10:46)
 

Теперь понял...))

   
 
 автор: Trianon   (28.04.2007 в 10:46)   письмо автору
 
   для: kis-kis   (27.04.2007 в 20:53)
 

Но Вы же эту задачу решаете не для данного числа, а для всех тридцати чисел месяца?

   
 
 автор: kis-kis   (27.04.2007 в 20:53)   письмо автору
 
   для: Trianon   (27.04.2007 в 17: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);

   
 
 автор: kis-kis   (27.04.2007 в 12:55)   письмо автору
 
   для: Trianon   (27.04.2007 в 12:53)
 

>>Блин, если б я знал, зачем Вам нужен этот запрос. ей-богу, сделал бы усилие над собой, чтобы не ответить.

Он составлен сильно не грамотно? Вообще его писал не я... А просто хотел сделать под свои нужды? Вы не поможете мне уже в 100 раз?!

   
 
 автор: Trianon   (27.04.2007 в 12:53)   письмо автору
 
   для: kis-kis   (27.04.2007 в 12:20)
 

Блин, если б я знал, зачем Вам нужен этот запрос, ей-богу, сделал бы усилие над собой, чтобы не ответить.

Во первых, в MySQL есть функция COUNT() считающая число записей.
Во вторых , можно сгруппировать строки по датам конструкцией GROUP BY
В третьих, получить весь ряд количеств сообщений одним (!) запросом.
А не вытаскивать сами сообщения, да еще по тридцать раз на вызов скрипта.

А то что Вы деалете - издевательство.

   
 
 автор: kis-kis   (27.04.2007 в 12:49)   письмо автору
 
   для: zerocool   (27.04.2007 в 12:29)
 

Можно подробнее?

   
 
 автор: zerocool   (27.04.2007 в 12:29)   письмо автору
 
   для: kis-kis   (27.04.2007 в 12:20)
 

Вы забыли о функциях

mysql_fetch_row();
или

mysql_fetch_array();
при выводе данных из БД

   
 
 автор: 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.">&laquo;</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.">&raquo;</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.">&laquo;</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.">&raquo;</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 $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\">&nbsp;</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\">&nbsp;</td>\n";
}
echo 
"</tr>\n";
echo 
"</table>";
?>

   
 
 автор: zerocool   (27.04.2007 в 12:00)   письмо автору
 
   для: kis-kis   (27.04.2007 в 11:39)
 

Можно например так:

$news_result = mysql_query("select * from news where data LIKE '%".$news_date."%'");  

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования