Php-Mysql veritabanı arama işlemi
12214 4

Daha önce size "SELECT" ifadesinin kullanımını anlatmıştım. Yine bu ifadeyi kullanarak bir arama işlemi yapacağız. Aslında arama işleminden kasıt istediğimiz kriterlere uygun kayıtları listelemek. Zaten listeleme işleminden bahsetmiştik.

Örnek bir tablo oluşturalım ve adı "ogrenciler" olsun.

id ad_soyad okul_no yas cinsiyet
1 Zeynep Çimen 125 15 Bayan
2 Emrah Yalaz 127 16 Erkek
3 Ahmet Topuz 128 15 Erkek
4 Elif Duman 130 16 Bayan
5 Hasan Durmaz 132 17 Erkek

Bu tabloyu referans alarak birkaç sorgu oluşturalım. 

SELECT * from ogrenciler
WHERE cinsiyet='Bayan'

WHERE ifadesi ile cinsiyeti "Bayan" olan öğrencilerin seçileceğini söyledik. Bu sorgudan 2 sonuç çıkar.

id ad_soyad okul_no yas cinsiyet
1 Zeynep Çimen 125 15 Bayan
4 Elif Duman 130 16 Bayan

Bu örneği daha önce de yapmıştık, tekrar yapmamdaki maksat üzerine küçük bir eklenti yapacak olmamız. Eklentimiz "LIKE" kelimesidir. Bu kelime ile aranan ifade sizin arama yaptığınız alanda bir şekilde geçiyorsa bu sonuçları alabilirsiniz.

SELECT * FROM ogrenciler
WHERE ad_soyad LIKE 'Zeynep Çimen'
id ad_soyad okul_no yas cinsiyet
1 Zeynep Çimen 125 15 Bayan

Görüldüğü gibi "Zeynep Çimen" ifadesinin bulunduğu kaydı seçmiş olduk. Fakat pek te kullanışlı gibi durmuyor değil mi? "LIKE" kelimesini "%" özel karakteri ile kullanınca biraz daha anlamlı olur. Şöyle ki;

SELECT * FROM ogrenciler
WHERE ad_soyad LIKE '%ma%'
id ad_soyad okul_no yas cinsiyet
4 Elif Duman 130 16 Bayan
5 Hasan Durmaz 132 17 Erkek

ad_soyad alanında "ma" ifadesi geçen kayıtları aramış olduk. "%" sembolü önüne gelirse öncesi önemli değil, sonuna gelirse sonrası önemli değil demiş oluyorsunuz. Yani "ma" ifadesini gördüğün an bul getir demiş oluyoruz.

  • "%tar" : Başlangıcı önemli değil bitişi "tar" olan kelimeler.(anahtar,gitar,avatar...)
  • "tar%" : Başlangıcı "tar" olan kelimeler.(tarih,tarla,tarçın,tarkan...)
  • "%tar%" : Başlangıç ve bitişi önemli değil içerisinde "tar" geçen kelimeler. (anahtar,tarkan,anahtarlık...)

Eğer birden fazla alanda aynı kelimeyi aramak isterseniz şöyle bir yazım gerekir;

SELECT * FROM  `kullanicilar` 
WHERE ad_soyad LIKE  '%an%' || cinsiyet LIKE  '%an%'
id ad_soyad okul_no yas cinsiyet
1 Zeynep Çimen 125 15 Bayan
4 Elif Duman 130 16 Bayan
5 Hasan Durmaz 132 17 Erkek

Görüldüğü gibi ad_soyad veya cinsiyet alanında "an" ifadesi olan kayıtlar getirildi.

Devam eden örneğimize bir de "arama.php" dosyamızı ekleyeceğiz. Yapılan işlem tek dosyada tamamlanıyor. Başlangıçta bir text kutusuna sahip form görünüyor. Birşeyler yazıp ara dediğimizde uygun kayıtlar listeleniyor. 

"arama.php" dosyası kodları;

<?php

if ($_POST){
    $ara=$_POST["ara"];
	$sorgu=mysql_query("select * from deneme where ad like '%$ara%'");
	if (empty($ara)){
		echo 'Arama alanını boş bıraktın';
	}else{
		if (mysql_num_rows($sorgu)>0){
			while($kayit=mysql_fetch_array($sorgu)){
				echo $kayit["ad"].' '.$kayit["soyad"].' '.$kayit["e_posta"];
				echo '<br/>';
			}
		}else{
			echo 'Eşleşen Kayıt Yok.';
		}
	}
}else{
?>
<form name="form1" action="index.php?sayfa=arama" method="post">
Aranacak Kelime:<input type="text" name="ara"/>
<input type="submit" name="gonder" value="Ara"/>
</form>
<?php
}
?>

 

Yorumlar
can 3 yıl önce dedi ki;
aynen kodları denedim fakat bi sorun var kayıt var olmasına ragmen kayıt yok diyorSoru Cevapla
admin 3 yıl önce dedi ki;
http://www.yilmazarslanturk.com/img/uygulama/veri_tabani_hepsi.rar bu adresten uygulamanın son halini indirip karşılaştırabilirsin. Cevapla
can 3 yıl önce cevap verdi;
verdiginiz dosyayı indirdim bütün dosyalar üzerinde kendi veri tabanıma göre alanları değiştirdim sadece ama sonuç aynı hepsi çalışıyor ama arama çalışmıyor yazıyorum ara diyorum ama sonuç bulunamadı diyor herhangi bir hatada vermiyor hocamGözleri Dönen
can 3 yıl önce cevap verdi;
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in şeklinde bir hata vermeye başladı .s
^
X