Привязка

Discussion in 'PHP' started by restart_05, 19 Aug 2009.

  1. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    Допустим есть логин и этот логин хранится в бд mysql.
    Как можно привязать друзей к этому логину сохранить их и вывести на страницу. Если сохранять каждый логина то нужно писать дополнительную строку в бд. Как это можно организовать с php или ajax
     
  2. FreShBY

    FreShBY Banned

    Joined:
    3 May 2009
    Messages:
    24
    Likes Received:
    3
    Reputations:
    0
    Создать вторую таблицу вида:
    userID, friendID

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

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    ммм... А какой запрос отправлять, чтоб через запятую вставляло ??
     
  4. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    mysql_query("INSERT INTO `тратата` SET `id`='".$id.",'....
     
    1 person likes this.
  5. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
  6. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    Возник такой вопрос как вывести эти данные
     
  7. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    PHP:
    $r=mysql_query('SELECT * FROM `table` ORDER BY `id`')
    or die (
    mysql_error());
    while(
    $array=mysql_fetch_assoc($r)){
    $id[]=$array['id'];
    }
    в данном случае все id запишутся в массив $id
     
    #7 L I G A, 19 Aug 2009
    Last edited: 19 Aug 2009
  8. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    Это понятно а как вывести по 1 where id=1 предположим
     
  9. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    PHP:
    $news=mysql_query('select *  from  `table` where id = "' $id '" ')
    or die (
    mysql_error());
    $a mysql_fetch_assoc($news);
    $id=$a['id'];
     
    #9 L I G A, 19 Aug 2009
    Last edited: 19 Aug 2009
    1 person likes this.
  10. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    (( То что ты пишешь выводит все как есть к примеру 4,43,432,2,12 и выводит а мне нужно
    чтоб так
    4
    43
    432
    2
    12
     
  11. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    PHP:
    $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>';
    }
     
  12. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
  13. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    Я бы хранил в отдельной табличке список вида [id_юзера,id_друга] и потом выборка из этой таблички при подготовке данных с лимитом необходимым. Суть в том, чтобы обрабатывать последовательно id френдов и добавлять к выводу/выводить результаты выборки.
     
  14. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Нахство вы выдумываете ребята. Сразу видно что нормальной практики явно не хватает :)
    2 restart_05:
    Создавай такую таблицу:

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

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

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

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    До тебя это описали,разницы никакой нет.
    А вот первый вариант несмотря на неудобство работы с ним, может оказаться быстрее, когда таблица разрастется.
     
    1 person likes this.
  16. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Разницу во времени видим? Это написали в то время, когда я писал свой пост
    Я б тебя не взял на работу :) Представь ситуацию когда тебе надо удалить друга? Или акк друга удален, а тут он остался? (ни о каких ограничениях типа внешний ключ и тп при этой схеме не представляется возможным использовать).
    И с какого перепуга ты взял что оно будет быстрее работать? Из за меньшего количества кортежей? Смешно =) Это раз. А два - в том примере как я предложил это будут сплошные индексы... Выводы напрашиваются?
    Так же представь себе другой тип запроса. Например найти всех людей, у которых ты находишься в друзьях... представляешь как извращаться придется? То то же. Так что это вообще нежизнеспособно в мало мальски серьезном проекте.
     
  17. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Очень рад за тебя.
    Разучились со строками работать? А типа неудобно и прочее - так простой класс написать.
    cron + cleanup скриптик.
    выборка твоих друзей будет быстрее, это однозначно, а вот выборка у кого ты в друзьях будет намного медленее.
    я смотрю ты крутой дядька.
    Ну да, об этом я уже написал.
    Несогласен.( в данном премере конечно лучше не использовать этот вариант)
    Например в ситуации когда числа описывают какие-то настройки у пользователя(типа вкл,выкл) тогда наврятли тебе понадобится выбирать всех юзверей у кого включена та или иная опция,поэтому уместно использовать. Если создавать еще одну таблицу с опциями то количество запросов к базе увеличится,сама база разрастется, а твой проект загнется от 10к народу(представляешь сколько настроек может быть у одного пользователя?)))
    А теперь модераторов уже не учат за постами следить?