[]
Takip Sistemi (Akıl edemedim bir türlü)
dün de sormuştum bu soruyu, sağolsun arkadaşlar acaip yardımcı olmuştu. bu işlerde yeni olduğum için pratiğim pek gelişmedi o yüzden akıl edemiyorum.
Şimdi, takipçi sistemini nasıl yaptığımı anlatayım:
1. Üye girişi yapanlar, anasayfada yalnızca takip ettiklerinin yazılarını görecek. Üye girişi yapmayanlar ise herkesin yazdıklarını görecek.
2. Üye girişi yapanlar, takip etmek istedikleri kullanıcının adını bir inputa yazıyorlar. Bunu php'den veritabanına ise takip isimli bir tabloda geçiriyorum ve tabloda takip_eden takip_edilen isimli 2 tane alan var. Takip eden kısma, post edenin id'si yazılıyor. Takip edilen kısma ise, ismi yazılan kullanıcının id'si yazılıyor.
3. Anasayfaya yazıyı aktarmada sorun ya da kafa karışıklı yaşıyorum. Çünkü, bir üyenin atıyorum 6 tane takip ettiği adam olacak. Bunların hepsi $takip isimli bir değişkende yer alıyor diyelim.
mysql_query("select * from konular where ekleyen='$takip'"); dediğim anda, takip birden çok değişkeni içerdiği için bana yanıt vermiyor. Peki, bu kısmı nasıl aşabilirim? Direk bir kodu örnekleyerek söyleyebilir misiniz acaba? $takip'in içindeki 1 4 5 6 14 27 gibi sayıları ayrı ayrı nasıl gösterebilirim ki.
ekleyen in () yapsam da tırnaklar ve virgüllerden arıza çıkıyor bu sefer. Tavsiye var mı?
Şimdi, takipçi sistemini nasıl yaptığımı anlatayım:
1. Üye girişi yapanlar, anasayfada yalnızca takip ettiklerinin yazılarını görecek. Üye girişi yapmayanlar ise herkesin yazdıklarını görecek.
2. Üye girişi yapanlar, takip etmek istedikleri kullanıcının adını bir inputa yazıyorlar. Bunu php'den veritabanına ise takip isimli bir tabloda geçiriyorum ve tabloda takip_eden takip_edilen isimli 2 tane alan var. Takip eden kısma, post edenin id'si yazılıyor. Takip edilen kısma ise, ismi yazılan kullanıcının id'si yazılıyor.
3. Anasayfaya yazıyı aktarmada sorun ya da kafa karışıklı yaşıyorum. Çünkü, bir üyenin atıyorum 6 tane takip ettiği adam olacak. Bunların hepsi $takip isimli bir değişkende yer alıyor diyelim.
mysql_query("select * from konular where ekleyen='$takip'"); dediğim anda, takip birden çok değişkeni içerdiği için bana yanıt vermiyor. Peki, bu kısmı nasıl aşabilirim? Direk bir kodu örnekleyerek söyleyebilir misiniz acaba? $takip'in içindeki 1 4 5 6 14 27 gibi sayıları ayrı ayrı nasıl gösterebilirim ki.
ekleyen in () yapsam da tırnaklar ve virgüllerden arıza çıkıyor bu sefer. Tavsiye var mı?
Tamamen teorik bir cevap veriyorum. sorguyu göndermeden önce takip içindekileri ayırıp düzgünce bir arraye at, daha sonra
WHERE ekleyen IN (arrayadi) şeklinde kullansan ?
çok fena sallamış olabilirim.
WHERE ekleyen IN (arrayadi) şeklinde kullansan ?
çok fena sallamış olabilirim.
- kimlanbu (31.01.12 10:54:45)
kanka aslında mantıklı söyledin ama ben sana o konu hakkındaki sorunu da söyleyeyim:
bir üye 6 kişiyi takip edecek. diğeri 18 kişiyi. öbürü 1 kişiyi.
dolayısıyla yazdığım ortak kod'da parçalama işlemi için belli sayıda değişken bleirleyeceğim. (örneğin ilk 10 parçayı yazmaya ayarlayacağım) ancak 11. kişiyi takip etmeye başladığında kod onu tanımlayamayacak. ben de düzgün anlatamadım sanırım şuan asfsad
bir üye 6 kişiyi takip edecek. diğeri 18 kişiyi. öbürü 1 kişiyi.
dolayısıyla yazdığım ortak kod'da parçalama işlemi için belli sayıda değişken bleirleyeceğim. (örneğin ilk 10 parçayı yazmaya ayarlayacağım) ancak 11. kişiyi takip etmeye başladığında kod onu tanımlayamayacak. ben de düzgün anlatamadım sanırım şuan asfsad
- tchuck (31.01.12 10:58:53)
$id_list = array("test","test2","test33"); //böyle bir array'imiz olsun idleri içeren.
$id_search= implode(',',$id_list);
select * from konular where ekleyen IN ($id_search)
böyle olması lazım eğer doğru anladıysam.
$id_search= implode(',',$id_list);
select * from konular where ekleyen IN ($id_search)
böyle olması lazım eğer doğru anladıysam.
- tuyra (31.01.12 11:23:33 ~ 11:24:14)
şimdi, benim $goster isimli değişkenim mysql'den takip_edilen sütunu altındaki verileri çekiyor. (yani $goster'in içinde bir sürü id var.)
ben, senin dediğine göre;
$id_list = array("$goster");
$id_search = implode(',',$id_list);
select * from konular where ekleyen in ($id_search) şeklinde mi yazmam gerekiyor.
yani array içinde ben bu değişkenimi kullandığımda sorunsuz sonuç veriyor değil mi? (bu komutlarla fazla çalışmadığım için soruyorum)
ben, senin dediğine göre;
$id_list = array("$goster");
$id_search = implode(',',$id_list);
select * from konular where ekleyen in ($id_search) şeklinde mi yazmam gerekiyor.
yani array içinde ben bu değişkenimi kullandığımda sorunsuz sonuç veriyor değil mi? (bu komutlarla fazla çalışmadığım için soruyorum)
- tchuck (31.01.12 11:34:29)
$goster değişkeninde sadece idleri içeren bir array yer alıyorsa sorunsuz çalışır. print_r($goster); yazıp çıktıyı buraya koyabilirsin. veya kodun tamamını koy öyle bakalım.
böyle olacak:
$id_search = implode(',',$goster);
select * from konular where ekleyen in ($id_search);
böyle olacak:
$id_search = implode(',',$goster);
select * from konular where ekleyen in ($id_search);
- tuyra (31.01.12 11:43:42)
yav açlıktan mıdır nedir kafam hiçbir şeyi almıyor yapamıyorum yapamadıkça da sinirleniyorum.
$takipID = $_SESSION["uye_id"];
$takipBul = mysql_fetch_array(mysql_query("select takip_edilen from takip where takip_eden='$takipID' "));
$id_search = implode(',',$takipBul);
$bul = mysql_query("select * from konular where ekleyen in ($id_search) && onay='1' && anasayfa='1' order by id desc limit 20");
kodun devamı da var tabi, ama sorunum bu bölümle ilgili diye düşünüyorum. Çünkü şuan ben neyi yanlış yapıyorsam eğer, yalnızca tek bir ID'yi alıyor. Yani takip_edilen sütunu içerisinde 3 tane satır olmasına rağmen yalnızca en üstteki satırı kabul ediyor ve yalnızca ona göre işlem yapıyor.
$takipID = $_SESSION["uye_id"];
$takipBul = mysql_fetch_array(mysql_query("select takip_edilen from takip where takip_eden='$takipID' "));
$id_search = implode(',',$takipBul);
$bul = mysql_query("select * from konular where ekleyen in ($id_search) && onay='1' && anasayfa='1' order by id desc limit 20");
kodun devamı da var tabi, ama sorunum bu bölümle ilgili diye düşünüyorum. Çünkü şuan ben neyi yanlış yapıyorsam eğer, yalnızca tek bir ID'yi alıyor. Yani takip_edilen sütunu içerisinde 3 tane satır olmasına rağmen yalnızca en üstteki satırı kabul ediyor ve yalnızca ona göre işlem yapıyor.
- tchuck (31.01.12 12:03:34)
$takipID = $_SESSION["uye_id"];
$takipBul = mysql_query("select takip_edilen from takip where takip_eden='$takipID' ");
while ($takip = mysql_fetch_array($takipBul)) $id_list[] = $takip[takip_edilen];
$id_search = implode(',',$id_list);
$bul = mysql_query("select * from konular where ekleyen in ($id_search) && onay='1' && anasayfa='1' order by id desc limit 20");
şöyle bir kullanım tek değer döndürür, o yüzden 3'ü de gelmiyor;
mysql_fetch_array(mysql_query("select takip_edilen from takip where takip_eden='$takipID' "));
$takipBul = mysql_query("select takip_edilen from takip where takip_eden='$takipID' ");
while ($takip = mysql_fetch_array($takipBul)) $id_list[] = $takip[takip_edilen];
$id_search = implode(',',$id_list);
$bul = mysql_query("select * from konular where ekleyen in ($id_search) && onay='1' && anasayfa='1' order by id desc limit 20");
şöyle bir kullanım tek değer döndürür, o yüzden 3'ü de gelmiyor;
mysql_fetch_array(mysql_query("select takip_edilen from takip where takip_eden='$takipID' "));
- tuyra (31.01.12 12:11:32)
ya sana ne kadar teşekkür etsem azdır, sadece bugün için de değil sürekli yardım ediyorsun. çok teşekkür ederim çok.
- tchuck (31.01.12 12:17:13)
1