Спустя 50 минут, 14 секунд (9.01.2011 - 13:56) 2038 написал(а):
Каждому сообщению давать свой id.
Создать поле user_id, которое по умолчанию = ""
Если сообщение приватное - добавить номер пользователя в user_id.
Создать поле user_id, которое по умолчанию = ""
Если сообщение приватное - добавить номер пользователя в user_id.
Спустя 55 секунд (9.01.2011 - 13:56) 2038 написал(а):
Ну а потом соответственно
SELECT id FROM table WHERE user_id=[id пользователя]
Кстати раздел форума вы выбрали неправильный.
SELECT id FROM table WHERE user_id=[id пользователя]
Кстати раздел форума вы выбрали неправильный.
Спустя 2 часа, 10 минут, 59 секунд (9.01.2011 - 16:07) Reflexion написал(а):
тогда получатель не увидит кому ещё были отосланы эти сообщения
Спустя 1 час, 52 минуты, 8 секунд (9.01.2011 - 18:00) sergeiss написал(а):
Надо, наверное, создать как минимум пару таблиц. В первой находятся id и описания юзеров, во второй находятся связи этих юзеров. Типа такого:
id_main | id_satellite
Тогда ты всегда выберешь всех юзеров, зависимых (связанных) с определенным, точно также, как и всех юзеров, у которых зависимый (id_satellite) находится в зависимости. И тут же можешь всегда легко и просто редактировать эти взаимосвязи. А описания юзеров в основной таблице при этом не трогаются.
PS. Заодно тему перенес в другой раздел.
id_main | id_satellite
Тогда ты всегда выберешь всех юзеров, зависимых (связанных) с определенным, точно также, как и всех юзеров, у которых зависимый (id_satellite) находится в зависимости. И тут же можешь всегда легко и просто редактировать эти взаимосвязи. А описания юзеров в основной таблице при этом не трогаются.
PS. Заодно тему перенес в другой раздел.
Спустя 3 часа, 36 минут, 16 секунд (9.01.2011 - 21:36) Игорь_Vasinsky написал(а):
следущая тема будет - Вынос из бд
Спустя 41 минута, 29 секунд (9.01.2011 - 22:17) Reflexion написал(а):
скажите пжл что вы имеете ввиду под "связыванием", "редактированием взаимосвязей"? Как это сделать и что это даст?
Спустя 12 минут, 54 секунды (9.01.2011 - 22:30) sergeiss написал(а):
Цитата (Reflexion @ 9.01.2011 - 23:17) |
скажите пжл что вы имеете ввиду под "связыванием", "редактированием взаимосвязей"? Как это сделать и что это даст? |
Объясняю...
Вот в одной таблице ты создал данные: айди пользователя, какие-то его данные. Одна строка - один пользователь.
Затем тебе надо указать, какой пользователь с каким другим взаимодействует (в частности, кому надо будет доставлять сообщения от него). Для этого и нужна вторая таблица.
Примерно так...
Первая таблица
id | name
1 | Вася
2 | Петя
3 | Серёга
5 | Михан
6 | Санёк
7 | Игорь
А во второй таблице укажем взаимосвязи между ними ("свяжем" их):
id_main | id_satellite
1 | 2
1 | 3
1 | 7
2 | 1
2 | 6
То есть, используем айди из первой таблицы для указания взаимосвязей между юзерами. Если добавить еще третий параметр, "тип связи", то можно во второй таблице вообще много чего хранить

Так понятнее?
Спустя 6 минут, 26 секунд (9.01.2011 - 22:37) Reflexion написал(а):
думал это по другому называется, я думал можно как-то именно связывать таблицы, тоесть связка имеется ввиду Select main.* FROM main_table, chat_table WHERE main_table.id_main=chat_table.id_satellite... Но как при помощи таких связей сделать приват сразу нескольким пользователям?
Идея же в том чтобы отправлять приват сразу 1-N пользователям
Идея же в том чтобы отправлять приват сразу 1-N пользователям
Спустя 5 минут, 31 секунда (9.01.2011 - 22:42) sergeiss написал(а):
Дык... Ты потом и свяжешь их в запросе, так, как тебе надо. Вариантов много всяких можно придумать.
Я написал именно про структуру таблиц, которые потом ты уже будешь использовать так, как тебе надо.
Я написал именно про структуру таблиц, которые потом ты уже будешь использовать так, как тебе надо.
Спустя 13 минут, 26 секунд (9.01.2011 - 22:56) Reflexion написал(а):
У меня таким образом хватает только на то чтобы занести в основную БД всю информацию о сообщении а в другую для кадого получателя заносить ид получателя и ид сообщения. Тоесть при отправки сообщения будет нечто такое
INSERT INTO messages (id,message,date,sender_id) values (1,text,1232348289,1)
INSERT INTO messages_stats (message_id, recipient_id) values (1,4);
INSERT INTO messages_stats (message_id, recipient_id) values (1,5);
При выводе в чат получится
$data=SELECT * FROM messages WHERE date>(time()-300);
if($data['sender_id']=$id){echo "";}
else
{ $tmp = SELECT messages .* FROM messages,messages_stats WHERE messages_stats.recipient_id=$id AND messages_stats.id_massage=messages.id_message AND messages.date>(time()-300);
if(mysql_nuw_rows($tmp)) {$tmp=mysql_fetch_assoc($tmp); echo ""}
}
Если это то как как увидеть то что посылалось это не только не тебе а ещё и другим пользователям? Тоесть ты увидишь что это сообщение адрессовано тебе, но не узнаешь кому ещё
INSERT INTO messages (id,message,date,sender_id) values (1,text,1232348289,1)
INSERT INTO messages_stats (message_id, recipient_id) values (1,4);
INSERT INTO messages_stats (message_id, recipient_id) values (1,5);
При выводе в чат получится
$data=SELECT * FROM messages WHERE date>(time()-300);
if($data['sender_id']=$id){echo "";}
else
{ $tmp = SELECT messages .* FROM messages,messages_stats WHERE messages_stats.recipient_id=$id AND messages_stats.id_massage=messages.id_message AND messages.date>(time()-300);
if(mysql_nuw_rows($tmp)) {$tmp=mysql_fetch_assoc($tmp); echo ""}
}
Если это то как как увидеть то что посылалось это не только не тебе а ещё и другим пользователям? Тоесть ты увидишь что это сообщение адрессовано тебе, но не узнаешь кому ещё
Спустя 1 час, 21 минута, 58 секунд (10.01.2011 - 00:18) sergeiss написал(а):
У меня встречное предложение... Точнее, их несколько :)
1. Используй тэги оформления кодов, чтобы они были с подсветкой (это кнопки PHP, SQL, HTML и другие справа над окном редактирования текста)
2. Когда пишешь запрос, то пиши, что ты хочешь им получить, с какой целью он написан. Чтобы не было разночтений.
PS. А вот это твоё
напомнило мне анекдот "программист на ночь ставит на стол рядом с собой стакан с водой на случай, если захочет попить и пустой стакан на случай, если не захочет пить" ;)
1. Используй тэги оформления кодов, чтобы они были с подсветкой (это кнопки PHP, SQL, HTML и другие справа над окном редактирования текста)
2. Когда пишешь запрос, то пиши, что ты хочешь им получить, с какой целью он написан. Чтобы не было разночтений.
PS. А вот это твоё
echo "";
напомнило мне анекдот "программист на ночь ставит на стол рядом с собой стакан с водой на случай, если захочет попить и пустой стакан на случай, если не захочет пить" ;)
Спустя 10 минут, 40 секунд (10.01.2011 - 00:28) Reflexion написал(а):
ну с заносами в базу думаю понятно, просто заносится в БД, а выборка делается так, если ты отправитель то вывести тебе на экран, если нет поискать твой айди в списках получателей, если нашлось в каком либо из случаев то через эхо что-то будет выводится на экран)
Спустя 2 минуты, 37 секунд (10.01.2011 - 00:31) Reflexion написал(а):
но это же не то, что вы советовали в первом сообщении? Или то?