1. Reklam


    1. dikeysro

Kod olarak fikrinizi istiyorum (beynim yandı)


  1. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48
    atlanta
    Arkadaşlar elimdeki php ile yazılan üyelik sisteminde iki farklı tip üyelik var. Kurumsal ve kişisel olarak . Ben projeye başlarken maalesef ki bu iki üyelik bilgilerini sql de farklı tablolarda topladım.
    Şimdi mesajlaşma sistemi yapacağım dolayısıyla aklıma tek gelen fikir her iki tabloya userinboxid adında integer uniq oto increase kolon açmak oldu. Girişte bireysel girerse bireyselin tablosundan sessiona atayacak kurumsal girerse kurumsalın tablosundan aynı sessiona
    Çakışmaması için bireysel tablosunda olan userinbox 1 den başlayacak kurumsal olanda 1 milyondan falan başlayarak artacak (sqlde böyle birşey var mı henüz bilmiyorum :D)

    Gelen, giden kutusunu düzenlerkende bilgileri çekmek için if 1 milyondan yüksekse kurumsaldan bilgileri çek düşükse bireyselden diyecem.
    Biraz karışık oldu ama aklıma tek gelen fikir bu oldu. Varsa fikriniz alırım bir dal beynim yandı.
    (Üyelikleri aynı tabloya al demeyin lütfen üstüne bir sürü sistem yaptım hepsini degiştirmem gerekir )
    Teşekkürler şimdiden ^^
     
  2. sarkolata

    sarkolata zaa xD

    Kayıt:
    15 Temmuz 2009
    Mesajlar:
    8.875
    Beğenilen Mesajlar:
    170
    Ödül Puanları:
    73
    Şehir:
    Los Angeles

    1 milyondan başlatmak gibi bir şey yapabilirsin, kötü bir yöntem olsa da çalışır: https://stackoverflow.com/a/1280757
    foreign key kullanarak çakışmasını engelleyebilirsin, accounttype diye de bir sütun açarsın kurumsal mı kişisel mi onu anlarsın
    dememi istemesen de en doğrusu tek tabloya alman olacaktır, başta çektiğin eziyet sonra rahatlık olur ^^
     
  3. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Link için çok çok teşekkür ettim ve aklıma sen accounttype yazınca birşey geldi.
    Bende zaten öyle bir kolon var üyeliktipi diye.

    Ben sessiona inboxid atmak yerine üyelik tipini atsam. Mesajıda direkt üye idye yollasa;
    Fakat gelen giden kutusunda if sorgusunda session tip = kişiselse kişisel tablosundan çek kurumsalda ötekinden desem (yazarken yandı yine ) işler mi ki


    VAZGEÇTİM YEMEZ SİLİNMİYOR MU BU MESAJLAR
     
  4. Chorus

    Chorus Admin

    Kayıt:
    6 Şubat 2007
    Mesajlar:
    334.055
    Beğenilen Mesajlar:
    780
    Ödül Puanları:
    113
    Şehir:
    Taksim/IST.

    Bireyselle kurumsal arasında mesajlaşma olmayacak mı ?
     
  5. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48
  6. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Mesela senin profiline tıkladığımda senin profilinin üstündeki mesaj gönder butonuna ?=inboxid=senin inboxid a yönlendirse mesajlar tablosunada alıcıya onu bassam gönderenede benim inboxid mi ?

    Senin profil sayfanda inbox id ni bir integere atarım. Post methodu ile göndere bastığında açılacak forma bastırırım. Gönderenede sessiondan benim inboxid mi basarım. Sonra mesajla beraber toptan insert et gitsin :D

    Oldu galiba bu



    Naısl olacak bu gönderme işi yahu kafam karıştı :D
     
    Son düzenleme: 16 Şubat 2018
  7. Chorus

    Chorus Admin

    Kayıt:
    6 Şubat 2007
    Mesajlar:
    334.055
    Beğenilen Mesajlar:
    780
    Ödül Puanları:
    113
    Şehir:
    Taksim/IST.

    Sistemi daha yeni yazıyorsan ne kadar zor olursa olsun üyeleri tek tabloya toplayıp ai yaptırman her zaman daha iyi olur. Bulacağın amele çözümleri şimdi işe yarasa da üyeler arttıkça bir yerden patlak verecektir ve geliştirme aşamasını da bu amelelik her seferinde zora sokacaktır.

    Yok değiştirmeyeceğim diyorsan ilk mesajında belirttiğin 1 milyondan başlatma geyiği olur.

    Mesaj gönderirkende eğer girilen sayı 1 milyonun üstüyse bu sorguyu altındaysa bu sorguyu çalıştır diyeceksin.
     
    heRanarchy bunu beğendi.
  8. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Aynen şimdilik öyle yapacağım. Zaten yeni yeni öğreniyorum, sana da birçok kez mesaj attığımdan anlarsın. İlkkez üyelik sistemi kullandığım için sonrasını düşünemedim. Tabloları ayrı kullanmak buraya kadar kolaylık sağlamıştı bana. Armuta benzer bir sistem yapıyorum üyelik girişi yapmamış biri teklif verdiğinde otomatik maili üstüne üye yapiyor (bireysel üye) ve mailine password yolluyor sırf orası için bu şekilde ayırmıştım.
    Tabloları birleştirmeye kalksam sistemi en baştan yazmam gerekecek resmen, sitedeki hemen hemen bütün özellikler üyelik üstüne olduğu için 0 dan yazmakla eş değer. Bir dahaki projeye artık :( yada türk usülü patlayınca düzeltecez :(

    Çok teşekkür ederim yardımınız için yakın zamanda yine başınızı bu konularla ağrıtıyor olacağım ^^
     
  9. Chorus

    Chorus Admin

    Kayıt:
    6 Şubat 2007
    Mesajlar:
    334.055
    Beğenilen Mesajlar:
    780
    Ödül Puanları:
    113
    Şehir:
    Taksim/IST.

    Bende amatörken proje yazmaya başladığım için seni anlayabiliyorum , o yüzden üstüne basa basa söylüyorum.
    Bir proje de gördüğün yanlışı kesinlikle amelelikle halletme , özellikle böyle büyük bir sorun ise. İleride geliştirme sürecini çok yavaşlatıyor , kod fazlalığı insanı çok yoruyor ve belirli bir aşamadan sonra bunların düzeltilmesi imkansız oluyor.
    Bu yüzden alman gibi çalışmak en mantıklısı , 1 yıl plan yap , 1 ayda bitir. Fonksiyonel bir database her şeyden daha önemli.
     
    heRanarchy ve K0mpedan bunu beğendi.
  10. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Dediğiniz gibi tek tabloya aldım üyelikleri işim rahatladı. Eski dosyalarıda sakladım arasıra antreman yaparım :D resmen kendime algoritma ameleliği yaptırıyormuşum :D
     
  11. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Yeni bir soruyla karşınızdayım . Kafamda bir yöntem var onuda yazacağım fakat her hangi bir açık bırakmayayım diye fikrinizi almak istedim.

    *Yapmam gereken sistem bakiye sistemi. Mesela üyeliğe 20 lira ekleyeceğim üye her gelen teklife dönüş yaptığında 1 lirası gidecek.

    Kafamdaki yöntem dönüş için mesajı yazdı o mesajı insert dbye insert ederken bakiyesini $bakiye diye bir değişkene eşitleyip $bakiye=$bakiye-1 yazıp mesajla birlikte onuda üye tablosuna insert (yoksa set mi kullanacağım ?) etmek.
    Bu yöntem işler mi ?
    Mesela bu sitede de bakiye sistemi var nasıl bir yol izlemeliyim ?

    Teşekkürler ^^
     
  12. sarkolata

    sarkolata zaa xD

    Kayıt:
    15 Temmuz 2009
    Mesajlar:
    8.875
    Beğenilen Mesajlar:
    170
    Ödül Puanları:
    73
    Şehir:
    Los Angeles

    UPDATE komutu ile yapabilirsin.
    Bakiyelerin tutulduğu ayrı bir tablo kullan, ID ve bakiye diye iki sütun olabilir mesela, birinin bakiyesi değiştiğinde oradan güncellersin.
     
    K0mpedan bunu beğendi.
  13. Chorus

    Chorus Admin

    Kayıt:
    6 Şubat 2007
    Mesajlar:
    334.055
    Beğenilen Mesajlar:
    780
    Ödül Puanları:
    113
    Şehir:
    Taksim/IST.

    Armut mu yapıyorsun :lolmuch:

    Sarkolatanın dediği gibi bakiyeyi çekip +- işlemini yapıp update yapacaksın.
     
    ExcI ve K0mpedan bunu beğendi.
  14. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Çok teşekkür ederim vallahi hızır gibi yetişiyorsunuz. Sayenizde sürekli birşeyler öğreniyorum.
    Armutla enakliyat karışımı birşey yapıyorum :D Müşteri ne isterse daha doğrusu.
    Sql bilgim kısıtlı her gün yeni birşey öğreniyorum.

    *Bu dediğiniz update işlemini teklife verilen cevabı insert ettiğim sayfada yapacağım değil mi ?
    Birde yazdığım gibi bakiye=bakiye-x şeklinde mi yapacağım ?
     
  15. Chorus

    Chorus Admin

    Kayıt:
    6 Şubat 2007
    Mesajlar:
    334.055
    Beğenilen Mesajlar:
    780
    Ödül Puanları:
    113
    Şehir:
    Taksim/IST.

    Bakiyeyeni=bakiye-x şeklinde.
    Teklife cevap verildiyse update yapılacak.
     
    K0mpedan bunu beğendi.
  16. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    + Olarak bakiyeyi sisteme sonradan ekleyeceğim için direkt üye tablosuna eklesem defaultunu 0 yapsam benim için daha rahat olmaz mı ?
    Yeni tablo açsam şimdi tekrar kayıt ol sisteminde düzenleme yapmam gerekecek ? @sarkolata
     
  17. sarkolata

    sarkolata zaa xD

    Kayıt:
    15 Temmuz 2009
    Mesajlar:
    8.875
    Beğenilen Mesajlar:
    170
    Ödül Puanları:
    73
    Şehir:
    Los Angeles

    Baştan bakiye sistemi olacağını düşünüp o şekilde yapsan daha düzgün olurdu. Geç değil hala uğraşıp yeni tablo açabilirsin. Doğrusu o olur, ama üye tablosuna da bir sütun ekleyebilirsin.
    Bakiyeyi çekip azaltmana gerek yok, update komutunda direk "UPDATE x SET bakiye=bakiye-1" yapsan çalışır.
     
    K0mpedan bunu beğendi.
  18. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Anladım teşekkürler. Siteyi isteyen abilerimiz herşeyi taksit taksit söyledikleri için böyle oluyor. Çokta gocunmuyorum açıkcası bazen zihin olarak çok yorulsamda sürekli birşeyler öğreniyorum ^^
     
  19. Tweety

    Tweety olduser

    Kayıt:
    24 Mayıs 2007
    Mesajlar:
    3.776
    Beğenilen Mesajlar:
    45
    Ödül Puanları:
    48
    Meslek:
    Chief Executive Officer
    Şehir:
    İzmir, Bornova

    Ayrı bir tablo yap, 3 kolon olsun,

    inboxid, artan otomatik numara
    userid, int bireysel ise bireyselin kullanıcı no, kurumsalsa kurumsalın kullanıcı no,
    kurumsal, (true-false) userid değeri kurumsala aitse true, bireysele aitse false...

    Tek tablo üzerinden alacağın inboxid ler ile oldukça basit bir şekilde mesajlaşma gerçekleştirebilirsin...
    1m olayını okumamış olayım daral:

    DB tasarlamada genel olarak tabloları bölersin, bir tabloda ne kadar az sütun o kadar hızlı erişim sağlarsın tablolara, üyelikte aldığın bütün bilgileri tek satıra yazdın, ilerde bir sorgu çalıştırdın id ve pw kontrolü yaptın, lakin o kontrol yapılırken DB Engine gidecek o satırı alacak komple sana o an gereksiz veriyi de okuyacak harddiskten... Aynı anda 3-5 tabloya entry girmekten kaçınma (aldığın verileri dağıtarak) 1 write işlemine karşın onlarca read işlemin olacak, read işlemi yükünü de düşürmen lazım belirli bir noktada... Hatta TSQL trigerlar sana daha çok kolaylık sağlayabilir... vs vs vs...

    Tabi bu dediklerim daha ileri seviyeler, az üyeyle bi işlevini görelim dersen istediğin gibi tasarla, nasıl mantıklı geliyorsa, ancak ilerde sorun yaşarsan DB deki verileri daha düzenli boş bir db'ye taşıyıp sistemi tekrar kodlaman daha baş ağrıtıcı olacaktır...

    Bu tarz konulara beni etiketleyin pls :beer:
     
    K0mpedan ve Bean bunu beğendi.
  20. K0mpedan

    K0mpedan olduser

    Kayıt:
    15 Mart 2013
    Mesajlar:
    1.136
    Beğenilen Mesajlar:
    56
    Ödül Puanları:
    48

    Haha teşekkürler. Ama üyeliği kurumsalla bireyseli tek tabloda birleştirdim çoktan. Yoksa her yeni sistem eklerken türlü türlü kodlar yazmam gerekecekti.

    Bakiye konusuna geleceksek haklısınız sarkoda dedi ayrı tablo yap diye. Sıkıntı olan eski üyeliklere tek tek elimle eklemem gerekecek sanırım. Bakiye tablosunda üyenin idsini girmek gerek sonuçta.