Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

bir üyenin başka bir üye ile arkadaş olabilmesi için facebooktaki gibi database de nasıl bir tablo hazırlamalıyım ki user-friend iişkisini sağlıyayım

başlıkta da belirtiğim gibi facebooktaki arkadaşlık sistemi nasıl çalışıyor yani bir üyenin kimlerle arkdaş olup olmadığını nasıl bir tablo oluşturup ilşkilendirmeliyim yardımlarınızı bekliyorum.başta şöyle düşündüm il ilçe gibi ama çok saçnma geldi bana bir önerisi olan varmı ? help me please...
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • muhibbi adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    2 cevap - 2 soru
    "istek_gonderen" "istek_alan" ve "onay" kolonları bulunan (tabii siz bu kolonları kendi isteiğinize göre artırabilirsiniz) bir tablo oluşturulabilir. birisi bir kullanıcıya arkadaşlık teklif ettiğinde teklif edenin ismini istek_gonderen kısmına, isteği alan kullanıcının adını "istek_alan" kolonuna ve onay verilip verilmeme durumuna göre onay kolonuna yes/no şeklinde bir veri girilebilir. kullanıcının arkadaşlarını sıralamak vs. zaten kolay bu noktadan sonra.
    • acemi adlı üyenin fotoğrafı acemi
      benim istediğim bu adımdan sonra ki aşamadır yani kullanıcı isteği kabul ettiğinde Kullanıcının arkdaşlarını nasıl tutmalıyım tablo da.
      şöyle düşünelim ;
      benim 600 arkadaşım var ve bu arkadaşlarımın arasında seninde olduğunu varsayalım.geriye 599 arkadaşım kalıyor ve bu arkdaşlardan da 500 kişisi seninlede arkadaş olduğunu varsayalım peki bu durumda nasıl tutacağım bunu tabloda
      10 yıl önce yazılmış
  • GncArt adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    42 cevap - 13 soru
    Öncelikle normal bir "uyeler" isminde tablo açın ve üye olan kişileri bu alana yazdırın. Ardından
    "arkadaslik" isminde tablo açın ve sütunları şu şekilde olsun:

    - id | uyeid | teklifeden | onay

    Arkadaş olmak isteyen kişi "Arkadaşlık İsteği Gönder" dediği zaman, o anki gözüken profilin ( arkadaşlık isteği gönderilen kişi ) "id" sini GET ile veya sayfa içinde mysql sorgusu yaptırıp veritabanından alıp "uyeid" kısmına,

    * teklif eden kişinin bilgilerini ise o anki oturum bilgilerinden ( Session || Cookie ) alıp "teklifeden" kısmına yazdırmalısın.

    * onay alanı ise "int" olarak hazırlayıp varsayılan olarak 0 olması gerekir.


    Kullanıcının arkadaşlığı onaylaması içinde;

    * Kullanıcı profilinde bir sayfada "arkadaslik" tablosundaki "uyeid" kısmındaki verileri kendi id si ile isteyerek sadece "onay" kısmı 0 olan kayıtları listeletmelisin.

    * Sonra onay işlemi gerçekleşince onay alanını 1 olarak güncelleyeceksin ve arkadaşlarım sayfasında sadece "uyeid" si kendi profil id sine eşit olan verilerle birlikte sadece "onay" kısmı 1 olan kayıtları listeletmen gerekir. Örnek MySql Sorgusu:

    Arkadaşlık Tekliflerini Göstermen İçin:
     
    mysql_query("SELECT * FROM arkadaslik WHERE uyeid='$profilid' and onay='0'");
    


    Arkadaşlarını Göstermek İçin:
     
    mysql_query("SELECT * FROM arkadaslik WHERE uyeid='$profilid' and onay='1'");
    


    basit olarak bu şekilde kendin geliştirebilirsin..Kolay gelsin.
    • acemi adlı üyenin fotoğrafı acemi
      öncelikle cevap veripte zaman ayırdığınız için teşekkür ediyorum.
      ama benim tam olarak istediğim;
      düşün benim arkdaş listem şu şekilde olsun
      benim listem:
      *ali
      *ahmet
      *mehmet
      *ayşe
      *fatma
      *zeynep

      benim arkdaşım olan alinin listesi
      *ahmet
      *mehmet
      *ayşe
      *fatma
      *zeynep
      *nuri

      gibi gördüğünz gibi aynı isimler tabloda birden fazla kullanılıyor yani kayıtlar tabloda tekrarlanıyor 500 kişilik bir üye olduğunu düşünelim ve bunların hepsi bir biri ile arkdaş olduğunu düşünün bu tablonun boyutu ne olur(500x500) bu sadece 500 kişilk bir uye için peki 1 milyon kişi olduğunu varsayalım bu kez (1000000x1000000) gördüğünüz gibi korkunç bir durum...
      10 yıl önce yazılmış
  • uls adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    65 cevap - 10 soru
    üyeler tablosu içeriği;
    uye_id, diğer bilgiler

    iliskiler tablosu içeriği;
    iliski_id, uye1, uye2, onay

    bir üye ötekine istek gönderdiğinde, (auto, istek gönderen üye id'si, istek alan üye id'si, 0) olarak ilişkiler tablosuna eklenir. onaylandığında ise onay kısmı 1 yapılır ve şu satır ayrıca eklenir; (auto, istek alan üye id'si, istek gönderen üye id'si, 1).

    bu yapı oluşturulduktan sonra ortak arkadaşları bulurken şu sorgu çalıştırılır;
    SELECT DISTINCT uye2
    FROM iliskiler
    WHERE uye2
    IN (
    SELECT uye2
    FROM iliskiler
    WHERE uye1 = (1. üyenin id'si)
    OR uye1 = (2. üyenin id'si)
    GROUP BY uye2
    HAVING count( * ) =2
    )
    AND ok =1

    bu şekilde 500 kullanıcı olduğunda hepsi birbirine ekliyse iliskiler tablosunda 500*500 satır veri olacak. 1 milyon kullanıcının hepsi birbirine ekliyse aynı şekilde 1m^2 satır veri olacak fakat 1 milyon aktif kullanıcısı olan bir sistem için bu büyük bir problem sayılmaz. facebook kadar aktif ve yoğun kullanılacak bir sistem yapılması düşünülüyorsa ona göre bir yatırımı da olmalı tabii.

    bunlar bir yana sql cache şeklinde muhabbetler de var, benim bu konuda pek bilgim yok ama aratıp birkaç makale okursanız büyük ihtimalle işinize yarar.
  • acemi adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    2 cevap - 8 soru
    yardımlarınız çin tsklr arkdaşlar ama tam olarak istediğim gibi bir çözüm bulamadım..:(
    • Alpagu adlı üyenin fotoğrafı Alpagu
      Güzel bir soru ve benimde yakında karşılaşacağım bir sorundu. Diğer arkadaşların yazdığı gibi tek çözümü var sanırım. Büyük ihtimalle milyon üyenin olduğu bir sistemdede ona göre bir alt yapı ve server güncellenmesi gerekecek bu nedenden dolayı olayı sorgulama ile optimize etmek bir yerden sonra Yazılanlardan anladığım kadarıyla imkansızlaşıyor. Orada Donanımsal yatırımlara ihtiyaç duyuruluyor.

      Bir arkadaş bahsetmiş ama ismini vermemiş. Benimde şuan üzerinde çalışığım "stored procedure" yöntemini yazni sql cache yöntemini sende araştıra bilirsin.

      Umarım işine yarar bir açıklama olmuştur.
      10 yıl önce yazılmış