[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбор из БД
lop_atin
Здравствуйте, появилась такая проблема: нужно вытащить из БД 2 последних комментария и проверить ихнее время отправления, если это время будет меньше 86400 секунд (1 сутки), то запрещать комментировать.

Попробовал сделать так, но из БД достаются НЕ два последних, а два, которые подходят под запрос.



$time = time();
$result_question = mysql_query("SELECT *
FROM `questions`
WHERE (
$time - time) >= '86400' AND `id` = `$id`
ORDER BY `id` DESC"
,$db);

if(mysql_num_rows($result_question) > 2){
echo 'Вы не можете сегодня комментировать.';
exit();
}


Помогите в это проблеме...
Игорь_Vasinsky
в БД в каком формате даты?

если в UNIXSTAMP то

это строка
Цитата
'86400'

это число
86400


при арифметических действиях работа происходит между числами, а не числами и строками

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
lop_atin
Цитата (Игорь_Vasinsky @ 24.06.2013 - 10:02)
в БД в каком формате даты?

если в UNIXSTAMP то

это строка
Цитата
'86400'

это число
86400


при арифметических действиях работа происходит между числами, а не числами и строками

time int(10)
Игорь_Vasinsky
ну и?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
lop_atin
Цитата (Игорь_Vasinsky @ 24.06.2013 - 10:28)
ну и?

Не совсем понял вопроса, в БД у меня время, которое я заношу через time(), то есть вот так оно выглядит: 1372051520

Игорь_Vasinsky
если в UNIXSTAMP то

это строка
Цитата
'86400'

это число
86400


при арифметических действиях работа происходит между числами, а не числами и строками

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Michael
lop_atin, чтобы выбрать 2 последних , выбирать ORDER BY `time` DESC LIMIT 2. А на php уже проверяй.

_____________
There never was a struggle in the soul of a good man that was not hard
lop_atin
Цитата (Michael @ 24.06.2013 - 10:56)
lop_atin, чтобы выбрать 2 последних , выбирать ORDER BY `time` DESC LIMIT 2. А на php уже проверяй.

смотри, допустим я выбрал две последние записи, а как потом уже их проверить?
Игорь_Vasinsky
в цикле

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
Цитата
Помогите в это проблеме...

Зачем создавать проблему, что бы потом её решать?
$time = time();
зачем? в MySQL есть функция NOW() которую можно (и нужно) использовать как при добавлении комментария так и при выборке если это необходимо. В вашем случае при добавлении фиксировать временную метку timestamp. При выборке двух последних комментариев достаточно сортировки по полю временной метки и лимита на 2 строки.
Цитата
если это время будет меньше 86400 секунд (1 сутки)

в MySQL есть INTERVAL (даже INTERVAL 1 DAY в вашем случае) она позволит сделать проверку средствами СУРБД и не доставать ненужную информацию из бд и не проверять все это средствами РНР

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

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