Php ile Veritabanı İşlemleri
Veritabanındaki verileri belirli bir düzene göre sıralama işlemi yapmak için Order By komutu kullanılır.
Kullanım şekli:
order by field yazdıktan sonra ilk parametre: hangi field‘da sıralama yapacağı, ardından gelen parametreler ise hangi sırayla geleceğidir. Ayrıca not edeyim; duruma göre sırayı tersine çevirmek isterseniz parantez dışına “desc” yazabilirsiniz.
SELECT kolon_adı FROM tablo_adı ORDER BY kolon_adı ASC veya DESC
<?php $baglanti = mysql_connect("localhost","root","1234"); if (!$baglanti) { die("MySQL bağlantısı sağlanamadı"); } mysql_select_db("veritabani", $baglanti); $sql = mysql_query("SELECT * FROM tablomuz ORDER BY ad"); while($dondur = mysql_fetch_array($sql)) { echo $dondur['ad']; echo " " . $dondur['soyad']; echo "<br />"; } mysql_close($baglanti); ?>
Üstteki kodları test ettiğinizde, ilgili tablodaki verilerin artan sıralama düzeninde listelendiğini göreceksiniz. Eğer bunun tam tersini isterseniz sorgu ifadesinde:
SELECT * FROM tablomuz ORDER BY ad DESC
Şeklinde kullanmamız gerekir. Hiç değer belirtilmezse veya ASC kullanılırsa artan, DESC kullanırlırsa azalan sıralama yaptığını unutmamalıyız.
örnek 2 :
Örnek
Örneğin bir alış-veriş sitesinde kategori ismine göre sıralama yapalım, ve bunu yaparken de field sıralama özelliğini kullanalım. Bunu yaparken 2 adet sorgu yazacağız.
İlk adım kategorileri bir diziye almak;
PHP
$sorted_cat_ids = array(); $query = mysql_query("select id from kategoriler order by ad asc"); while ($result = mysql_fetch_array($query, MYSQL_ASSOC)) { $sorted_cat_ids[] = $result["id"]; } $sorted_cat_ids = array(); $query = mysql_query("select id from kategoriler order by ad asc"); while ($result = mysql_fetch_array($query, MYSQL_ASSOC)) { $sorted_cat_ids[] = $result["id"]; }
Şimdi sıra ürünleri getirmekte;
PHP
$query = mysql_query(sprintf('select id, ad from urunler order by field(kategori_id, %1$s)', implode(", ", $sorted_cat_ids))); while($result = mysql_fetch_array($query, MYSQL_ASSOC)) { // işlemler $query = mysql_query(sprintf('select id, ad from urunler order by field(kategori_id, %1$s)', implode(", ", $sorted_cat_ids))); while($result = mysql_fetch_array($query, MYSQL_ASSOC)) { // işlemler }
Önceki derslerden de bilindiği üzere SELECT deyimini kullanarak veritabanımızda bulunan tablolardaki verileri çekebiliyorduk. Normal şartlarda SELECT ile sorguladığımız veriler tabloya kayededilme sırasına göre elde edilir. Fakat bu normal akışı ORDER BY deyimi aracılığıyla değiştirebiliriz. Yani yukarıdaki tabloda personel bilgilerini doğum tarihlerine göre artan/azalan sırada çekebiliriz.