joysro

game12
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
jado
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 ^^
 
Kayıt
15 Temmuz 2009
Mesajlar
9.025
Beğeniler
243
Takımı
Galatasaray
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 ^^
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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
 
Kayıt
6 Şubat 2007
Mesajlar
335.343
Beğeniler
1.494
Şehir
Taksim/IST.
Server
Flora
Takımı
Galatasaray
Bireyselle kurumsal arasında mesajlaşma olmayacak mı ?
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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:
Kayıt
6 Şubat 2007
Mesajlar
335.343
Beğeniler
1.494
Şehir
Taksim/IST.
Server
Flora
Takımı
Galatasaray
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.
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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 ^^
 
Kayıt
6 Şubat 2007
Mesajlar
335.343
Beğeniler
1.494
Şehir
Taksim/IST.
Server
Flora
Takımı
Galatasaray
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 ^^
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.
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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 ^^
 
Kayıt
15 Temmuz 2009
Mesajlar
9.025
Beğeniler
243
Takımı
Galatasaray
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.
 
Kayıt
6 Şubat 2007
Mesajlar
335.343
Beğeniler
1.494
Şehir
Taksim/IST.
Server
Flora
Takımı
Galatasaray
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 ^^
Armut mu yapıyorsun :lolmuch:

Sarkolatanın dediği gibi bakiyeyi çekip +- işlemini yapıp update yapacaksın.
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
Ç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 ?
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
+ 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
 
Kayıt
15 Temmuz 2009
Mesajlar
9.025
Beğeniler
243
Takımı
Galatasaray
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.
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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 ^^
 
Kayıt
24 Mayıs 2007
Mesajlar
3.807
Beğeniler
55
Ş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:
 
Kayıt
15 Mart 2013
Mesajlar
1.363
Beğeniler
138
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.
 
Yukarı Alt