19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
1

Не работает условие

23.03.2016, 09:10. Показов 1857. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, помогите разобраться:
Если не выбираем дату, ни в date_from, ни в date_to, пишет как и положено: Выберите дату.
Если выбираем date_from больше текущей, пишет Выберите дату не большую: ...
Это все ок.

А вот далее не хочет работать:
Если выбираем date_to больше текущей, то просто пишет Выберите дату.
Если выбираем date_from больше текущей и date_to больше текущей - срабатывает выборка и выводит данные по 0 естественно...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Файл формы
<form id="ajax_form" method="post" action="">
  C: <input name="date_from" style="width:10em;border-radius:5px;" type="date"/> По: <input name="date_to" style="width:10em;border-radius:5px;" type="date"/><br /><br />
    <input type="button" onClick="mode('ajax_form');" class="btn btn-info" value="Рассчитать">
</form>
 
// Другой файл, выборка работает через ajax
$date_from = $_POST['date_from'];
$date_to = $_POST['date_to'] . '23:59:59';
 
if (date("d.m.Y",strtotime($date_from)) == '01.01.1970'){
    echo '<p class="text-info"><strong>Выберите дату</strong></p>';
}
elseif ($date_from > date('d.m.Y') || $date_to > date('d.m.Y')){
    echo 'Выберите дату не большую: ' . date('d.m.Y');
    }
else {
... Выборка из бд ...
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2016, 09:10
Ответы с готовыми решениями:

Проверка на число: Одно и то же условие работает в случае numchar, но не работает с xchar и ychar
Помогите ламеру с ламерской программкой. В тестирующей функции запрашиваются три строки numchar,...

Не работает условие
Привет всем. Пишу код регистрационной формы. Есть 2 EditTexta пароль и подтвердите пароль как...

Не работает условие
Крыша едет не могу понять в чем проблема #include &lt;iostream&gt; #include &lt;string&gt; #include...

Условие с % не работает
:@echo off setlocal set /A x=1 call :Even %x% result echo %result% endlocal exit /B...

9
2170 / 1653 / 840
Регистрация: 10.01.2015
Сообщений: 5,192
23.03.2016, 10:09 2
Не проверял. Возможны мелкие ошибки
PHP
1
2
3
4
5
6
7
8
9
if (date('d.m.Y',strtotime($date_from)) == '01.01.1970' || empty($date_from) || empty($date_to)){
    echo '<p class="text-info"><strong>Выберите дату</strong></p>';
}
elseif (($date_from > date('d.m.Y') || $date_to > date('d.m.Y')) || ($date_from > date('d.m.Y') && $date_to > date('d.m.Y'))){
    echo 'Выберите дату не большую: ' . date('d.m.Y');
    }
else {
... Выборка из бд ...
}
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.03.2016, 10:11  [ТС] 3
Пифагор, аналогично, ничего не изменилось.
0
162 / 161 / 66
Регистрация: 28.06.2015
Сообщений: 576
23.03.2016, 10:11 4
Лучший ответ Сообщение было отмечено dukesov как решение

Решение

Цитата Сообщение от dukesov Посмотреть сообщение
Если выбираем date_to больше текущей, то просто пишет Выберите дату.
Здесь у вас когда вы выбираете date_to, то $date_from у вас остается 01.01.1970 соответственно, срабатывает первое условие:
PHP
1
2
3
if (date("d.m.Y",strtotime($date_from)) == '01.01.1970'){
    echo '<p class="text-info"><strong>Выберите дату</strong></p>';
}
Цитата Сообщение от dukesov Посмотреть сообщение
Если выбираем date_from больше текущей и date_to больше текущей - срабатывает выборка и выводит данные по 0 естественно...
Здесь мне кажется проблема в передаваемом типе даты, т.к. вы не приводите ни $date_from ни $date_to ни к какому виду даты, а к $date_to еще приписываете строку '23:59:59'. Так же это объясняет почему
Цитата Сообщение от dukesov Посмотреть сообщение
Если выбираем date_from больше текущей, пишет Выберите дату не большую: ...
Просто напросто если вы выбираете то у вас 2 условие ($date_to > date('d.m.Y')) получается в любом случае true.
Варианты решения, это приводить все к timestamp (я бы так делал) и открыть для себя стандартный класс DateTime, или второй вариант все приводить к одному формату:
PHP
1
elseif (date("d.m.Y",strtotime($date_from)) > date('d.m.Y') || date("d.m.Y",strtotime($date_to)) > date('d.m.Y')){
Ну и по аналогии
1
2170 / 1653 / 840
Регистрация: 10.01.2015
Сообщений: 5,192
23.03.2016, 10:14 5
У меня есть подобное на моем ресурсе.
У меня стоит условие
PHP
1
empty($datefrom) || empty($dateto)
и jQuery-календари. ВСЕ.
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.03.2016, 10:19  [ТС] 6
Цитата Сообщение от Xenox Посмотреть сообщение
elseif (date("d.m.Y",strtotime($date_from)) > date('d.m.Y') || date("d.m.Y",strtotime($date_to)) > date('d.m.Y')){
Спасибо, если выбрать в обоих датах больше текущей даты выдает Выберите дату не большую:
Цитата Сообщение от Xenox Посмотреть сообщение
у вас остается 01.01.1970
Если я уберу это, я не смогу вывести данные за сегодняшний день, выбрав сегодняшнюю дату в обоих датах. Я не знаю почему это работает так, выбрать сегодняшнюю дату я смогу если вторую дату поставлю как завтра.

Добавлено через 1 минуту
Пифагор, я с вашего же кода это делал, где-то тут на форуме была подобная тема, но хочу оставить стандартный календарь, т.к. контент админки в основном для мобильных устройств.
0
162 / 161 / 66
Регистрация: 28.06.2015
Сообщений: 576
23.03.2016, 10:28 7
Цитата Сообщение от dukesov Посмотреть сообщение
Я не знаю почему это работает так, выбрать сегодняшнюю дату я смогу если вторую дату поставлю как завтра.
Это где вы не можете выбрать? В бд? На форме?
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.03.2016, 10:41  [ТС] 8
Xenox, в форме. Выбрать то могу, но он не отображает данные. Он ставит дату и время вот так: 23.03.2016 00:00:00 - 23.03.2016 00:00:00, поэтому и добавил 23:59:59.

Добавлено через 6 минут
Ну собственно вот так все отлично работает:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$date_from = $_POST['date_from'];
$date_to = $_POST['date_to'] . '23:59:59';
 
if (date("d.m.Y",strtotime($date_from)) == '01.01.1970'){
    echo '<p class="text-info"><strong>Выберите дату</strong></p>';
}
elseif (date("d.m.Y",strtotime($date_from)) > date('d.m.Y') || date("d.m.Y",strtotime($date_to)) > date('d.m.Y')){
    echo '<p class="text-info"><strong>Выберите дату не большую: ' . date('d.m.Y') . '</strong></p>';
    }
else {?>
<p class="text-info"><strong>
 
<?php if(date("d.m.Y",strtotime($date_from)) == date('d.m.Y') and date("d.m.Y",strtotime($date_to)) == date('d.m.Y')){echo 'За сегодня';}
    else {
    echo date("d.m.Y",strtotime($date_from))?> - <? echo date("d.m.Y",strtotime($date_to));
    }?>
    </strong></p>
 
... Выборка ...
 
<?php } ?>
0
162 / 161 / 66
Регистрация: 28.06.2015
Сообщений: 576
23.03.2016, 10:48 9
Лучший ответ Сообщение было отмечено dukesov как решение

Решение

Тогда как вариант использовать:
HTML5
1
<input type="datetime" name="name" value="">
Или добавить условие:
PHP
1
if (date("d.m.Y",strtotime($date_from)) == '01.01.1970' && date("d.m.Y",strtotime($date_to)) <= date("d.m.Y")){
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
23.03.2016, 11:10  [ТС] 10
Xenox, Спасибо!

Добавлено через 17 минут
Xenox, тогда еще вот так, если выбрать вторую дату меньше чем первую:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$date_from = $_POST['date_from'];
$date_to = $_POST['date_to'] . '23:59:59';
 
if (date("d.m.Y",strtotime($date_from)) == '01.01.1970' && date("d.m.Y",strtotime($date_to)) <= date("d.m.Y")){
    echo '<p class="text-info"><strong>Выберите дату</strong></p>';
}
elseif (date("d.m.Y",strtotime($date_to)) < date("d.m.Y",strtotime($date_from))){
    echo '<p class="text-info"><strong>Введите правильную дату</strong></p>';
}
elseif (date("d.m.Y",strtotime($date_from)) > date('d.m.Y') || date("d.m.Y",strtotime($date_to)) > date('d.m.Y')){
    echo '<p class="text-info"><strong>Выберите дату не большую: ' . date('d.m.Y') . '</strong></p>';
    }
else {?>
<p class="text-info"><strong>
 
<?php if(date("d.m.Y",strtotime($date_from)) == date('d.m.Y') and date("d.m.Y",strtotime($date_to)) == date('d.m.Y')){echo 'За сегодня';}
    else {
    echo date("d.m.Y",strtotime($date_from))?> - <? echo date("d.m.Y",strtotime($date_to));
    }?>
    </strong></p>
 
... Выборка ...
 
<?php } ?>
0
23.03.2016, 11:10
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2016, 11:10
Помогаю со студенческими работами здесь

Не работает условие
&lt;?php include ($_SERVER.'/include/connectdb.php'); $id = $_COOKIE; $hash = $_COOKIE; $q =...

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

Не работает условие if
Перед этим: &lt;form action=&quot;redirect_page.php&quot; method=&quot;post&quot; id=&quot;form_redirect&quot;...

не работает условие
Доброе время суток при проверки браузера на push уведомление в функции subscribe() проверка почему...

Не работает условие
Здравствуйте. хочу: 1)ввожу строку с клавиатуры 2) если строка соответствует заранее...

Не работает условие
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;random&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­х­р­о­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru