Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> users online 
V
    Опции темы
Shark
Дата 2.6.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Код

$time=time()-60;
mysql_query ("DELETE FROM online WHERE dnt < $time)");


удалятся все записи... где dnt меньше минуты

Это сообщение отредактировал(а) Shark - 2.6.2009, 00:16


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Код

$time=time()-60;
mysql_query ("DELETE FROM online WHERE dnt < $time)");
$userq = mysql_query("SELECT * FROM online WHERE dnt > '".$time."' AND id_user=".$id_user." LIMIT 1");
$array = mysql_fetch_row($userq);
if($array[0] != $id_user)
{
echo "1";
mysql_query("INSERT INTO online (id_user) VALUES ('".$id_user."')");
}
else
{
echo "2";
mysql_query("UPDATE online SET dnt=now() WHERE id_user='".$id_user."'");
}


Он из базы не удаляет запись после того как проходит минута :(

п.с.
Код

mysql_query ("DELETE FROM online WHERE dnt < $time)");

там скобка лишняя(после  $time) или так и надо если надо то почему ? 
Но я пробовал и без скобки всёравно не удаляет из базы запись.

Может не совпадают типы с базой в dnt ? у меня там написано например 2009-06-02 00:23:01

Это сообщение отредактировал(а) fakeman - 2.6.2009, 00:36
PM MAIL   Вверх
Shark
Дата 2.6.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Цитата

 у меня там написано например 2009-06-02 00:23:01

если у тя пишется в формате гггг-мм-дд чч:мм:сс, то конечно не совпадают.. time() - в ней находится кол-во секнуд прошедших с 1 января 1970 года


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Так что тоггда переделать столбец dnt в INT или VARCHAR ? 
PM MAIL   Вверх
Shark
Дата 2.6.2009, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



fakeman, в INT... я вообще стараюсь все числовые функции писать в INT


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Код

$time=time()-60;
mysql_query ("DELETE FROM online WHERE dnt < $time");
$userq = mysql_query("SELECT * FROM online WHERE dnt > '".$time."' AND id_user=".$id_user." LIMIT 1");
$array = mysql_fetch_row($userq);
if($array[0] != $id_user)
{
echo "1";
mysql_query("INSERT INTO online VALUES ('".$id_user."','".time()."')");
}
else
{
echo "2";
mysql_query("UPDATE online SET dnt='".time()."' WHERE id_user='".$id_user."'");
}

При таком коде вроде всё работает но смушает одно. Если пользователь 1 ползает где то по сайту и бац он выходит из браузера то он будет весеть в базе 1 до тех пор пока его кто то да не заменит допустим зайдёт другой пользователь и обновит базу т.е. старый удалиться а новый появиться. Получается1 юзер всегда будет я ко бы онлайн ? 

и как отталкиваясь от id_user( он U_Key) вывести подщёт пользователей онлайн ? 

Код

$res = mysql_query( "SELECT * From online");
$result_array = mysql_fetch_row( $res );
$online = count( $result_array );
echo "<br>".$online;

PM MAIL   Вверх
Shark
Дата 2.6.2009, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Цитата

и как отталкиваясь от id_user( он U_Key) вывести подщёт пользователей онлайн ? 

используй mysql_num_rows()

... если бот зайдет... пользователь удалится

Рекомендую посмотреть FAQ там есть код on-line пользователей


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Shark @  2.6.2009,  01:28 Найти цитируемый пост)
Рекомендую посмотреть FAQ там есть код on-line пользователей 


ДА он помог, спасибо smile (Сколько пользователей на сайте)

Осталась сделать что бы выводить юзеров кто именно онлайн.
У меня 2 таблицы - 1 online 2 users.
Значит надо сделать запрос на выделение id username из users где id = $id_user
закинуть в массив, вывсти.
Примерно я так сделал:
Код

$resul = mysql_query("SELECT id,username FROM users WHERE id = '".$id_user."'");
$arr = mysql_fetch_array($resul);
$username = $arr['username'];
$id = $arr['id'];
do
{
echo "<a href='/phpsite/members.php?id=".$id."'>".$username."</a>";
}
while($arr = mysql_fetch_array($resul));


Но как вы уже поняли выведиться тока 1 юзер нейм. как сделать что бы вывел всех кто есть в таблице online в столбце id_user ?
PM MAIL   Вверх
Shark
Дата 2.6.2009, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



смотри...
при авторизации, ты заносишь пользователя в таблицу online... а потом просто выводишь!

Код

$onlines=mysql_query("SELECT * FROM online");
while($online=mysql_fetch_row($onlines))
           {
                   echo $online[1];
           }


ну это так... набросок
P.S. кстати, в том коде который ты смотрел.. вроде есть часть которая выводит всех, кто он-лайн

Это сообщение отредактировал(а) Shark - 2.6.2009, 07:10


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Shark,  smile  супер, спасибо, получилось smile

Код

$onlines=mysql_query("SELECT * FROM online");
while($online=mysql_fetch_row($onlines))
           {    
        $resul = mysql_query("SELECT id,username FROM users WHERE id = '".$online['0']."'");
        $arr = mysql_fetch_array($resul);
        $username = $arr['username'];
        $id = $arr['id'];
        echo "<a href='/phpsite/members.php?id=".$id."'>".$username."</a><br>";
           }

 smile 
PM MAIL   Вверх
Shark
Дата 2.6.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



fakeman, а зачем ты делаешь сравнение id'ов, а потом вывод???
выводи всех пользователей из таблицы online и все... 
если пользователь удачно авторизовался, то он занесся в таблицу online, все кто в этой таблице, они и есть у тебя в таблице users... поэтому я не вижу смысла данные из таблицы сравнивать с данными другой таблицы...


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Shark, ты об этом ? 
Код

WHERE id = '".$online['0']."'");


Гхмм ну 2 таблицы в одной тока ийд юзера и дата в другой айди, ник нейм, дата рождения.. вообшем всё о юзере.
Ну и схожи эти 2 таблицы тока id по этому делал сравнение что бы вывести ссылку на юзера и его ник нейм.. 

А вот как ты предложил я как то не понемаю.. 


Цитата(Shark @  2.6.2009,  13:56 Найти цитируемый пост)
выводи всех пользователей из таблицы online и все... 

Это будет так как ты писал ранее
Код

$onlines=mysql_query("SELECT * FROM online");
while($online=mysql_fetch_row($onlines))
           {
                   echo $online['0']"<br>";
           }

он выведит все айди пользователей кто в ондайне в столбик.
Пример:
1
6
102
Что бы не выводить пользователем на сайт айдишники  потому и беру из таблицы users ник нейм.. smile

П.с. 
Код

$id = $arr['id'];

можно и не делать
а в выводе просто написать так
Код

echo "<a href='/phpsite/members.php?id=".$online['0']."'>".$username."</a><br>";

походу одно и тоже.

Это сообщение отредактировал(а) fakeman - 2.6.2009, 15:51
PM MAIL   Вверх
Shark
Дата 2.6.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



ааа... я просто думал что ты в online хранишь ник и id пользователя... 
тебе всего-то надо 4 столбца в той таблице
id     |       id_user      |         nick          |             timestamp


тогда и мой вариант будет не плохsmile

в своем варианте я писал так:
Код

echo $online[1];


а как у тебя
Код

echo $online[1]"<br>";

выводится ничего не будет, т.к. после echo $online[1] надо поставить точку, и потом писать "<br>"


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
fakeman
Дата 2.6.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Shark @  2.6.2009,  15:58 Найти цитируемый пост)
echo $online[1];

Ну он тоже не будет работать :Р
у меня табица online такак
id_user      |         dnt        

та что надо   
Код

echo $online['0']."<br>";


Цитата(Shark @  2.6.2009,  15:58 Найти цитируемый пост)
а как у тебя

Я опечатался и забыл точечку. Сорри smile

П.с.
 В таблице users у меня так
id     |      username      |         password          |            realname          |            и так далее... 
PM MAIL   Вверх
Shark
Дата 2.6.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Цитата

Цитата(Shark @  2.6.2009,  15:58 ) 
echo $online[1]; 


Ну он тоже не будет работать :Р
так он будет работать.. и будет выводить время!

ну это твое право писать лишний код.... но я думаю, что если пользователь в онлайне, то он толжен быть и в этой таблице! все равно же он удаляется


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0907 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.