|
|
|
| Здравствуйте.
нужна помощь в создании скриптика нбольшого..
в общем алгоритм следующий:
Если время запуска скрипта больше двух часов относительно времени указанного в таблице то ....
иначе...
вот этот кусочек сравнения времени и не могу сделать.помогите пожалуйста кто чем может :) | |
|
|
|
|
|
|
|
для: 10100100
(11.08.2007 в 19:54)
| |
if(mysql_result(mysql_query("
SELECT NOW() > dttm + INTERVAL 2 HOUR FROM tbl WHERE id = $id
"), 0)
то() ;
else
иначе();
|
| |
|
|
|
|
|
|
|
для: Trianon
(11.08.2007 в 20:44)
| | спасибо - кажется понял. | |
|
|
|
|
|
|
|
для: Trianon
(11.08.2007 в 20:44)
| | у меня вопросик возник DTTM - это поле с которым мы сравниваем или фактическое значение??? ну тоетсь переменная?
если поле - то у меня почему то не работает - заменил на своё поле и всёравно...
кстати возможно дело в том что я ошибся при написании кода - немного переделал Ваше.
во тчто получилось:
$query10 = "SELECT NOW() > time + INTERVAL 1 HOUR FROM cms_comments WHERE id_comments = '".$id_comments."'";
$res10 = mysql_query($query10);
|
| |
|
|
|
|
|
|
|
для: 10100100
(12.08.2007 в 16:50)
| | dttm - это поле с меткой времени.
Сам запрос исполняется корректно?
какого типа поле `time`?
Имена полей, совпадающие по написанию с ключевыми словами языка, следует брать в `бэктики`.
Традиционно в SQL имена объектов пользователя и ключевые слова языка набираются в разном регистре, чтобы легче было читать код. | |
|
|
|
|
|
|
|
для: Trianon
(12.08.2007 в 18:09)
| | time - типа datetime
а к чем у Вы сказали про бэктики?
не зню корректно ли совершается запрос, к сожалению не совсем понимаю какие данные должны быть видны.... но вот NOW() допустим не меняется а так и отаётся надписью... | |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 08:18)
| | >time - типа datetime
>а к чем у Вы сказали про бэктики?
К тому что есть такой mysql-тип данных TIME, и соответственно есть такое ключевое слово в языке.
И к тому что не смотря на вышесказанное, у Вас бэктики вокруг имени столбика time не стояли.
>не зню корректно ли совершается запрос, к сожалению не совсем понимаю какие данные должны быть видны.... но вот NOW() допустим не меняется а так и отаётся надписью...
В таких ситуациях имеет смысл расписать запрос подробно, как в хорошем учебнике.
<?
$query10 = "SELECT NOW() > `time` + INTERVAL 1 HOUR FROM cms_comments WHERE id_comments = " . intval($id_comments);
$res10 = mysql_query($query10);
echo "SQL: <b>$query10</b><br>";
if(!$res10) echo mysql_error();
else
{
$rows = mysql_num_rows($res10);
echo "Number of rows found: $rows<br>";
if($rows)
{
echo "==<br>";
while($row = mysql_fetch_row($res10))
echo $row[0]."<br>";
echo "==<br>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 09:49)
| | Извините за тупость :( спасибо за помощь. | |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 10:48)
| | получилось? | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 11:02)
| | как ни странно нет - не получилось. ситуация следующая:
есть комментарии с ID и дэйттаймом, я делаю выбору которую написали Вы, с интервалом и выделяю количество найденых полей - он мне в любом случае выдаёт значение равное единице, даже если столько времени не прошло... сдаётся мне что я где т оснвоа протупил :(.
посмотрите пожалуйста этот участок кода:
<?php
$query10 = "SELECT NOW() > 'time' + INTERVAL 1 HOUR FROM cms_comments WHERE id_comments = '".intval($id_comments)."'";
$res10 = mysql_query($query10);
$result10 = mysql_num_rows($res10);
echo "$result10";
if ($result10 == 0)
{$hour = "1";}
else {$hour = "0";}
echo "$hour";
?>
|
| |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 11:15)
| | Я убрал апострофы вокруг числа. Намеренно убрал. Они нарушают семантику.
Вы влудили их заново. Зачем?
Проблема, конечно, не в этом. Но просто интересно, как Вы рассуждаете.
UPD.
Зачем Вы поставили апострофы вместо бэктиков вокруг имени поля?
Это скорее всего Ваша основная ошибка. | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 11:31)
| | чёрт - действительно - не внимательность :(
но проблема остаётся - Вы не знаете в чём может быть дело? | |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 11:41)
| | Показывайте дамп таблицы. Структуру и фрагмент данных. Гадать смысла нет. | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 11:44)
| |
--
-- Структура таблицы `cms_comments`
--
CREATE TABLE `cms_comments` (
`id_comments` int(11) NOT NULL auto_increment,
`id_news` tinytext,
`name` tinytext,
`comment` text,
`time` datetime default NULL,
PRIMARY KEY (`id_comments`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;
--
-- Дамп данных таблицы `cms_comments`
--
INSERT INTO `cms_comments` VALUES (3, '54', 'user1', 'А типа я вот такой не бот ни разу и типа чилавег... :)', '2007-08-12 20:32:48');
INSERT INTO `cms_comments` VALUES (2, '54', 'user2', '1\r\n1\r\n1\r\n1\r\n1\r\n1\r\n1\r\n1\r\n1\r\n2\r\n', '2007-08-11 23:38:30');
INSERT INTO `cms_comments` VALUES (5, '54', 'user1', 'проверка', '2007-08-13 15:52:32');
|
| |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 11:53)
| | У меня оба моих скрипта (11.08.2007 в 20:44) и (13.08.2007 в 09:49) ? | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 12:08)
| | извините - не понял вопроса, что значит "у меня оба моих скрипта?" ? | |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 13:54)
| | Прошу прощения. Обрывок ушел.
У меня на машине с Вашей таблицей оба отмеченных скрипта четко показывают две старых и одну новую запись. | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 14:32)
| | н да -у менгя так и есть, но вот ...... а стоп - тоетсь в одном из трёх случаев значение $hour принимает 1??? | |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 15:09)
| | Утром так и было.
Тогда запись еще не успела устареть по условию.. | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 19:34)
| | блин - не понимаю... у меня когда ещё запись неустаревшая была - всё ранво не работало :(( | |
|
|
|
|
|
|
|
для: 10100100
(13.08.2007 в 20:05)
| |
$id_comments = 5;
if(mysql_result(mysql_query("
SELECT NOW() > `time` + INTERVAL 2 HOUR FROM cms_comments WHERE id_comments = $id_comments
"), 0))
echo "old";
else
echo "new";
echo "<hr>";
|
PS. Безо всякого удовольствия. | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2007 в 20:36)
| | я понимаю что без удовольствия и понимаю что надоел.
н почему мои варианты скриптов не работали? | |
|
|
|
|
|
|
|
для: 10100100
(14.08.2007 в 03:59)
| | Потому что они содержали ошибки.
Одной из последних ошибок было то, что Вы оценивали количество строк в результате, а не содержимое поля в строке.
Количество строк - единица, если такой коммент есть, независимо от того, старый он или новый. И ноль - если такого коммента нет. Ни старого нет, ни нового.
Содержимое поля (признак устаревания коммента) достигается с помощью функции mysql_result(), применение которой в моем примере Вы определенно игнорировали. | |
|
|
|