[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пользователь online
Rio-Dezz
Как можно сделать чтобы у пользователь (который зарегистрирован на сайте) на личной странице (и когда кто нибудь заходит на его страницу) было написано online?



Спустя 31 минута, 52 секунды (4.04.2010 - 14:21) vagrand написал(а):
Хех, каждый 2-й новичек создает похожую тему на форуме не утруждая себя поиском. Ищите и найдете, таких тем лично я видел уже 4-е штуки за посдледние 2-а месяца

Спустя 6 часов, 23 минуты, 31 секунда (4.04.2010 - 20:45) ИНСИ написал(а):
Примерно так:

1. Создаешь таблицу `userOnline`
2. Когда пользователь заходит, то в таблицу `userOnline` заносишь новую запись о пользователе
3. Далее, чтобы проверить кто онлайн, проверяешь эту таблицу.
4. Ставишь в страницу, которая всегда обновляется: Запрос, проверяет, если запись была создана более 20 минут назад, то удаляешь, если нет, то обновляешь запись пользователя, который обновил.

что-то в этом роде

Спустя 8 минут, 2 секунды (4.04.2010 - 20:53) Rio-Dezz написал(а):
welbox2 Спасибо. Можете подсказать как этот скрипт написать?

Спустя 1 час, 24 минуты, 57 секунд (4.04.2010 - 22:18) ИНСИ написал(а):
Rio-Dezz что-то в этом роде, но изменить еще можно, имею в виду привязаться еще и куки сюда. Я сделал просто для примера, чтобы тебе было от чего отталкиваться хотя и этот код будет работать smile.gif



//выводим пользователей, которые на сайте
$rowUsers = mysql_query("
SELECT *
FROM `usersOnline`
ORDER BY `id` DESC
"
);

if(mysql_num_rows($rowUsers) > 0) {

while($rowUsers = mysql_fetch_array($rowUsers)) {
// выводишь что надо тебе
}

}
else {
echo 'На сайте никого нет sad.gif';
}

// обновляешь данные пользователя или заводишь в БД новую запись
$rowMe = mysql_query("
SELECT *
FROM `usersOnline`
WHERE `ipUser` = '
{$_SERVER['REMOTE_ADDR']}'
"
);

if(mysql_num_rows($rowMe) > 0) {

mysql_query("
UPDATE `usersOnline`
SET `date` = NOW()
WHERE `ipUser` = '
{$_SERVER['REMOTE_ADDR']}'
"
);

} else {
$rowMe = mysql_query("
INSERT
INTO `usersOnline`(`date`,`ipUser`)
VALUES(NOW(),'
{$_SERVER['REMOTE_ADDR']}')
"
);
}

// удаляем пользователей, которые не были активны в течении 20 минут
mysql_query("
DELETE
FROM `usersOnline`
WHERE `date` < NOW() - INTERVAL 20 MINUTE
"
);


Спустя 1 час, 43 минуты, 31 секунда (5.04.2010 - 00:01) Rio-Dezz написал(а):
Мне Apache показывает ошибку на этих строках :

if(mysql_num_rows($rowUsers) > 0) {


if(mysql_num_rows($rowMe) > 0) {


С чем связанно?

Спустя 9 часов, 2 минуты, 42 секунды (5.04.2010 - 09:04) vagrand написал(а):
Цитата
Мне Apache показывает ошибку


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

Спустя 2 часа, 27 минут, 41 секунда (5.04.2010 - 11:32) Rio-Dezz написал(а):
ну да.

вот таблица

user posted image

Спустя 37 минут, 16 секунд (5.04.2010 - 12:09) ИНСИ написал(а):
Rio-Dezz замени этот кусок и покажи что, покажет:
$rowUsers = mysql_query("
SELECT *
FROM `usersOnline`
ORDER BY `id` DESC
"
) or die(mysql_error());


Спустя 5 минут, 28 секунд (5.04.2010 - 12:14) ИНСИ написал(а):
Rio-Dezz названия таблиц у тебя соответствую? Ты дал названия полей, посмотри названия таблиц.

Спустя 6 минут, 15 секунд (5.04.2010 - 12:21) Rio-Dezz написал(а):
Спасибо помогло, сначала показал что на сайте никого нет, а потом ошибку на 20 линии.

while($rowUsers = mysql_fetch_array($rowUsers)) {


и написал

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in test.php on line 20


вот полный код страницы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>
Testing</title>
</head>
<body>
<?php

include ('inc/db.php');

//выводим пользователей, которые на сайте
$rowUsers = mysql_query("
SELECT *
FROM `useronline`
ORDER BY `id` DESC
"
) or die(mysql_error());

if(mysql_num_rows($rowUsers) > 0) {

while($rowUsers = mysql_fetch_array($rowUsers)) {
// выводишь что надо тебе
}

}
else {
echo 'На сайте никого нет ';
}

// обновляешь данные пользователя или заводишь в БД новую запись
$rowMe = mysql_query("
SELECT *
FROM `useronline`
WHERE `ipUser` = '
{$_SERVER['REMOTE_ADDR']}'
"
);

if(mysql_num_rows($rowMe) > 0) {

mysql_query("
UPDATE `useronline`
SET `date` = NOW()
WHERE `ipUser` = '
{$_SERVER['REMOTE_ADDR']}'
"
);

} else {
$rowMe = mysql_query("
INSERT
INTO `useronline`(`date`,`ipUser`)
VALUES(NOW(),'
{$_SERVER['REMOTE_ADDR']}')
"
);
}

// удаляем пользователей, которые не были активны в течении 20 минут
mysql_query("
DELETE
FROM `useronline`
WHERE `date` < NOW() - INTERVAL 20 MINUTE
"
);

?>
</body>
</html>


Спустя 27 минут, 54 секунды (5.04.2010 - 12:49) ИНСИ написал(а):
вот это:
while($rowUsers = mysql_fetch_array($rowUsers)) {


замени на:
while($listUsers = mysql_fetch_array($rowUsers)) {



Спустя 3 минуты, 56 секунд (5.04.2010 - 12:53) Rio-Dezz написал(а):
Работает.

А можно количество пользователей вывести как нибудь?

Спустя 7 минут, 22 секунды (5.04.2010 - 13:00) ИНСИ написал(а):
Rio-Dezz примерно так можно:
        $result = mysql_query("SELECT COUNT(id) FROM `useronline` ");
$temp = mysql_fetch_array($result);
$count = $temp[0];

echo $count;


Спустя 15 минут, 45 секунд (5.04.2010 - 13:16) Rio-Dezz написал(а):
welbox2, огромное СПАСИБО!!!

Спустя 9 минут, 28 секунд (5.04.2010 - 13:25) ИНСИ написал(а):
Rio-Dezz всегда пожалуйста, если что, пиши еще smile.gif


_____________
ruseller0@yandex.ru
Быстрый ответ:

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