Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Онлайн или нет
 
 автор: Dez   (22.12.2006 в 21:49)   письмо автору
 
 

Читал много тем здесь, все казалось бы перепробывал, но никак не могу додуматься...
Суть проблемы
Есть таблица с пользователями онлайн
id пользователя | putdate | name
На сайте есть список пользователей, и рядом с каждым пользователем надо вывести онлайн он или нет.
Я делаю так, выводится список пользователей, я сравниваю ник пользователя с никами которые есть в таблице онлайн(если он там есть) все идет через циклы, но онлайн выводит только одного пользователя.

   
 
 автор: AlexelA   (22.12.2006 в 21:56)   письмо автору
 
   для: Dez   (22.12.2006 в 21:49)
 

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

   
 
 автор: Dez   (22.12.2006 в 22:01)   письмо автору
 
   для: AlexelA   (22.12.2006 в 21:56)
 

Сама идея

   
 
 автор: AlexelA   (22.12.2006 в 22:03)   письмо автору
 
   для: Dez   (22.12.2006 в 22:01)
 

Думаю вам подойдет это:
http://www.softtime.ru/scripts/online.php

   
 
 автор: Dez   (22.12.2006 в 22:14)   письмо автору
 
   для: AlexelA   (22.12.2006 в 22:03)
 

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

   
 
 автор: AlexelA   (22.12.2006 в 22:21)   письмо автору
 
   для: Dez   (22.12.2006 в 22:14)
 

Ну а в чем тогда проблема?
Если у вас имеется одна таблица с данными о зарегистрированных пользователях,
вы создаете вторую, согласно скрипта по выше приведенному адресу, и объединяя
простым запросом mysql данные из двух таблиц, получаете искомый результат:
рядом со всеми зарег. пользователями сайта вывести кто онлайн, а кто нет.

   
 
 автор: Trianon   (22.12.2006 в 22:27)   письмо автору
 
   для: AlexelA   (22.12.2006 в 22:21)
 

для этого нужен не простой запрос, а внешнее соединение.

SELECT ... FROM users LEFT JOIN online ON users.id = online.id

либо действовать именно так, как описал автор в начальном сообщении.

   
 
 автор: AlexelA   (22.12.2006 в 22:40)   письмо автору
 
   для: Trianon   (22.12.2006 в 22:27)
 

для этого нужен не простой запрос, а внешнее соединение
Не надо простое превращать в сложное:

select * from users,online where users.id = online.id;

   
 
 автор: Trianon   (22.12.2006 в 22:57)   письмо автору
 
   для: AlexelA   (22.12.2006 в 22:40)
 

Не надо, извините, чушь пороть.
>select * from users,online where users.id = online.id;
В результате Вашего селекта (тоже не самого простого - запятая по сути тот же JOIN) будет выведен не весь список, а только тех, кто онлайн. А всё потому, что соединение внутреннее.

   
 
 автор: AlexelA   (22.12.2006 в 23:13)   письмо автору
 
   для: Trianon   (22.12.2006 в 22:57)
 

Согласен, с запросом ошибся и вывел только online
Да вопрос-то был не о запросе, а о самой идее.

   
 
 автор: Dez   (22.12.2006 в 23:00)   письмо автору
 
   для: AlexelA   (22.12.2006 в 22:40)
 

Эх... что то я совсем не могу понять,

<?
$query
="SELECT * FROM `online`";
$result=mysql_query($query);
if(
dbrows($result)>0)  

while(
$onlinedbarray($result)) 
 {

}
}
$query="SELECT * FROM `users` WHERE  ORDER by id DESC";
$result=mysql_query($query);
if(
dbrows($result)>0)  

echo 
"<table><tr><td>Имя<td>Где?";
 while(
$users dbarray($result)) 
 {
echo 
'<tr><td>'.$users['name'].'<td>'.$status;
}
}
?>

Непонимаю... простите :)

   
 
 автор: Dez   (22.12.2006 в 23:05)   письмо автору
 
   для: Trianon   (22.12.2006 в 22:27)
 

>для этого нужен не простой запрос, а внешнее соединение.
>

>SELECT ... FROM users LEFT JOIN online ON users.id = online.id
>

>либо действовать именно так, как описал автор в начальном сообщении.
Можно поподробнее пожайлуста...

   
 
 автор: Trianon   (23.12.2006 в 09:33)   письмо автору
 
   для: Dez   (22.12.2006 в 23:05)
 

Если Вы приведете структуры таблиц, можно будет и поподробнее.

   
 
 автор: Dez   (23.12.2006 в 12:56)   письмо автору
 
   для: Trianon   (23.12.2006 в 09:33)
 

Структура таблицы online в первом посте, а user:
id | login | name | pass | email | icq

   
 
 автор: Trianon   (23.12.2006 в 13:20)   письмо автору
 
   для: Dez   (23.12.2006 в 12:56)
 

<?
$sql 
"SELECT users. * , online.id as status
   FROM users LEFT JOIN online ON users.id = online.id"
;

$res mysql_query($sql) or die(mysql_error());

while(
$row mysql_fetch_assoc($res))
{
  
$row['fid']=is_null($row['fid']) ? 'offline' 'online';

  
print_r($row);   echo "<br>\r\n"// это можно заменить на <tr><td>....
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования