|
|
|
| Что должно быть:
Если дата совпадает с севодняшней и если время совпадает с заданым, то данная строка из таблицы базы данных удаляется.
Что получается:
Если дата совпадается, то строка из базы данных удаляется, несмотря на несовпадение заданного времени.
$now_d = date("d.m.Y");
$now_t = date("H.i");
if($myrow['date'] >= $now_d && $myrow['time'] >= $now_t)
{
$result_2 = mysql_query("DELETE FROM list WHERE date='$now_d'");
}
|
Помогите. Заранее спасибо! | |
|
|
|
|
|
|
|
для: AxelX
(14.08.2008 в 23:57)
| | Вы пытаетесь сделать тоже самое, что и:
if("капуста" >= "морковка" && "огурец" >= "помидора")
{
...
}
|
Даты у вас представлены в строковом виде, а строки сравнивать - сами понимаете, бред. Переведите $myrow['date'] и $myrow['time'] в единую Unix-дату при помощи mktime() и потом уже сравнивайте с time(). | |
|
|
|
|
|
|
|
для: DDK
(15.08.2008 в 00:22)
| | > а строки сравнивать - сами понимаете, бред
Почему же? Вполне можно. Разве что формат "d.m.Y" для сравнения не может подходить. | |
|
|
|
|
|
|
|
для: BinLaden
(15.08.2008 в 00:36)
| | Всем спасибо за ответы.
Но всётаки ничего непонял. В документации тоже ничего непонял.
Сделал так, но ничего неработает
$now_d = mktime(0, 0, 0, date("d"), date("m"), date("Y"));
$now_t = mktime(date("H"), date("i"), 0, 0, 0, 0);
|
| |
|
|
|
|
|
|
|
для: AxelX
(14.08.2008 в 23:57)
| | С этим вопросом в MySQL-форум | |
|
|
|
|
|
|
|
для: mihdan
(15.08.2008 в 01:31)
| | MySQL сам знает текущую дату и время ( фукция NOW() ), поэтому старые записи удалить можно всего одной строкой
<?php
$result_2 = mysql_query("DELETE FROM list WHERE date < NOW()");
?>
|
| |
|
|
|
|
|
|
|
для: Yuriev
(15.08.2008 в 02:13)
| | А почему вы мне это адресовали. Вопрос задал автор ??? | |
|
|
|
|
|
|
|
для: mihdan
(15.08.2008 в 02:18)
| | Засем придераться к таким мелочам?
Спасибо щас попробую. | |
|
|
|
|
|
|
|
для: Yuriev
(15.08.2008 в 02:13)
| | Всёравно остаётся таже проблема с временем.
Можно ли задавать параметры комманде NOW()? | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 02:31)
| | Что из себя представляет поле date | |
|
|
|
|
|
|
|
для: mihdan
(15.08.2008 в 02:35)
| | В данный момент есть 2 поля.
Это
date - вид 15.08.2008
time - вид 12.00 | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 02:40)
| | А почему не сделать поле date типа timestamp - ведь так проще буит | |
|
|
|
|
|
|
|
для: mihdan
(15.08.2008 в 02:42)
| | Единственное что я знаю об этом типе, что дата вродибы будет имет такой вид 2008-08-15 12:00
а мне надо 15.08.2008 ... | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 02:45)
| | Всегда можно будет вывести её в нужном формате. Например,
SELECT DATE_FORMAT(`dt`, '%d.%m.%Y') FROM `list`;
|
| |
|
|
|
|
|
|
|
для: BinLaden
(15.08.2008 в 02:47)
| | Спасибо!
Завтра попробую | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 02:31)
| | Почему же Вы удивляетесь, что строки удаляются вне зависимости от того, какое время, когда в SQL-запросе в WHERE нет никаких условий с временем?
Советую перевести все данные из полей date и time в одно какое-то поле с типом DATETIME.
Потом SQL-запрос будет выглядеть так, если я Вас правильно понял:
DELETE FROM `list` WHERE `dt` >= NOW();
|
, где dt - Ваше новое поле.
P.S. На секунды закрыл глаза. | |
|
|
|
|
|
|
|
для: BinLaden
(15.08.2008 в 02:45)
| | А дата может быть любого вида?
Просто мне надо 15.08.2008 12:00 | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 02:48)
| | Записываться она будет не в произвольном формате, конечно.
А вот выводить её можно с помощью DATE_FORMAT(). Возможные спецификаторы для второго аргумента функции тут: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format | |
|
|
|
|
|
|
|
для: BinLaden
(15.08.2008 в 02:51)
| | Ещё раз спасибо!
Завтра буду разбираться. | |
|
|
|
|
|
|
|
для: BinLaden
(15.08.2008 в 02:51)
| | Странно ничего неполучается.
Создал поле dt. Тип DATETIME.
Заполнил
2008-08-15 12:00:0
Поначалу были все нули.
Достаю из базы
$result = mysql_query("SELECT DATE_FORMAT('dt','%d.%m.%Y %H:%i:%S') FROM list");
$myrow = mysql_fetch_array($result);
|
И теперь пытаюсь вывести
И в итоге ничего невыводится. | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 15:19)
| | Вам нужно создать поле не типа DATE, а типа INT. И записывать в него дату в формате UNIX-time, возвращаемое mktime() или time(). | |
|
|
|
|
|
|
|
для: DDK
(15.08.2008 в 15:23)
| | Я щас пыталсь сделать как мне сказал BinLaden.
Я вообще эти mktime() и time() непонимаю. | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 15:24)
| | Вам нужно создать алиас и вместо апострофов (') имена полей обрамлять в косые черты (`):
SELECT DATE_FORMAT(`dt`, '%d.%m.%Y %H:%i:%S') AS `dt_formatted` FROM list
|
А уж потом выводить так: echo $myrow['dt_formatted']; | |
|
|
|
|
|
|
|
для: DDK
(15.08.2008 в 15:23)
| | > Вам нужно создать поле не типа DATE, а типа INT. И записывать в него дату в формате UNIX-time, возвращаемое mktime() или time()
Зачем? | |
|
|
|
|
|
|
|
для: DDK
(15.08.2008 в 15:23)
| | Не нужно чушь говорить: зачем плести сюда РНР когда это чистый SQL.
BinLaden дал 100% рабочий и правильный вариант | |
|
|
|
|
|
|
|
для: mihdan
(15.08.2008 в 16:38)
| | BinLaden
Спасибо. Теперь всё выводиться, но почемуто удаляются все записи.
Делал как Вы писали.
$result_2 = mysql_query("DELETE FROM `list` WHERE `dt` >= NOW();");
|
| |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 19:58)
| | Насколько я понял вам нужны дата и время "теперь", а не >= | |
|
|
|
|
|
|
|
для: mehelson
(15.08.2008 в 21:12)
| | Что то не очень Вас понял. | |
|
|
|
|
|
|
|
для: AxelX
(15.08.2008 в 21:26)
| | Попробуйте =NОW() | |
|
|
|
|
|
|
|
для: mehelson
(15.08.2008 в 21:48)
| | Странно, перезагрузил компьютер и всё заработало, как надо.
Всем, кто помогал спасибо!
Особое спасибо BinLaden.
Надеюсь, что данная тема в форуме поможет ещё комунибудь с такой проблемой. | |
|
|
|