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

Форум PHP

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

 

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

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

тема: Определить даты выходных
 
 автор: kis-kis   (19.12.2008 в 17:09)   письмо автору
 
 

Данный код выводит числа 31 дня от текущего. А можно как-то определить, какие из этих дней выходные? Заранее спасибо.


for ($i = 0; $i <= 30; $i++)

    $date = date('Y-m-d', strtotime(($i)." day")); 
    echo "<a href=\"#\">".russ_date('d', strtotime($i." day"))."</a>"; 
}

  Ответить  
 
 автор: kis-kis   (19.12.2008 в 18:13)   письмо автору
 
   для: kis-kis   (19.12.2008 в 17:09)
 

Можно сделать так -

for ($i = 0; $i <= 30; $i++)

    $date = date('Y-m-d', strtotime(($i)." day"));
     $holiday = date('w', strtotime(($i)." day"));
     if ($holiday == 6 or $holiday == 0) $hol="выходной"; else $hol = "";
    echo "<b>".russ_date('D', strtotime($i." day"))."</b>".$hol.""; 
}

  Ответить  
 
 автор: kis-kis   (19.12.2008 в 18:58)   письмо автору
 
   для: kis-kis   (19.12.2008 в 18:13)
 

Не сильно данный запрос будет нагружать хостера?


for ($i = 0; $i <= 30; $i++)

$date = date('Y-m-d', strtotime(($i)." day"));

$query = "SELECT id as yes FROM afisha_seance where date_f >= '$date' and date_s <= '$date' group by yes";
$result=mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
if (mysql_num_rows($result)!=0)
{
echo "<a href=\"#\">".russ_date('d', strtotime($i." day"))."</a>"; 
}
else echo "".russ_date('d', strtotime($i." day"))."";


}

  Ответить  
 
 автор: Trianon   (19.12.2008 в 21:42)   письмо автору
 
   для: kis-kis   (19.12.2008 в 18:58)
 

сильно.
раз в тридцать.

  Ответить  
 
 автор: kis-kis   (22.12.2008 в 10:05)   письмо автору
 
   для: Trianon   (19.12.2008 в 21:42)
 

А как лучше построить запрос?

  Ответить  
 
 автор: Trianon   (22.12.2008 в 10:09)   письмо автору
 
   для: kis-kis   (22.12.2008 в 10:05)
 

Лучше строить запрос так, чтоб он не вызывался в цикле.

  Ответить  
 
 автор: kis-kis   (22.12.2008 в 10:15)   письмо автору
 
   для: Trianon   (22.12.2008 в 10:09)
 

Можете посоветовать? :)

  Ответить  
 
 автор: Trianon   (22.12.2008 в 10:41)   письмо автору
 
   для: kis-kis   (22.12.2008 в 10:15)
 

Советую. Запросить строки, дата начала которых раньше левой границы рассматриваемого тридцатидневного интервала, а дата конца, соответственно позже. В нужном порядке.
И обработать их в обычном цикле выборки результата запроса.

При наличии таблицы дат, можно даже не сами строки запросить, а их количество. Сгруппировав запрос по датам.


Скажите, пожалуйста, что означает SELECT id as yes ... GROUP BY yes ?

  Ответить  
 
 автор: kis-kis   (22.12.2008 в 11:17)   письмо автору
 
   для: Trianon   (22.12.2008 в 10:41)
 

Так вы имели ввиду?


$query = "SELECT * FROM afisha_seance where date_f >= NOW() and date_s <= 'DATE_SUB(NOW(), INTERVAL 30 DAY)'";
$result=mysql_query($query) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
if (mysql_num_rows($result)!=0)
{
while($event = mysql_fetch_array($result))
{
echo "<a href=\"#\">дата</a>"; 
}
}

  Ответить  
 
 автор: Trianon   (22.12.2008 в 11:49)   письмо автору
 
   для: kis-kis   (22.12.2008 в 11:17)
 

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

  Ответить  
 
 автор: kis-kis   (22.12.2008 в 11:52)   письмо автору
 
   для: Trianon   (22.12.2008 в 11:49)
 

От чего такая перемена?

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 19:57)   письмо автору
 
   для: Trianon   (22.12.2008 в 11:49)
 

Бьюсь все над тем же календарем :(
Активные даты выводятся ссылками, неактивные просто текстом.
Как можно определить, в данном случае $i, которое идет перед активной ссылкой?
Заранее спасибо!


for ($i = 0; $i <= 30; $i++)

$date = date('Y-m-d', strtotime(($i)." day"));

$query_yes = "SELECT * FROM afisha_seance where date_f >= '$date' and date_s <= '$date'";
$result_yes=mysql_query($query_yes) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
if (mysql_num_rows($result_yes)!=0)
{
echo "<td><a href=\"#\">".date('d', strtotime($i." day"))."</a></td>\n"; 
}
else echo "<td>".date('d', strtotime($i." day"))."</td>\n";
}

  Ответить  
 
 автор: Trianon   (03.02.2009 в 20:59)   письмо автору
 
   для: kis-kis   (03.02.2009 в 19:57)
 

что значит "перед" ?

Делайте, пожалуйста, отступы внутри каждых скобок { ... }
Читать невозможно.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 21:09)   письмо автору
 
   для: Trianon   (03.02.2009 в 20:59)
 


for ($i = 0; $i <= 30; $i++)

        $date = date('Y-m-d', strtotime(($i)." day"));

        $query_yes = "SELECT * FROM afisha_seance where date_f >= '$date' and date_s <= '$date'";
        $result_yes=mysql_query($query_yes) or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
        if (mysql_num_rows($result_yes)!=0)
        {
                echo "<td><a href=\"#\">".date('d', strtotime($i." day"))."</a></td>\n"; 
        }
                else echo "<td>".date('d', strtotime($i." day"))."</td>\n";
}


Перед выводом этого - echo "<td><a href=\"#\">".date('d', strtotime($i." day"))."</a></td>\n";

  Ответить  
 
 автор: Trianon   (03.02.2009 в 21:25)   письмо автору
 
   для: kis-kis   (03.02.2009 в 21:09)
 

Вот хоть убейся веником, я не понимаю вопроса.
Как определить $i которое идет перед <td><a ?
Тогда что значит определить?
$i определяется в заголовке цикла.
И на каждом повторе вырастает на единицу.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 22:24)   письмо автору
 
   для: Trianon   (03.02.2009 в 21:25)
 

Извиняюсь, если плохо объясняю, я имел ввиду чему равно $i, которое перед ссылкой.

Допустим при выводе у нас получилось так -

1. echo "<td>".date('d', strtotime($i." day"))."</td>\n";
2. echo "<td><a href=\"#\">".date('d', strtotime($i." day"))."</a></td>\n";
3. echo "<td><a href=\"#\">".date('d', strtotime($i." day"))."</a></td>\n";
4. echo "<td>".date('d', strtotime($i." day"))."</td>\n";
5. echo "<td><a href=\"#\">".date('d', strtotime($i." day"))."</a></td>\n";
...

Как определить чему равно $i в 1 и 4 случаях?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 22:43)   письмо автору
 
   для: kis-kis   (03.02.2009 в 22:24)
 

в первой и четвертой строке переменная $i равна нулю и трем соответственно. И это не зависит от того, есть там (перед, позже) ссылка или её нет.

  Ответить  
 
 автор: kis-kis   (04.02.2009 в 10:53)   письмо автору
 
   для: Trianon   (03.02.2009 в 22:43)
 

Вы не поняли меня... Думаю, наверное, был глупый вопрос с моей стороны... Но все же, спасибо!

  Ответить  
Rambler's Top100
вверх

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