lostyazilim
tr.link

Bu senaryoyu nasıl kurgulayabiliriz?

5 Mesajlar 922 Okunma
lstbozum
tr.link

101222 101222 WM Aracı Anonim Üyelik
  • Üyelik 22.01.2019
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 257
  • Beğeniler 68 / 43
  • Ticaret 0, (%0)
Simdi yayın akışı diye bir tablo var burada sistemde kayitli üyelerin paylaştığı veriler var, birde takipciler tablosu var buradada kayitli kullanicilar kimleri takip ediyor o verileri topluyorum mesela a diye bir uye olsun bunun uyeler tablosundaki id si 1 yayin akışında bir şey paylaştığında yakin akisi tablosunda o uyenin idsini uye_id diye yayin akisi tablosuna ekliyorum daha sonra bu a kullanicisini uye idsi 2 olan b ve uye idsi 3 olan c takip etsin takipciler tablosuna 2 satır ekleniyor t_eden_id 2,t_edilen_id 1/t_eden_id 3,t_edilen_id 1 şimdi buraya kadar yaptim sadece takip edenlerin yayin akışında takip ettikleri kişinin paylaştığı içerikler gözükmesi gerekiyor acaba bunu nasıl yaparim kod olarak yardim istemiyorumvsadece bir yol,yordam gösterseniz bile yeterli

Edit: Bir kişinin 1den fazla takipcisi olabilir.Tek olsaydi where ile sessiondan idsini gondererek alabiliyordum fakat birden fazla kullanıcı olunca kafam karşıtı
 

 

wmaraci
reklam

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 29 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1025
  • Beğeniler 366 / 534
  • Ticaret 5, (%100)
Takip eden kullanıcıların yayın akışına bir koşul ekleyin. Mesela diyelim ki A kullanıcısı B kullanıcısını takip ediyor ve B kullanıcısının paylaştıklarını A kullanıcısının yayın akışında göstermek istiyorsunuz.


ÖNCE A KULLANICISININ TAKİP TABLOSUNDAKİ VERİYİ ÇEKELİM

$Atakipettikleri = query SELECT ''TABLO_ADI''....... | diyerek o tabloyu seçiyoruz.

$Atakipsayisi = numRow $Atakipettikleri | burada tablodaki idleri saydırıyoruz takip ettiği var mı diye.

if $Atakipsayisi > 0 ise {
foreach ($Atakipettikleri as $takipciverisi)
$takipcisonuc = takipciverisi['TABLO_ADI'];
}

ŞİMDİ B KULLANICISININ İD'SİNİ A'nın TABLOSUNDAN ÇEKELİM

$Bkullanıcı = query $takipcisonuc FROM uye_tablosu | Burada önemli olan A'nın takip ettiği kullanıcı id'sini kullanıcıların kayıtlı olduğu user tablosunda arıyoruz. Yani diyoruz ki A'nın takip ettikleri tablosundaki id, user tablosundaki id ile örtüşüyor mu?

$Bsorgulama = numRow $Bkullanıcı

if $Bsorgulama > 0 ise | şimdi B'nin idsini user tablosundan sorgulattık ve eğer sonuç 0'dan büyükse. Bunun yerine direk == vs de kullanabilirsiniz.

$Bpaylastiklari = query SELECT ''B_PAYLASIMLARI'' | Şimdi A'nın takip ettikleriyle B'nin id'si örtüştüğü için artık B'nin paylaştıklarını seçip A'nın yayın akışında gösterebiliriz.

$Bpaylasimsorgulama = numRow $Bpaylastiklari | burada hata almamak için B'nin paylaşımı olup olmadığını kontrol edeceğiz. Çünkü hiç paylaşım yapmamış olabilir.

SON AŞAMA

if $Bpaylasimsorgulama > 0 ise {

foreach($Bpaylastiklari as $Bninpaylasimlari) {
$yazdirilacak = $Bninpaylasimlari['B_PAYLASIMLARI']
}

echo $yazdirilacak;

}

else {

echo 'Paylaşım Bulunamadı vs.'

}


Ve son aşamada eğer paylaşımı varsa B'nin bu paylaşımı çektik ve A'nın duvarında echo ile yazdırdık. Burada işlem aşamamız şöyleydi:

Önce A Kullanıcısının takip ettiği id'yi çekip bunu $takipcisonuc olarak tanımladık.
Ardından $takipcisonuc'un üyelerin yer aldığı tabloda olup olmadığını kontrol ettik.
Eğer takip edilen ve üye eşleşiyorsa takip edilen kullanıcının paylaşım tablosunu çektik.
Eğer paylaşım tablosu boş değilse yani paylaşımı varsa bunu takip edenin yayın akışına yazdırdık.


EDİT: Birden fazla üye için yine A'nın takip ettiği üye idlerini ARRAY ile yazdırıp aynı üye İD'lerini üyeler tablosunda sorgulatıp yine aynı mantıkla o üyelerin paylaşımlarını A'nın yayın akışına çekebilirsiniz.

EDİT 2: PHP'de yeniyim hatam varsa affola
 

 

LizGate LizGate Lizgate Kullanıcı
  • Üyelik 30.03.2019
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılımcı
  • Konum Muğla
  • Ad Soyad A** Y**
  • Mesajlar 93
  • Beğeniler 12 / 47
  • Ticaret 3, (%100)
Simdi yayın akışı diye bir tablo var burada sistemde kayitli üyelerin paylaştığı veriler var, birde takipciler tablosu var buradada kayitli kullanicilar kimleri takip ediyor o verileri topluyorum mesela a diye bir uye olsun bunun uyeler tablosundaki id si 1 yayin akışında bir şey paylaştığında yakin akisi tablosunda o uyenin idsini uye_id diye yayin akisi tablosuna ekliyorum daha sonra bu a kullanicisini uye idsi 2 olan b ve uye idsi 3 olan c takip etsin takipciler tablosuna 2 satır ekleniyor t_eden_id 2,t_edilen_id 1/t_eden_id 3,t_edilen_id 1 şimdi buraya kadar yaptim sadece takip edenlerin yayin akışında takip ettikleri kişinin paylaştığı içerikler gözükmesi gerekiyor acaba bunu nasıl yaparim kod olarak yardim istemiyorumvsadece bir yol,yordam gösterseniz bile yeterli

Edit: Bir kişinin 1den fazla takipcisi olabilir.Tek olsaydi where ile sessiondan idsini gondererek alabiliyordum fakat birden fazla kullanıcı olunca kafam karşıtı





Şöyle düşünelim;

A,B,C,D üyelerimiz var.

A user_id = 1
B user_id = 2
C user_id = 3
D user_id = 4

////////////////////////////////////////


Paylaşım Tablosu : PAYLASIM
--------------------------------
id-user_id-p_text--p_context
-------------------------------
1----1-----haha----abc.jpg
2----1-----hehe----xa.png
3----4-----aaa-----apa.m3p
4----3-----hehe----xxx.mp4

////////////////////////////////////////

Takipçi Tablosu : TAKIPCI

id user_id follow_id
-----------------------
1------1--------2
1------1--------3
1------4--------2
1------4--------1
1------4--------3

////////////////////////////////////////


Burdan sonra yapacağın kısım basit.

Yayın akışına Paylaşım Tablosu'ndan verileri getirirsin.

Bu verilerin gösterim sorgusunuda sessiondan user idyi çekersin, çektiğin user_id yi takipçi tablosunda sorgulayıp follow_id leri alırsın. follow_idyide paylaşımı filtrelersin.


Örn:

SELECT * FROM PAYLASIM WHERE user_id = (
SELECT follow_id FROM TAKIPCI WHERE user_id = '$SESSION['user_id']'
)


Edit : tablo yapısının optimizasyonu nasıl olur bilemiyorum senin örneklendirmene göre yaptım
 

 

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)

SELECT yayin_akisi.adi, yayin_akisi.url, yayin_akisi.image_url
FROM yayin_akisi
INNER JOIN takipciler
ON yayin_akisi.olusturan_uye == takipciler.t_edilen_id AND takipciler.t_eden_id == $takip_eden_kullanicinin_idsi;
 

 

wmaraci
wmaraci

101222 101222 WM Aracı Anonim Üyelik
  • Üyelik 22.01.2019
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 257
  • Beğeniler 68 / 43
  • Ticaret 0, (%0)
AhmetKarabulut , LizGate , Lions cevaplarınız için teşekkür ederim sorun çözülmüştür
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al