[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с датой.
Dima85
HTML конструкция:
        <select name="time" id="time">
<option
value="00" selected="selected">00</option>
<option
value="01">01</option>
<option
value="02">02</option>
<option
value="03">03</option>
***
<option value="20">20</option>
<option
value="21">21</option>
<option
value="22">22</option>
<option
value="23">23</option>
</select>
:<select id="min" name="min">
<option
value="00" selected="selected">00</option>
<option
value="05">05</option>
<option
value="10">10</option>
<option
value="15">15</option>
***
<option value="50">50</option>
<option
value="55">55</option>
</select>
/
<select id="day" name="day">
<option
value="0" selected="selected">Сегодня</option>
<option
value="1">Завтра</option>
</select>


Время записывается в файл, в таком формате 12:15
Далее PHP код сравнивает время компьютера и время с файла. Если оно еще не настало то показываем "ОК".

Пример:

***
if (strtotime(date('H:i')) >= strtotime($pr[1])) { echo "OK"; }
***


Вопрос: Каким способом задействовать select day (Сегодня, Завтра)?
Ранее я думал узнавать сегодняшнею дату и к ней прибавлять select day, тоесть если value = 0 (сегодня), то к day+0 если завтра то day+1 но в таком случае когда будет 31 день и будет +1 то запись получится не читаемой.
Как бы вы сделали такую задачу?
Спасибо.




Спустя 21 минута, 39 секунд (16.09.2010 - 15:56) Renden написал(а):
Dima85
А для чего это вообще? Я бы записывал не а файл а в базу, и из базы бы выводил без всяких проблем)
По поводу твоего решения, можно же добавить условия типа
Если Месяц=Май макс дней =31
Если Месяц=сентябрь макс дней =30
я не делал такой штуки, но в нете полно решений касательно дней в месяце..

Спустя 4 минуты, 51 секунда (16.09.2010 - 16:01) Dima85 написал(а):
Renden, нет поддержки баз данных.
Такими условиями придется сравнивать каждый месяц.
Может какие-то другое решения кто-то из форумчан знает? Не обязательно опираться на мои мысли.

Спустя 1 час, 51 минута, 42 секунды (16.09.2010 - 17:52) Renden написал(а):
Дальше сам сделаешь вывод того что те надо

<form action="<?php echo $PHP_SELF; ?>" method="post">
<
input type="hidden" name="go" value="ok">
<
select id="day" name="day">
<
option value="0">Сегодня</option>
<
option value="1">Завтра</option>
</
select>
<
input type="submit">
</
form>
<?php
if ($_POST['go'] == "ok") {
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
$date_tomorrow = date("Y-m-d", $tomorrow);
$date_today = date("Y-m-d");
if ($_POST['day'] == 0) {
echo $date_today;
}
if ($_POST['day'] == 1) {
echo $date_tomorrow;
}
}

?>

Спустя 3 часа, 12 минут, 44 секунды (16.09.2010 - 21:05) Dima85 написал(а):
Сейчас в голову еще 1 идея пришла. Не обязательно в файле хранить дату в читабельном формате. А что если мы будем работать с цифрами.
Мы знаем что в сутках 86400 секунд.
Тоесть к часам если нам нужно завтра, то прибавляем 86400, если сегодня то 0 и снова + время.

Реализация:
if ($_POST['day'] == 0) {
$date = '0';
}
if ($_POST['day'] == 1) {
$date = '86400';
}

$time = strtotime(date('12:20')) + $date; #12:20 это время указанное посетителем.
if (date() <= $time) { echo "OK"; }#date() - правильно так сравнивать?


Renden, как тебе такой вариант? Сейчас к сожалению нет возможности проверить работоспособен ли он. Очень интересно твое мнение. Я в правильном направление иду?

Спустя 21 минута, 30 секунд (16.09.2010 - 21:26) Renden написал(а):
Dima85
Проблема в том что я плохо понимаю что ты хочешь получить в итоге, но если я правильно понял можно так:
<?php 
if ($_POST['day'] == 0) {
$date = '0';
}
if ($_POST['day'] == 1) {
$date = '86400';
}
$time = strtotime(date('12:20')) + $date;
if (strtotime("now") >= $time) {
echo "OK";
}
?>

Этот код выведет ок если нажать седня, если выбрать завтра, то он не выведет ок, тк время еще не наступило, это те надо было?

Спустя 12 минут, 3 секунды (16.09.2010 - 21:39) Dima85 написал(а):
Нет, нужно наоборот, если время еще не наступило выводить "OK" если наступило то ничего не выводить.
Насколько я понимаю для этого нужно всего лишь изменить
if (strtotime("now") >= $time) {

на
if (strtotime("now") <= $time) {

Спасибо большое. Вы мне очень помогли.

Спустя 3 минуты, 10 секунд (16.09.2010 - 21:42) Renden написал(а):
Dima85
Да, измени знак равенства, незачто, надеюсь будет работать)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.