Небольшие вопросы по PHP

  • Автор темы Автор темы LONGMAN
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
LONGMAN
Как определить и где хранить `time` сегодня и `time` вчера?
там же. где ты и хранишь для крона.
Как определить что уже настало "сегодня"?
если последнее посещение было "вчера" - значит уже настало "сегодня".
 
zerkms
Если юзер был онлайн когда настало 00:00? Что потом? Или я не так понял? Как я понял алгоритм таков: зашёл юзер, если это сегодня его первый визит то обнулим поле `daytime` и начинаем отчёт с начала. Но беда в том что если юзер вообше не зайдёт то время останется из последного визита.

-~{}~ 20.03.09 14:05:

x-yuri
Есть поле `alltime` где хранил время целиком (на каждой странице это поле обновляется + время в секундах) и есть такое же поле `daytime` с исключением того что каждый 00:00 я обновлял это поле (SET `daytime` = '0')

-~{}~ 20.03.09 14:08:

Кстати есть идея :-) Если у кого небудь есть стабильный хостинг, желание и вазможность помочь мне, то сделайте с помошью вашего крона что бы откривалось на моём хосте один файл каждый 00:00 GMT +4.00 :-)
 
LONGMAN
У этого форума есть недостаток. Здесь почти нет людей, у которых детство в заднице играет. Я могу оценить полет фантазии последнего твоего предложения, но не могу также не оценить профессионального уродства.
Давай так. Для игр найди другой форум. А здесь или нормально - или никак. Идет?

-~{}~ 20.03.09 13:46:

Есть поле `alltime` где хранил время целиком
тебя спрашивали не как хранил, а как определял.
поле обновляется по какому алгоритму?
 
*****,
Извините если что-то не так сказал.. Хотя я не вижу никакого уродство в вышенаписанном..
Ладно, продолжим.. На счёт поле, он обновляется на каждой странице:
PHP:
$time = time() - $_SESSION['time'];
sql -> UPDATE `users` SET `alltime` = `alltime` + $time WHERE `id` = $id;
$_SESSION['time'] = time();
 
Да? А как выяснить сколько времени провёл юзер за сегодня?
 
*****
Ладно, забыл про это..
Сейчас возник другой вопрос. У меня есть таблица новости где храню ID юзера (кто добавил новость). Как мне узнать ник юзера без использования запроса в цикле? Сейчась делаю так:
PHP:
$news = mysql_query("SELECT * FROM `news`");
while($row = mysql_fetch_array($news))
{
$news = mysql_query("SELECT `username` FROM `users` WHERE `id`='".$row['id']."'");
//И здес новость - юзер
}
Как вы обычно решаете эту задачу?
 
не надо забывать. надо думать.
если показывать самому юзеру, то он сначала зайдет, то есть, запись уже будет.
если показывать всем, то раз у ж у тебя такая бирюлька, сколько времени провел на сайте, то другая аналогичная - когда последний раз был - и подавно должна быть.
 
*****
Проблема в том что время должен показиватся всем, не смотря того тот юзер находится онлайн или оффлайн.. Я подумал и конечно можно сделать это, но вопрос в том, стоит ли так сделать? Думаю не стоит без крона этого делать, уменшится производительность..
На счёт БД запросв в цикле, это приемлимо? Или лучше сделать с INNER JOIN? Какой из них создаст меншую нагрузку на БД?
 
еще раз повторяю. крон не нужен.
нужно поле когда в последний раз был на сайте. И ВСЁ.
Тебе ответили уже про INNER JOIN. Что неясно?
 
Пойду изучаю синтаксис INNER JOIN и на счёт того вопроса тоже подумаю

-~{}~ 23.03.09 18:04:

*****
Так нормально?
PHP:
sql=>SELECT * FROM `news` INNER JOIN `users` WHERE `news.userID`=`users.id`"
 
zerkms
Значит запрос нормаьный, только нужно сменить WHERE на ON?

-~{}~ 23.03.09 19:02:

И чем лучше запрос с JOIN'ом запроса:
PHP:
sql=>"SELECT `news`.*,`users`.`name` FROM `news`,`users` WHERE `news`.`userID`=`users`.`id`"
То есть какой будет оптимальнее?
 
INNER JOIN вытаскивает из обоих таблиц данные соответствующие друг другу...получается что твой запрос соответствует запросу с INNER JOIN, но вот только синтаксис запроса с iNNER JOIN смотрится намного приятнее...
 
Всёравно приходится использовать один запрос в цикле :-( Подсчёт комментариев на новость где `news`.`id` = `news_com`.`newsID`. Никак не смог впыхнуть всё это в один запрос
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху