PDA

Просмотр полной версии : Привязка


restart_05
19.08.2009, 14:40
Допустим есть логин и этот логин хранится в бд mysql.
Как можно привязать друзей к этому логину сохранить их и вывести на страницу. Если сохранять каждый логина то нужно писать дополнительную строку в бд. Как это можно организовать с php или ajax

FreShBY
19.08.2009, 14:44
Создать вторую таблицу вида:
userID, friendID

или в этой же таблице в ячейку через зяпятую IDы друзей

restart_05
19.08.2009, 14:47
ммм... А какой запрос отправлять, чтоб через запятую вставляло ??

L I G A
19.08.2009, 14:55
ммм... А какой запрос отправлять, чтоб через запятую вставляло ??
mysql_query("INSERT INTO `тратата` SET `id`='".$id.",'....

restart_05
19.08.2009, 14:56
спс

restart_05
19.08.2009, 17:53
Возник такой вопрос как вывести эти данные

L I G A
19.08.2009, 18:11
Возник такой вопрос как вывести эти данные
$r=mysql_query('SELECT * FROM `table` ORDER BY `id`')
or die (mysql_error());
while($array=mysql_fetch_assoc($r)){
$id[]=$array['id'];
}
в данном случае все id запишутся в массив $id

restart_05
19.08.2009, 18:16
Это понятно а как вывести по 1 where id=1 предположим

L I G A
19.08.2009, 18:20
Это понятно а как вывести по 1 where id=1 предположим
$news=mysql_query('select * from `table` where id = "' . $id . '" ')
or die (mysql_error());
$a = mysql_fetch_assoc($news);
$id=$a['id'];

restart_05
19.08.2009, 18:39
(( То что ты пишешь выводит все как есть к примеру 4,43,432,2,12 и выводит а мне нужно
чтоб так
4
43
432
2
12

L I G A
19.08.2009, 18:47
$news=mysql_query('select * from `table` where id = "' . $id . '" ')
or die (mysql_error());
$a = mysql_fetch_assoc($news);
$id=$a['id'];
$massiv=explode(',',$id);
for($i=0;$i<=count($massiv);$i++){
echo $massiv[$i].'<br>';
}

restart_05
19.08.2009, 18:51
спс

KaZ@NoVa
19.08.2009, 18:59
Я бы хранил в отдельной табличке список вида [id_юзера,id_друга] и потом выборка из этой таблички при подготовке данных с лимитом необходимым. Суть в том, чтобы обрабатывать последовательно id френдов и добавлять к выводу/выводить результаты выборки.

VDShark
19.08.2009, 19:01
Нахство вы выдумываете ребята. Сразу видно что нормальной практики явно не хватает :)
2 restart_05:
Создавай такую таблицу:


user_ud | friend_id

Где один кортеж (строка) - один друг.
Т.е. допустим у человека 10 друзей - это будет 10 кортежей.
Так же эти поля будут внешними ключами на таблицу с юзерами.

Вышеприведенный в данном топике вариант имеет кучу недостатков, таких как аномалия удаления, вставки, изменения и тд и тп. Так же при такой структуре ни о какой согласованности в БД не может быть и речи.

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

qBiN
20.08.2009, 03:20
Я бы хранил в отдельной табличке список вида [id_юзера,id_друга] и потом выборка из этой таблички при подготовке данных с лимитом необходимым. Суть в том, чтобы обрабатывать последовательно id френдов и добавлять к выводу/выводить результаты выборки.Нахство вы выдумываете ребята. Сразу видно что нормальной практики явно не хватаетДо тебя это описали,разницы никакой нет.Вышеприведенный в данном топике вариант имеет кучу недостатков, таких как аномалия удаления, вставки, изменения и тд и тп. Так же при такой структуре ни о какой согласованности в БД не может быть и речи. А вот первый вариант несмотря на неудобство работы с ним, может оказаться быстрее, когда таблица разрастется.

VDShark
20.08.2009, 10:09
До тебя это описали,разницы никакой нет.
Разницу во времени видим? Это написали в то время, когда я писал свой пост
А вот первый вариант несмотря на неудобство работы с ним, может оказаться быстрее, когда таблица разрастется.
Я б тебя не взял на работу :) Представь ситуацию когда тебе надо удалить друга? Или акк друга удален, а тут он остался? (ни о каких ограничениях типа внешний ключ и тп при этой схеме не представляется возможным использовать).
И с какого перепуга ты взял что оно будет быстрее работать? Из за меньшего количества кортежей? Смешно =) Это раз. А два - в том примере как я предложил это будут сплошные индексы... Выводы напрашиваются?
Так же представь себе другой тип запроса. Например найти всех людей, у которых ты находишься в друзьях... представляешь как извращаться придется? То то же. Так что это вообще нежизнеспособно в мало мальски серьезном проекте.

qBiN
20.08.2009, 13:38
Я б тебя не взял на работу Очень рад за тебя.
Представь ситуацию когда тебе надо удалить друга?Разучились со строками работать? А типа неудобно и прочее - так простой класс написать.
Или акк друга удален, а тут он остался? cron + cleanup скриптик.
И с какого перепуга ты взял что оно будет быстрее работать? Из за меньшего количества кортежей? выборка твоих друзей будет быстрее, это однозначно, а вот выборка у кого ты в друзьях будет намного медленее.
Смешно =)я смотрю ты крутой дядька.
Например найти всех людей, у которых ты находишься в друзьях... представляешь как извращаться придется? Ну да, об этом я уже написал. Так что это вообще нежизнеспособно в мало мальски серьезном проекте.Несогласен.( в данном премере конечно лучше не использовать этот вариант)
Например в ситуации когда числа описывают какие-то настройки у пользователя(типа вкл,выкл) тогда наврятли тебе понадобится выбирать всех юзверей у кого включена та или иная опция,поэтому уместно использовать. Если создавать еще одну таблицу с опциями то количество запросов к базе увеличится,сама база разрастется, а твой проект загнется от 10к народу(представляешь сколько настроек может быть у одного пользователя?)))
Разницу во времени видим? Это написали в то время, когда я писал свой постА теперь модераторов уже не учат за постами следить?