Merhabalar,
Arkadaşlık sistemlerinden, sosyal ortamlardan aşina olduğumuz bir sistemin veritabanı mantığı, ve veritabanından istenilen bilgilerin php ile kullanıcıya çekilmesi işlemini en pratik şekilde yapabilmek için, bir beyin fırtınası yapalım istedim.
Tartışacağımız konu şu ;
A kişisi ile B,C ve D kişisi arkadaş.
A kişisi bir içerik eklediği zaman, B,C ve D kişisinin bu içeriği görüntülemesi için ( içeriğin B,C ve D kişilerinin sayfasına gitmesi, paylaşılması için) nasıl bir yol izlenmelidir?
Benim aklımdaki yol şu :
A kişisinin B ile,
A kişisinin C ile,
A kişisinin D ile arkadaş olduğunu belirten arkadaşlık kayıtlarım var veritabanımda.
Bir while döngüsü ile bu tablomdan A kişisinin bütün arkadaşlarını seçer, ve while döngüme eklediğim INSERT cümlesi sayesinde paylaşımları içeren veritabanı tabloma şu bilgileri eklerim :
A kişisi X içeriğini B ile paylaştı.
A kişisi X içeriğini C ile paylaştı.
A kişisi X içeriğini D ile paylaştı.
Sonra B kişisi giriş yaptığı zaman, paylaşımları içeren tablomdan paylaşılan kişinin B kişisi olduğu bütün satırları çeker, bu satırlarda bulunan X içeriğini B kişisinin sayfasında yayınlarım.
Örnek tablo yapıları :
arkadaşlık tablosu :
ekleyenid - eklenenid - onay
paylaşım tablosu
ekleyenid - aliciid - icerikid
Örnek cümleler :
A kişisi içeriği eklerken, paylaşım tablosuna bilgi girişi :
$arkadascek=mysql_query("SELECT * FROM arkadaslik WHERE ekleyenid='$kendiid' AND onay='1' OR eklenenid='$kendiid' AND onay='1'");
while($arkadas=mysql_fetch_array($arkadascek)){
$arkadasid1=$arkadas['ekleyenid'];
$arkadasid2=$arkadas['eklenenid'];
if($arkadasid1==$kendiid){
$sonid=$arkadasid2;
}else if($arkadasid2==$kendiid){
$sonid=$arkadasid1;
}
$paylasimekle=mysql_query("INSERT INTO paylasim (ekleyenid,aliciid,icerikid)VALUES('$kendiid','$sonid','$icerikno')");
}
B kişisi profiline baktığı zaman, karşısına içeriklerin sergilenmesi :
$icerikcek=mysql_query("SELECT * FROM paylasim WHERE alanid='$kendiid'");
while($icerik=mysql_fetch_array($icerikcek)){
$icerikid=$icerik['icerikid'];
$icerigial=mysql_fetch_array(mysql_query("SELECT * FROM icerik WHERE id='$icerikid'"));
$icerikmetin=$icerigial['metin'];
print"$icerikmetin";
}
Bu şekilde B kişisi de kendi arkadaşlarının eklediği içerikleri kendi sayfasında takip edebildi.
Evet, sistem ve benim çözüm algoritmam gördüğünüz gibi.
Sizin de fikirlerinizi bekliyorum. Aynı işlem için daha uygun, mâkul gördüğünüz çözümler, alternatifler.
Herkese şimdiden teşekkür ederim.