lop_atin
24.06.2013 - 09:30
Здравствуйте, появилась такая проблема: нужно вытащить из БД 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
24.06.2013 - 10:02
в БД в каком формате даты?
если в UNIXSTAMP то
это строка
это число
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
24.06.2013 - 10:12
Цитата (Игорь_Vasinsky @ 24.06.2013 - 10:02) |
в БД в каком формате даты?
если в UNIXSTAMP то
это строка
это число 86400 при арифметических действиях работа происходит между числами, а не числами и строками |
time int(10)
Игорь_Vasinsky
24.06.2013 - 10:28
ну и?
_____________
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
24.06.2013 - 10:34
Цитата (Игорь_Vasinsky @ 24.06.2013 - 10:28) |
ну и? |
Не совсем понял вопроса, в БД у меня время, которое я заношу через time(), то есть вот так оно выглядит: 1372051520
Игорь_Vasinsky
24.06.2013 - 10:41
если в 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
24.06.2013 - 10:56
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
24.06.2013 - 11:17
Цитата (Michael @ 24.06.2013 - 10:56) |
lop_atin, чтобы выбрать 2 последних , выбирать ORDER BY `time` DESC LIMIT 2. А на php уже проверяй. |
смотри, допустим я выбрал две последние записи, а как потом уже их проверить?
Игорь_Vasinsky
24.06.2013 - 11:22
в цикле
_____________
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
24.06.2013 - 11:35
Цитата |
Помогите в это проблеме... |
Зачем создавать проблему, что бы потом её решать?
$time = time();
зачем? в MySQL есть функция NOW() которую можно (и нужно) использовать как при добавлении комментария так и при выборке если это необходимо. В вашем случае при добавлении фиксировать временную метку timestamp. При выборке двух последних комментариев достаточно сортировки по полю временной метки и лимита на 2 строки.
Цитата |
если это время будет меньше 86400 секунд (1 сутки) |
в MySQL есть INTERVAL (даже INTERVAL 1 DAY в вашем случае) она позволит сделать проверку средствами СУРБД и не доставать ненужную информацию из бд и не проверять все это средствами РНР
_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.