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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Помогите найти ошибку в работе скрипта
 
 автор: kis-kis   (06.06.2007 в 15:53)   письмо автору
4.2 Кб
 
 

Есть скрипт, который выводит даты новостей, при просмотре за май месяц все работает отлично, но при просмотре текущего месяца (июнь) - ничего не отображается? В чем ошибка? Спасибо. (скрипт во вложении).

   
 
 автор: Trianon   (06.06.2007 в 16:03)   письмо автору
 
   для: kis-kis   (06.06.2007 в 15:53)
 

.

   
 
 автор: kis-kis   (06.06.2007 в 17:54)   письмо автору
 
   для: Trianon   (06.06.2007 в 16:03)
 

Простите, не понял?!

   
 
 автор: kis-kis   (07.06.2007 в 12:24)   письмо автору
 
   для: kis-kis   (06.06.2007 в 17:54)
 

Никто ничего не посоветует?((

   
 
 автор: Trianon   (07.06.2007 в 12:47)   письмо автору
 
   для: kis-kis   (06.06.2007 в 17:54)
 

это я погорячился. Извините.
заглянул внутрь, задал вопрос по скрипту....
Но потом понял, что один вопрос ничего не решит. И стер.

   
 
 автор: kis-kis   (07.06.2007 в 13:59)   письмо автору
 
   для: Trianon   (07.06.2007 в 12:47)
 

Так задайте их необходимое кол-во? ))

   
 
 автор: Trianon   (07.06.2007 в 15:02)   письмо автору
 
   для: kis-kis   (07.06.2007 в 13:59)
 

Ок.

$month = (isset($month)) ? $month : date("m",time());
$year = (isset($year)) ? $year : date("Y",time());
$today = (isset($today))? $today : date("d", time());

Я не вижу ни одного использования $_GET.
Откуда берутся в скрипте все эти $month, $year, $today и прочие переменные?

   
 
 автор: kis-kis   (07.06.2007 в 16:26)   письмо автору
 
   для: Trianon   (07.06.2007 в 15:02)
 

Если не указан месяц - то месяц равен date("m",time()). Правильно?
А если указан - он указывается, вот здесь - 66 строка, при навигации:


echo "<tr><td width=100% colspan=\"5\" valign=\"middle\" align=\"center\">
<a href=/news/?year=".date('Y', $last_month)."&month=".date("m", $last_month)." title='Предыдущий месяц'>&laquo;</a>
&nbsp;&nbsp;&nbsp;<b>".$month_ru." ".$year." г.</b>&nbsp;&nbsp;&nbsp;
<a href=/news/?year=".date('Y', $next_month)."&month=".date('m', $next_month)." title='Следующий месяц'>&raquo;</a></td>";

   
 
 автор: Unkind   (07.06.2007 в 16:29)   письмо автору
 
   для: kis-kis   (07.06.2007 в 16:26)
 

Если не указан месяц - то месяц равен date("m",time()). Правильно?
При register_globals = off месяц таким образом указать будет невозможно.

   
 
 автор: Trianon   (07.06.2007 в 16:55)   письмо автору
 
   для: kis-kis   (07.06.2007 в 16:26)
 

Здесь он не указывается.
Здесь всего лишь форма.

Случай register globals on я отметаю, и могу сказать почему.
Эта методика передачи параметров родилась у автора php - Расмуса Ледорфа.
Некоторое время она существовла в версии языка php3 - сейчас напрочь устаревшей.
Она предполагает достаточно четкое понимание того, как переменные передаются из форм. заголовков и прочих источников в скрипт.
Ни у новичков вообще, ни у Вас в частности такого понимания нет. Эта методика не для чеоловека, задающего вопрос в форум.

Если это утверждение Вы считаете издевательством - вот Вам ответ попроще.
У меня при тестировании в переменных $month, $year и $today не возникает ничего, кроме текущей даты.

   
 
 автор: kis-kis   (07.06.2007 в 17:02)   письмо автору
 
   для: Trianon   (07.06.2007 в 16:55)
 

Что посоветуете?

   
 
 автор: Trianon   (07.06.2007 в 17:06)   письмо автору
 
   для: kis-kis   (07.06.2007 в 17:02)
 

Честно написать $month = (isset($_GET['month'])) ? $_GET['month'] : date("m",time());
и т.д.
Также определить $mmn_url_format
Notice: Undefined variable: mmn_url_format in z:\home\localhost\www\Test\test033.php on line 60
После этого полученный скрипт показать еще раз.

   
 
 автор: Trianon   (07.06.2007 в 17:12)   письмо автору
 
   для: Trianon   (07.06.2007 в 17:06)
 

Кроме того, крайне актуально было бы приложить дамп структуры и данных таблицы news.
Иначе проверять логику работы не на чем.

   
 
 автор: kis-kis   (07.06.2007 в 18:00)   письмо автору
 
   для: Trianon   (07.06.2007 в 17:12)
 

Дамп - вложение.
$mmn_url_format = "no";

   
 
 автор: Trianon   (07.06.2007 в 19:56)   письмо автору
 
   для: kis-kis   (07.06.2007 в 18:00)
 

Проблема при работе Вашего скрипта вызвана тем, что цикл for($d = ... пробегает даты числами 1 2 3 ... 31 в то время как в запросе даты нужны в выровненном формате 01 02 03 ... 31

Проявляется она только на однозначных числах - в первой декаде месяца.

решением может быть $news_date = $year."-".$month."-".str_pad($d, 2, '0', STR_PAD_LEFT);

   
 
 автор: kis-kis   (07.06.2007 в 20:10)   письмо автору
 
   для: Trianon   (07.06.2007 в 19:56)
 

Точно! ))
Уже была в другом месте такая же проблема, но там я исправил... Спасибо Вам!
И еще: насколько правильно написан данный скрипт? Как Вы считаете? Или нужно что-то оптимизировать?

   
 
 автор: Trianon   (07.06.2007 в 20:21)   письмо автору
 
   для: kis-kis   (07.06.2007 в 20:10)
 

Я уже не один раз Вам говорил, что он написан отвратно.
вот в этой теме я Вам на это указал: http://softtime.ru/forum/read.php?id_forum=3&id_theme=36626

Вот в этой теме http://softtime.ru/forum/read.php?id_forum=1&id_theme=36929
(из-за того, что Вам пофиг - Вы же не исправили код) я проигнорировал Ваш прямой вопрос.

В текущей теме, я сперва решил не связываться с Вами не в последнюю очередь опять же из-за этого 30 раз повторяющегося селекта. Вы сами напросились.

И сейчас Вы снова спрашиваете, хорош ли Ваш код.

Хорош. Только отстаньте.

   
 
 автор: kis-kis   (07.06.2007 в 20:33)   письмо автору
 
   для: Trianon   (07.06.2007 в 20:21)
 

:ops:

>Я уже не один раз Вам говорил, что он написан отвратно.
>вот в этой теме я Вам на это указал: http://softtime.ru/forum/read.php?id_forum=3&id_theme=36626

Если честно, то я просто не понял идею вашего кода, и как его нужно использовать...

   
 
 автор: Trianon   (07.06.2007 в 21:30)   письмо автору
 
   для: kis-kis   (07.06.2007 в 20:33)
 


....
for($z=1;$z<$denned1day;$z++)
{
  echo "<td valign=middle align=center>&nbsp;</td>\n";
}

$sql = "SELECT DAYOFMONTH(data) AS dm, COUNT(id) as cnt FROM news
WHERE LEFT(data, 7) = '$year-$month'
GROUP BY dm";

$res = mysql_query($sql) or die("Error");
while($row = mysql_fetch_assoc($res)) $posts[$row['dm']]=$row['cnt'];


//выводим дни месяца
for($d=1;$d<=$numdays;$d++)
{
$days[$d]=rus_format(date("w",mktime(1,1,1,$month,$d,$year)));
if($days[$d]==1)
echo "<tr>";
{
echo "<td valign=\"middle\" align=\"center\">";

//$news_date = $year."-".$month."-".$d;
//$query = "select * from news where date(data) = '".$news_date."' GROUP BY date(data)";
//$result = mysql_query($query) or die("Error:<b> ". mysql_error()." </b>in file <b>".__FILE__."</b> on line <b>".__LINE__);
//$news_rows = mysql_num_rows($result);


$news_rows = 0 + @$posts[$d];
if($news_rows <> 0)
{

   
 
 автор: kis-kis   (08.06.2007 в 10:37)   письмо автору
 
   для: Trianon   (07.06.2007 в 21:30)
 

Спасибо. Очень признателен... ))

   
 
 автор: kis-kis   (13.06.2007 в 12:35)   письмо автору
 
   для: Trianon   (07.06.2007 в 21:30)
 

А с этим не поможете:
Мы брали условие, что $mmn_url_format = "no";
а если $mmn_url_format = "yes";

То как будет выглядеть данный код?

if ($mmn_url_format == "yes") 
{
$news = mysql_fetch_array($res);
$news[data] = strtotime($news[data]);
echo "<a href=\"/news/".date("Y/m/d", $news[data])."\" title=\"Посмотреть все новости за ".russ_date('d F Y',$news[data])."\"><u>".$d."</u></a>";
}

Спасибо.

   
 
 автор: Unkind   (07.06.2007 в 17:12)   письмо автору
 
   для: Trianon   (07.06.2007 в 16:55)
 

Это Вы мне что ли говорили? :)

UPD. Вроде нет. Извините.

   
 
 автор: Trianon   (07.06.2007 в 17:14)   письмо автору
 
   для: Unkind   (07.06.2007 в 17:12)
 

> Unkind (07.06.2007 в 17:12) to: Trianon (07.06.2007 в 16:55) Это Вы мне что ли говорили? :)
Trianon (07.06.2007 в 16:55) to: kis-kis (07.06.2007 в 16:26)

   
 
 автор: Unkind   (07.06.2007 в 17:15)   письмо автору
 
   для: Trianon   (07.06.2007 в 17:14)
 

У меня структурный вид. Сначала очень было похоже, что мне.

   
Rambler's Top100
вверх

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