SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.07.2008 17:27:21

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Ищу способ чтобы показать друзей те кто онлайн

Есть 3 таблицы

1 users - Данные о юзере -при регистрации
2 session - id сессии , время входа последнего , и id самого usera
3 friend  - friend_id - айди друга, user_id - айди узера которы пригласил его , и дата приглашения

Возможно както ли показать  кто и твоих друзей online в данный момент

прототит как на одноклассниках - чтобы юзер 1 защел и увидел Всех друзей и из этих всех показать кто онлайн

Спасибо огромное

Код:

function myfriends($id){

$query = "SELECT mc_surname, mc_name, IF(friend_id,1,0) AS is_online FROM session LEFT JOIN friend ON (session.users = friend.friend_id)  LEFT JOIN mc_users ON (session.users = mc_users.id) WHERE session.users <> $id";


$friends = "Friends currently online: "; 
$others = "Others online: "; 
$result = mysql_query($query) or die ('asd');
//$online = mysql_fetch_assoc($result);



while ($online = mysql_fetch_assoc($result))
{ 
 if ($online['is_online']) 
 { 
$friends .= $online['mc_name'] . ", "; 

 } 
 else 
 { 
$others .= $online['mc_name'] . ", "; 
 } 
} 


return  $friends. " ". $others;

}

Вот мой запрос тоесть когда я захожу юзером 1 -то мне показывает всех кто онлайн потом когда захожу юзером 2 то показывать недолжно нечё так как у него нет друга - но скрипт всеравно показывает Ж(

Неактивен

 

#2 20.07.2008 20:15:05

dmiceman
Участник
Зарегистрирован: 20.07.2008
Сообщений: 2

Re: Ищу способ чтобы показать друзей те кто онлайн

тебе явно не надо выбирать mc_surname и mc_name текущего юзера (session.users = mc_users.id). наверное, все-таки, надо выбирать значения, связанные с friend.friend_id.

Неактивен

 

#3 20.07.2008 21:06:15

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

Простименя пожалуйста но я не очень понял.... о_О обясните логику как это вооюще делается... спасибо всем

Неактивен

 

#4 21.07.2008 01:10:41

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

Товаришчи направте пожалуйста

Неактивен

 

#5 21.07.2008 06:35:18

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Ищу способ чтобы показать друзей те кто онлайн

Необходимо модифицировать запрос:

$query = "SELECT mc_surname, mc_name, IF(friend_id,1,0) AS is_online FROM session LEFT JOIN friend ON (session.users = friend.friend_id)  LEFT JOIN mc_users ON (session.users = mc_users.id) WHERE session.users <> $id";

Сейчас он построен странно - в нем нет условия WHERE для выбора друзей пользователя именно с заданным id. Условие, которое приведено, кажется призвано не отображать самого себя как собственного друга. Поясните назначение таблиц в запросе

Неактивен

 

#6 21.07.2008 12:58:50

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

Вот таблицы..

1 mc_users - Данные о юзере - при регистрации ( id.  пароль маил и.т.д )

2 session - id сессии , время последнего  входа  , и id самого usera который зашёл - при входе записывается

3 friend  - friend_id - айди друга, user_id - айди узера которы пригласил его , и дата приглашения

Вот вроде нечё не забыл.... Спасибо


Уважаемые знатоки -  всё что нужно ето вывести всех моих друзей и показать статус их,  онлайн или нет -- пожалуйста направте!

Отредактированно Борис (21.07.2008 18:16:53)

Неактивен

 

#7 21.07.2008 13:01:40

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

rgbeast написал:

Необходимо модифицировать запрос:

$query = "SELECT mc_surname, mc_name, IF(friend_id,1,0) AS is_online FROM session LEFT JOIN friend ON (session.users = friend.friend_id)  LEFT JOIN mc_users ON (session.users = mc_users.id) WHERE session.users <> $id";

Сейчас он построен странно - в нем нет условия WHERE для выбора друзей пользователя именно с заданным id. Условие, которое приведено, кажется призвано не отображать самого себя как собственного друга. Поясните назначение таблиц в запросе

Да совершенно верно я может гдето сглупил -- поправте пожалуйста!

Неактивен

 

#8 21.07.2008 19:39:46

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Ищу способ чтобы показать друзей те кто онлайн

должен быть примерно такой запрос
$query = "SELECT mc_surname, mc_name, IF(session.users,1,0) AS is_online FROM friend LEFT JOIN session ON (session.users = friend.friend_id) LEFT JOIN mc_users ON (friend.friend_id = mc_users.id) WHERE friend.id='$id'";

Неактивен

 

#9 21.07.2008 19:52:23

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

Спасибо - попробую отпишу но всёже я склоняюсь что

$query = "SELECT mc_surname, mc_name, IF(session.users,1,0) AS is_online FROM friend LEFT JOIN session ON (session.users = friend.friend_id) LEFT JOIN mc_users ON (friend.friend_id = mc_users.id) WHERE friend.id='$id'"; 

WHERE friend.id='$id'"; - может сюда поставить WHERE user_id='$id'";  tak kak  $id берётся из Sessi  тоесь я зашёл мне присвоили id = 1 и мне показывается мои друзья .


Таблица friend:

-----------------------------------------------
friend_id     |    user_id     | date_add    |
-----------------------------------------------     
      3          |        1          | 12.07.2008 |
-----------------------------------------------
      6          |        1          | 12.07.2008 |
-----------------------------------------------

Таблица session:

----------------------------------------------------------------------
session_id                      |   enter_data           |    user       |      user - это id vhoda  --- to 4to ia vishe pisal
----------------------------------------------------------------------
df765df7g5d76fd5gasd7f  | 12.04.2008            |       1         |
----------------------------------------------------------------------
df765df7g5d76fd5gasd7f  | 12.04.2008            |       10       |
----------------------------------------------------------------------
df765df7g5d76fd5gasd7f  | 12.04.2008            |       6         |
----------------------------------------------------------------------


Таблица mc_users:
--------------------------------------------------------------------------------------------------------------
id auto_inrement             |   mc_name          |    mc_surname      |    mc_email   | mc_pass  |           id auto_inrement   -- sovpadaet s tablitsei session -user i tabli
--------------------------------------------------------------------------------------------------------------
1                                    |  Vasia                 |  Pupkin                                                                                                    tsei friend - user_id
--------------------------------------------------------------------------------------------------------------
2                                    |  Jora                  |  Mashin


vot kak

Отредактированно Борис (21.07.2008 20:06:05)

Неактивен

 

#10 21.07.2008 21:53:53

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

Спасибо вроде получилось!

Ура!

Неактивен

 

#11 22.07.2008 15:55:45

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Ищу способ чтобы показать друзей те кто онлайн

Я извеняюсь может вопрос не по теме -  но как вывести данные из базы в таком виде HTML

4 колонки

-----------------------------------------------------------------------------------
|     зпись 1       |      зпись 2      |     зпись 3         |       зпись 4         | 
-----------------------------------------------------------------------------------
|     зпись 5       |      зпись 6      |     зпись 7         |       зпись 8         | 
-----------------------------------------------------------------------------------
|     зпись 9       |      зпись 10    |     зпись 11        |       зпись 12       |   
-----------------------------------------------------------------------------------
|     зпись 13       |      зпись 14     |     зпись 15         |       зпись 4     |   
-----------------------------------------------------------------------------------



$result = mysql_query($query) or die ('asd');

$others . ="<tr>";

while ($online = mysql_fetch_assoc($result))
{
if ($online['is_online'])
{
$others .= "<td>".$online['mc_name'] . "</td> ";

}
else
{
$others .= "<td>".$online['mc_name'] . "</td> ";
}
$others . ="</tr>";
}


незнаю может цикл for нужен для колонок токак незнаю куда и как ....

Направте пожалуйста....


for($i=1; $i<=100; $i=$i+4)
     {
     echo '<tr>';
     
     for($tr=$i; $tr<($i+4); $tr++)
     {
     if(rand(0,1)){
     echo '<td>'.$tr.'online</td>';
     }else{
     echo '<td>'.$tr.'</td>';
    
     }
     }
     echo '</tr>';
     
     }

Вот ещё то что надо но куда сдесть поставить  mysql_fetch_assoc($result)????  tam gde 100 sootvetsvetto ia budu shitati polia

Отредактированно Борис (22.07.2008 16:54:30)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson