• 30-12-2010, 21:39:29
    #1
    Merhaba arakdaşlar bir script yazıyorum arkadaş listesi yapıyorum yani üyeler birbirlerini arkadaş olarak ekleyebilecekler...fakat mantığını çözemedim bir türlü...Ne yaptığımı anlatayım siz beni aydınlatırsanzı yardımcı olursanız çok seviniirm..
    Önce Arkadas diye bir veri tabanı oluşturdum içinde
    ( a_id  ekleyen  eklenen  onay  sil )
    diye tablolar oluşturdum mesela benim kullanıcı id'm 5 ekliceğim kişininki 10 ekliyorum tablo şu şekilde oluyor...
    a_id =1 ekleyen=5 eklenen=10 onay=0 sil=0
    oluyor yani karşıdaki onayladıktan sonra onay=1 oluyor buraya kadar herşey süper ilerliyor fakat arkadaş listesini çekerken bir türlü beceremiyorum mantığını kavrayamadım...bu mantığı kendim kafamdan buldum ne derece doğru onuda bilmiyorum ama mantık bir yerde kaldı...ben ekliyorum karşıdaki onaylıyor benim arkadaş listemde Eklediğim kişi görünüyor fakat eklenilen kişinin listesinde ben görünmüyorum...çünkü listeyi çekerken
    SELECT * FROM arkadas  WHERE ekleyen='$eklenenid' AND onay='1'
    bu şekilde çekiyorum...Eklenilen kişinin idsi ekleyende olmadığı için karşı tarafın listesinde çıkmıyor...Lütfen bir çağre Tıkandım
  • 30-12-2010, 22:29:33
    #2
    a_id'ye gerek yok.

    5 nolu üyenin arkadaşları:
    SELECT * FROM arkadas WHERE eklenen = 5 AND onay = 1
    10 nolu üyenin arkadaşları:
    SELECT * FROM arkadas WHERE eklenen = 10 AND onay = 1
  • 30-12-2010, 22:49:05
    #3
    nasıl yani hocam tam anlıyamadım aynı şey olucak yaptığımla yani bişi değişmiyecek yine birinin listesinde görüncek diğerinin listesinde görnmücek...a_id otomatik artıyor..yani karışık tutuyor tabloda...
  • 30-12-2010, 23:16:05
    #4
    SELECT * FROM arkadas  WHERE ekleyen='$eklenenid' AND onay='1' OR eklenen='$eklenenid' AND onay='1'
    şeklinde dene
  • 30-12-2010, 23:34:20
    #5
    hocam nasıl bir çıkmazsa... Buda işe yaramadı aynı değişen bişi yok :S mantıkmı yanlış :S ?
  • 31-12-2010, 00:03:26
    #6
    LaCRemeL doğru söylemiş...

    ark_taxonomy diye bir tablo aç
    id, ekleyen, eklenen, daveteden, onay diye alan oluştur.

    arkadaşları alınacak elemanın id'si = $sorgulanan_id
    $sonuc = mysql_fetch_array(mysql_query(SELECT * FROM arkadas  WHERE ekleyen='$sorgulanan_id' AND onay='1' OR eklenen='$sorgulanan_id' AND onay='1'))
    yalnız dönen sorguda bir şart koyman lazım.
    o da $sonuc['daveteden'] == $sorgulanan_id true ise $sonuc['eklenen'] değerini alacaksın, değilse $sonuc['ekleyen'] değerini alacaksın.
    Bir de kontrol koyman lazım eklerken, eğer ekleyen eklenen aynı idyi alıyorsa kendinizi arkadaş ekleyemezsiniz diyeceksin.

    Yani özet olarak, arkadaşını ararken, elemanın id'sini hem ekleyen de hem eklenen de aratacaksın. gelen satırlarda ekleyen sorguyu yapan id ise, o satırda eklenen alanı çekeceksin, eğer ekleyen sorguyu yapan id değilse ekleyen alanı çekeceksin. kişilerin kendilerini arkadaş olarak eklemelerini önleyeceksin.
  • 31-12-2010, 00:12:13
    #7
    manisahost adlı üyeden alıntı: mesajı görüntüle
    hocam nasıl bir çıkmazsa... Buda işe yaramadı aynı değişen bişi yok :S mantıkmı yanlış :S ?
    Yukarda verdiğim sorgu doğru, listelerken hem ekleyen hem eklenen kişileri listeleyeceksin bu arada bu listelemeyi yapan üyeyi ekrana basmicaksin.


    $sql = mysql_query("SELECT * FROM arkadas  WHERE ekleyen='$eklenenid' AND onay='1' OR eklenen='$eklenenid' AND onay='1'  ");
    while ($arkadas = mysql_fetch_array($sql)) {
    	if ($arkadas['ekleyen'] == $eklenenid) {
    			echo $arkadas['eklenen'];
    		}
    	else {
    			echo$arkadas['ekleyen'];
    	}
    }
    gibi.
  • 31-12-2010, 10:48:46
    #8
    benim aklıma şöyle bir yöntem geldi.
    sorgulaması daha kolay. ayrıca cpu'yu da yormaz.
    tek sorun kayıt sayın artacak..
    ama daha sonra yapacağın modüllerde işe yarayabilir.

    şöyle ki,
    a_id =1 ekleyen=5 eklenen=10 onay=0 sil=0

    yerine
    a_id =1 arkadaş_id=10 onay=0 sil=0 ; şeklinde veri tabanı yapacaksın.

    a_id= kayıt sahibinin id'si olacak. mesela senin.
    arkadaşın için de ayrı bir kayıt açacaksın. o da şöyle görünecek.
    a_id =10 arkadaş_id=1 onay=0 sil=0 ;

    yani her arkadaşlıkta 2 kayıt yazacaksın.
    ama sorgulama yaparken sadece a_id dökümü bütün arkadaşları verecek.

    kolay gelsin.
  • 31-12-2010, 10:55:44
    #9
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM arkadas  WHERE ekleyen='$eklenenid' AND onay='1' OR eklenen='$eklenenid' AND onay='1'
    şeklinde dene
    bu şekilde zaten yapabilirsin neden kendini kasıyorsun?