İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

MySQL Sütun Oluşturma Hakkında

5DEL1

0
İyinet Üyesi
Onaylı Üye
Katılım
17 Aralık 2010
Mesajlar
148
Reaction score
3
Konum
Ankara
Merhaba,
MySQL ve php hakkında kendimi geliştirmeye çalışıyorum. Fakat MySQL ile ilgili kafama takılanlar var Yardımcı olan veya olmaya çalışan herkese şimdiden teşekkürler.
Üye kayıt formu yapıyorum kayıt formunda aşağıdaki bilgiler kullanılacak form örneği ve tablo yapısı bu şekilde olacak fakat takıldığım noktalar,

  • Telefon sütunlarının türünü int(10). bigint(10). son olarakta varchar(10) yapmama rağmen telefon kayıtlarını hep int. en üst limiti olan 2147683647 şeklinde kaydediyor.
  • Cep telefonlarını "GSM KODU" ve "TEL NO şeklinde kaydetmem için tabloda ne gibi bir değişiklik yapmam gerekiyor.
  • Doğum tarihi için tek sütun oluşturdum ve bunu 2012-06-15 şeklinde kaydediyor ben ise bunu müşterinin "GÜN" "AY" "YIL" Şeklinde listeden seçtirebilmem için tabloda 3 ayrı sütün mu açmam gerekiyor.
  • Son olarak bu işlemlerde de bir hata varsa onlarıda belirtirseniz sevinirim.


Ekli dosyayı görüntüle 3754

Ekli dosyayı görüntüle 3755
 

metadige

0
İyinet Üyesi
Katılım
23 Aralık 2005
Mesajlar
354
Reaction score
4
Arkadaşım Telefon numaraları için varchar 10 yapman yeterli zaten tr içi yapacaksan zaten daha fazla olmasına gerek yok. Formunda da 10 hane olacak şekilde ayarlarsın( maxlength="10" gibi) . Böylece eksik veya fazla girildiğini daha rahatça kontrol edebilirsin. Posttan gelen veriyi işlerken sayı dışında olanları temizler eklersin. Eğer alan kodu ve no şeklinde ayırmak istersen alankodu 3, numara 7 olarak yine varchar yapabilirsin.

Eposta için 30 karakter az olabilir. Çünkü uzun mail adresi kullananlar çıkabilir. ayrıca şifre için de 30 karakter az. Çünkü şifreleri düz haliyle değil en azından md5 hash yaparak atman gerekir ki o da 32 karakter zaten. Veya sha1 kullanırsan 410 karakter olması lazım.

Cinsiyet için 30 karakter yer ayıracağına int(1) alan ıolarak ayarlayıp. Formda seçmeli yapsan 1 erkek, 2 bayan gibi daha mantıklı olur. Ya da alan türünü yine set ('e','k') yapıp yine tek karakterde halledebilirsin.

Aynı mantık şehir ve ilçeler için de geçerli. Şehirler ve ilçeleri ayrı tablolarda tutup idlerini eklemen daha akıllıca ve ileri dönük olur. Böylece yine yazım yanlışlarının önüne geçersin ve aramalarda vs. daha kullanışlı olmuş olur. Hem de psotta direk select içinde gösterip işlem kolaylığı sağlarsın formu dolduran içinde.

Doğum tarihi için ayrı sütun açmana gerek yok. Yapman gereken formda ayrı seçtirip eklerken birleştirmek. Yani formda gün, ay, yıl olarak select ekler php ye for döngüsü ile yazdırırsın. Postu işlerken de kontrolleri yapıp birleştirirsin.

PHP:
$dtarih = $yil.'-'.$ay.'-'.$gun

gibi.
 

5DEL1

0
İyinet Üyesi
Onaylı Üye
Katılım
17 Aralık 2010
Mesajlar
148
Reaction score
3
Konum
Ankara

Öncelikce cevabın için çok teşekkür ederim. Uzunluk değerlerleri denemelik olduğu için 30 filan yazıyor.



Arkadaşım Telefon numaraları için varchar 10 yapman yeterli zaten tr içi yapacaksan zaten daha fazla olmasına gerek yok. Formunda da 10 hane olacak şekilde ayarlarsın( maxlength="10" gibi) . Böylece eksik veya fazla girildiğini daha rahatça kontrol edebilirsin. Posttan gelen veriyi işlerken sayı dışında olanları temizler eklersin. Eğer alan kodu ve no şeklinde ayırmak istersen alankodu 3, numara 7 olarak yine varchar yapabilirsin.

Varchar yapmama rağmen telefon numarasını girdiğimde misal 5555555555 şeklinde girdiğimde sqlden kontrol ettiğimde 2147683647 şeklinde atıyor bu sorunu çözemedim :s


Eposta için 30 karakter az olabilir. Çünkü uzun mail adresi kullananlar çıkabilir. ayrıca şifre için de 30 karakter az. Çünkü şifreleri düz haliyle değil en azından md5 hash yaparak atman gerekir ki o da 32 karakter zaten. Veya sha1 kullanırsan 410 karakter olması lazım.

sha1'e göre 40 karakter olacak


Cinsiyet için 30 karakter yer ayıracağına int(1) alan ıolarak ayarlayıp. Formda seçmeli yapsan 1 erkek, 2 bayan gibi daha mantıklı olur. Ya da alan türünü yine set ('e','k') yapıp yine tek karakterde halledebilirsin.

int(1) olarak ayarlamış olmam lazımdı telefon nuaralarını düzeltriken arada o da kaynadı galiba :) bay(1) bayan(2) olacaktı

Aynı mantık şehir ve ilçeler için de geçerli. Şehirler ve ilçeleri ayrı tablolarda tutup idlerini eklemen daha akıllıca ve ileri dönük olur. Böylece yine yazım yanlışlarının önüne geçersin ve aramalarda vs. daha kullanışlı olmuş olur. Hem de psotta direk select içinde gösterip işlem kolaylığı sağlarsın formu dolduran içinde.

Üyelik sırasında şehir seçecek ve seçilen şehrin id si plaka numarası olacağı için direk onu basacak tabloya


Doğum tarihi için ayrı sütun açmana gerek yok. Yapman gereken formda ayrı seçtirip eklerken birleştirmek. Yani formda gün, ay, yıl olarak select ekler php ye for döngüsü ile yazdırırsın. Postu işlerken de kontrolleri yapıp birleştirirsin.

PHP:
$dtarih = $yil.'-'.$ay.'-'.$gun

gibi.

Teşekkür ederim bu işime yarayacak
 

metadige

0
İyinet Üyesi
Katılım
23 Aralık 2005
Mesajlar
354
Reaction score
4


Varchar yapmama rağmen telefon numarasını girdiğimde misal 5555555555 şeklinde girdiğimde sqlden kontrol ettiğimde 2147683647 şeklinde atıyor bu sorunu çözemedim :s



posttan gelen veriyi nasıl işleyip ekliyorsun. intval kullanıyorsan değiştirir numarayı. Php tarafında:

PHP:
$tel_no = preg_replace('/[^0-9]/','',$_POST['tel_no']);

şeklinde rakam dışındakileri temizleyip, sqle eklerken :

PHP:
$sorgu = 'insert into tablon set 
ad = "'.$ad.'",
tel_no="'.$tel_no.'", 
...
...
vs';

gibi eklemen lazım tırnaklara dikkat et. Alan tipi de varchar olunca başka sorun olmaz.




sha1'e göre 40 karakter olacak

Sıfırı yazarken birede basmışım yanlışlıkla, yoksa biliyorum kaç karakter olduğunu.
 

5DEL1

0
İyinet Üyesi
Onaylı Üye
Katılım
17 Aralık 2010
Mesajlar
148
Reaction score
3
Konum
Ankara
posttan gelen veriyi nasıl işleyip ekliyorsun. intval kullanıyorsan değiştirir numarayı. Php tarafında:

PHP:
$tel_no = preg_replace('/[^0-9]/','',$_POST['tel_no']);

şeklinde rakam dışındakileri temizleyip, sqle eklerken :

PHP:
$sorgu = 'insert into tablon set 
ad = "'.$ad.'",
tel_no="'.$tel_no.'", 
...
...
vs';

gibi eklemen lazım tırnaklara dikkat et. Alan tipi de varchar olunca başka sorun olmaz.





Sıfırı yazarken birede basmışım yanlışlıkla, yoksa biliyorum kaç karakter olduğunu.

Bende "40 olacak" derken bu hataları giderince 30'u 40 yapacağım anlamında söylemiştim :)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst