Oca 07
Mysql veritabanınızda bulunan bir tablodaki tekrarlayan kayıtları temizlemek/silmek istiyorsanız aşağıdaki yöntemi kullanabilirsiniz.
1. Öncelikle geçici bir tablo oluşturalım :
CREATE TABLE gecici_tablo LIKE asil_tablo
2. Oluşturduğumuz geçici tabloya tekil kayıtları aktaralım :
INSERT INTO gecici_tablo SELECT DISTINCT * FROM asil_tablo
3. Eski tablomuzu kaldıralım :
4. Geçici tablomuzun adını değiştirelim :
RENAME TABLE gecici_tablo TO asil_tablo
Eki 26
Php ile proje geliştiren herkesin mutlaka veritabanıyla az veya çok mutlaka işi oluyordur. En ufak veritabanı işlemi için bile bir kaç satır kod yazmak gerekir.
$sorgu = "SELECT * FROM projeler WHERE aktif='E' ";
$sonuc = mysql_query($sorgu);
if (mysql_num_rows($sonuc) > 0)
{
$veri = mysql_fetch_object($sonuc);
}
Bir şekilde bu kodları uğraşıp yazmış olsak bile ileride projemiz için kullandığımız veritabanı uygulamasını değiştirmek istediğimizde bütün veritabanı kodlarında php komutlarını belli bir veritabanı uygulamasına göre kullandığımız için neredeyse tüm kodları yeniden yazmamız gerekecektir. (mysql_query, mysql_fetch_object gibi)
Peki ne yapmalıyız?
Hem kod yazımını kolaylaştırmak hemde düzgün bir kod yapısı sağlamak hemde ileriye dönük bir kod yapısı kurmak için özel bir veritabanı sınıfı veya fonksiyonlar kullanılabilir. Bu yapıyı ister kendiniz oluşturun isterseniz hazır kütüphanelerden faydalanın. Ama mutlaka böyle bir yapı kullanın.
ezSQL
ezSQL size böyle bir yapıyı kolayca kullanabileceğiniz bir şekilde sunuyor. Bir çok veritabanı programını destekliyor ezSQL. Aynı zamanda wordpress’in veritabanı sınıfı olan wpdb ezSQL kullanılarak geliştirilmiştir.
Yukarıdaki veritabanı işlemlerini ezSQL ile yazmak istesek aşağıdaki gibi bir satır yeterli olacaktır.
$veri = $db->get_row("SELECT * FROM projeler WHERE aktif = 'E' ");
Bu kadar basit
ezSQL Kullanımı
Öncelikle bu adresten ezSQL kütüphanesini indiriyoruz. İndirdiğiniz zip dosyasını proje dizinine açın. ezSQL’i projemizde kullanabilmel için iki dosyaya ihtiyacımız var birincisi ezSQL çekirdek dosyası (ez_sql_core.php) diğeri ise kullandığımız veritabanı uygulamasına ait dosya. (mysql için ez_sql_mysql.php)
Şimdi veritabanı işlemleri için ezSQL nesnesini oluşturalım.
include_once "ez_sql/shared/ez_sql_core.php";
include_once "ez_sql/mysql/ez_sql_mysql.php";
$db = new ezSQL_mysql('db_user','db_password','db_name','db_host');
Artık $db nesnesini kullanarak tüm veritabanı işlemlerimizi gerçekleştirebiliriz.
Sorgu örnekleri
Tabloya kayıt ekleme. Bu metod geriye Insert ID’yi döndürür.
$db->query("INSERT INTO projeler (id, proje_adi, baslangic_tarihi, aktif) VALUES (NULL,'ezSQL Sınıfı', NOW(), 'E')");
Kayıt güncelleme.
$db->query("UPDATE projeler SET aktif = 'H' WHERE id= '5' ");
Tek satır veri alma
$veri = $db->get_row("SELECT proje_adi, baslangic_tarihi FROM projeler WHERE id = 5");
echo $user->name;
echo $user->email;
Tek bir değer alma
$deger = $db->get_var("SELECT count(*) FROM projeler WHERE aktif= 'E' ");
echo $deger;
Birden fazla satır kayıt alma
$sonuclar = $db->get_results("SELECT proje_adi, baslangic_tarihi FROM projeler");
foreach ( $sonuclar as $veri )
{
echo $veri->proje_adi;
echo $veri->baslangic_tarihi;
}
Diğer örnekler ve daha detaylı bilgi için burayı kullanabilirsiniz.
Umarım projelerinizi daha kolay ve hızlı bir şekilde yürütmenizi sağlayacak bir yazı olmuştur.
Kas 06
Mysql myisam depolama motoru varsayılan olarak 32bit bir adresleme yaptığı için index dosyaları 4gb’dan daha büyük bir data (MYD dosyası) adresleyememektedir. Bu sorunu aşmak için tablo oluşturulurken verilecek olan ayarlarla adreslenecek data miktarının en fazla boyutu belirlenebilir. Tablo zaten var olan bir tablo ise alter table komutu ile tablonun oluşturma ayarları değiştirilebilir. Burada dikkat edilmesi gereken nokta ise alter table komutunun çalışması esnasında tüm indexler yeniden oluşturulacağı için komutun çalışma süresidir. Primary index dışında hiçbir indexi olmayan bir tabloda bu işlem 2 dakika civarında sürerken (4XOpteron,4X15K RPM SCSI,20GB RAM makina konfigürasyonu) index sayısına ve makinanın konfigürasyonuna bağlı olarak bu işlem saatlerce sürebilmektedir.
Eğer kullandığınız bir tabloda “The table is full” hatası alıyorsanız sorunu çözmek için öncelikle tablo yapısını incelemek için:
mysql> show table status like 'tablo' \G
*************************** 1. row ***************************
Name: tablo
Type: MyISAM
Row_format: Dynamic
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 4294967295
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2003-03-03 00:43:43
Update_time: 2003-03-03 00:43:43
Check_time: 2003-06-14 15:11:21
Create_options:
Comment:
1 row in set (0.00 sec)
Dikkat ederseniz maksimum data boyutu Max_data_length 4gb. Bunu düzeltmek için
mysql> alter table tablo max_rows = 200000000000 avg_row_length = 50;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show table status like 'tablo' \G
*************************** 1. row ***************************
Name: tablo
Type: MyISAM
Row_format: Dynamic
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 1099511627775
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2003-06-17 13:12:49
Update_time: 2003-06-17 13:12:49
Check_time: NULL
Create_options: max_rows=4294967295 avg_row_length=50
Comment:
1 row in set (0.00 sec)
Şimdi mysql daha çok veri depolamamıza izin verecek.
Burada max_rows parametresi en fazla eklenebilecek kayıt sayısını, avg_row_length ise yaklaşık satır boyutunu belirtmektedir. Verdiğimiz rakamlar sonuçta gene bazı limitleri ifade etmektedir. Limitsiz hale getirmemektedir.
Dikkat edilmesi gereken bir diğer husus ise işletim sisteminin desteklediği maksimum dosya boyutudur. Bazı işletim sistemleri (örneğin solaris) dosya boyutuna 4gb gibi bir sınır koymuş ise bu yapılan işlemler işe yaramayacaktır. Sistem planlaması esnasında bu tür konular gözönünde bulundurulmalıdır.
Kas 05
Birden fazla tablodaki kontrollere göre yapacağınız bir update sorgusunu aşağıdaki gibi oluşturabilirsiniz.
UPDATE tablo1
INNER JOIN tablo2 ON tablo1.id=tablo2.id AND tablo2.sehir_id='34'
SET tablo1.metin=REPLACE(tablo1.metin,'İst.','İstanbul')
WHERE tablo1.metin LIKE "%İst.%"
Bu sorgu ile tablo2 ile joinlenen tablo1′deki metin alnında replace komutu ile değişiklik yapılıyor.
Şub 15
Web uygulamalarında çoğu zaman bir listenin sıralamasını kullanıcı seçimi doğrultusunda sunmak gerekir. Favori kataplar, müzikler v.s Bu listelerdeki sıralamayı kullanıcıya göre ayarlamak için de genellikle “Yukarı Taşı”,”Aşağı Taşı”,”En Üste”,”En Alta” gibi butonlar koyup kullanıcının her seferinde sadece bir adım atlayarak sıralamayı yapmasını isteriz. Bir başka yöntemde listedeki her satıra textbox koyup sıralamanın bu kutulardaki sayılara göre ayarlanmasıdır. Kullanıcı sıralamayı tek adımda oluşturacak olsa da hesaplama yapmak zorunda kalacağı için bu yöntem de kolay olmayacaktır.
Bu yazımızda gelişen javascript ve ajax yöntemleri sayesinde sürükle-bırak yöntemini kullanarak böyle bir sıralamayı daha kolay bir şekilde nasıl yapabileceğimizi göreceğiz. Listedeki bir elemanı sürükleyerek sırasının değiştirilmesini, bıraktığımızda ise veritabanına listedeki yeni sırasının kaydedilmesini sağlayacağız. Tüm işlemleri (sürükle-bırak, efektler, ajax ile veri kaydı) Prototype ve Scriptaculous js frameworklerinden faydalanarak yapacağız. Devamını Oku »
Şub 13
Scott Klarr isimli bir arkadaşımız hemen hemen her konuda cheat sheets diye tabir edilen kopya kağıtlarını bir araya toplamış. Programlama, bilgisayar sistemleri ve tasarım konularında çok sayıda kopya kağıdı mevcut. Elimin altında her konuda özet bir belge olsun diyenler için bire bir.
Şub 01
Mysql’de verileri Türkçe tarih formatı şeklinde çekerek ekrana basmayı bir çoğumuz istemişizdir. Mysql’de tarih formatı varsayılan olarak “Yıl-Ay-Gün” olarak gelmektedir.
Şimdi bunu avantajları ve dezavantajları ile beraber nasıl kullanabiliceğimizi anlatmaya çalışacağız. Faydalanacağımız mysql fonksiyonu date_format() fonksiyonudur.
Fonksiyonun kullanımı :
date_format(tarih,istenilen_format)
ör:
SELECT date_format(kayit_tarihi, '%d-%m-%Y') AS yeni_tarih FROM kayitlar WHERE durum='4'
Yukarıdaki sorgu sonucunda gelen sonuç “2008-01-31″ şeklindeki bir değer için “31-01-2008″ olacaktır. Tahmin edeceğiniz üzere %d = gün, %m=ay, %Y=yılı temsil eder. Farklı kullanımlar için Mysql’in sitesinden faydalanabilirsiniz.
Bu şekildeki kullanımın avantajı Mysql’den gelen veriyi yeniden formatlama zahmetinden bizi kurtarmasıdır. Bu kullanımın dezavantajlı olduğu durumlar da olmaktadır. Bu Mysql fonksiyonun kullanılması genellikle sorguların performansını düşürmektedir. Ziyaretçi sayısı yüksek bir sitede bu fonksiyonu kullandığınız sorgularınız varsa o sorguları gözden geçirmenizi ve performansını takip etmenizi tavsiye ederiz. Eğer performansı düşürdüğünü gördüyseniz ve tarihi Php ile formatlamak isterseniz şu yazımızdan ( php tarih format ) faydalanabilirsiniz.
Oca 24
Veritabanı kullanımında önemli olan bir şey de hangi iş için hangi veritabanının kullanılacağına karar vermektir.
Hangi veritabanının kullanılacağına karar vermek için sahip olmak istenen özellikler bilinmeli ve hangi veritabanı istenen özellikleri karşılıyor araştırılmalıdır.
Web programlama da genelde isimleri beraber anılan programlama dilleri ve veritabanları birlikte kullanılır.
PHP/MySQL, ASP/MSSQL,JAVA/Oracle vb. Devamını Oku »
Ağu 14
Web programlamaya yeni başlayanlar için Apache Php Mysql kurulumu hakkında bilgi verelim istedik. Kurulum için 2 alternatifiniz var; her programı ayrı ayrı kurup ayarlarını elle yapmak yada hazır kurulum programlarını kullanarak tek adımda tüm kurulumu gerçekleştirmek. Yeni başlayanlar büyük ihtimalle hazır kurulum programlarını tercih edecektir (Tavsiye edilir). Ama bu üçlünün (Apache Php Mysql) kendi aralarındaki ilişkiyi anlamak ve deneyim kazanmak adına en az bir kez, her birini ayrı ayrı kurup ayarlarını elle yapmanızda fayda var.
Apache Php Mysql Kurulumu (Ayrı Ayrı):
- Windows Sistemlerde
- Ubuntu-Debian Linux Sistemlerde Buradan veya Buradan
- OpenBSD Unix Sistemlerde
- Pardus Linux Sistemlerde
Apache Php Mysql Kurulumu (Hazır Programlar İle):
- WAMP Web – İndir – Kurulum
- EasyPHP Web – İndir – Kurulum
- Apache2Triad Web – İndir – Kurulum
- PhpTriad Web – İndir – Kurulum
- XAMPP Web – İndir – Kurulum
- NuSphere Tech Platform Web – İndir – Kurulum
- AppServ Web – İndir – Kurulum
- Uniform Server Web – İndir – Kurulum
Tem 26
Program yazmanın nedeni genelde veriyi işlemek ve onu bilgiye dönüştürebilmektir. Yazdığımız programlar çok farklı kaynaklardan veri alabilmektedir. Bu kaynak bazen bir kullanıcı arayüzündeki form, bazen gökyüzündeki bir balona bağlı bir sensörün ürettiği bir elektronik sinyal, bazen de binlerce satırlık metin dosyaları olarak karşımıza çıkmaktadır.
Devamını Oku »
Son Yorumlar