Php-Mysql veritabanı ayrıntılı arama işlemi
5268 4

Bir önceki makalede arama işleminden bahsetmiştik. Daha sonra aklıma gelen bir eksikliği çözüme kavuşturalım istedim. Sorun şu ki; arama kutucuğuna iki isim yazılırsa aynı değeri bulamadığı takdirde hiçbir sonuç üretmiyor. Biz girilen değerlerde boşluk varsa yani iki kelimeyse veya daha fazla, kelimeleri parçalayıp o şekilde arama yapalım ve daha çok sonuç üretelim. Aşağıdaki kodlara bakacak olursanız, kaç kelime girilirse girilsin, döngü yardımıyla sorgu cümlemizi oluşturduğumuzu görürsünüz.

$parcala=explode(" ",$ara);
$sor="select * from deneme where ad like ";
for ($i=0;$i<count($parcala)-1;$i++){
	$sor.="%$parcala[$i]%' or ad LIKE";
}
$sor.="'%$parcala[$i]%'";

Gelen değer " " karakterine göre parçalanıyor. Öncesinde trim($ara); kullanmak mantıklı olabilir. Daha sonra herbir kelime döngü içerisinde sorgu cümlesine ekleniyor. Videoda döngü içerisindeki kod hatalı yazılmış ve doğrusu yukarıdadır. Daha sonra hazırladığımız sorgu cümlesini mysql_query() içerisinde çalıştırdığımızda geri kalan listeleme işlemidir. Kodlar aşağıdaki gibi olacak.

<?php
if ($_POST){
    $ara=$_POST["ara"];
	$parcala=explode(" ",$ara);
	$sor="select * from deneme where ad like ";
	for ($i=0;$i<count($parcala)-1;$i++){
		$sor.="%$parcala[$i]%' or ad LIKE";
	}
	$sor.="'%$parcala[$i]%'";
	$sorgu=mysql_query($sor);
	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
Kubilay 3 yıl önce dedi ki;
Genelde ilan ve satış sitelerinde bulunan ayrıntılı daha doğrusu kategorilere göre aramayı nasıl yapabilirim. örnek olarak sahibinden.com de ki arama kısmı gibi http://i.hizliresim.com/89aRM7.png Cevapla
admin 3 yıl önce cevap verdi;
Ben şu şekilde bir mantık kuruyorum; Sorguyu string bir değişken içerisinde birleştirme ile oluşturup en son çalıştırmak. http://hizliresim.com/l0qg7r
srknzyrk 1 yıl önce dedi ki;
Merhaba hocam sizin yapmış ve anlatmış olduğunuz php ile mysql veritabanına ekleme çıkarma silme arama işlemlerini kendime göre düzenledim ayarları yaptım. Sormak istediğim ara işlemini düzenle.php ile birleştirmek istiyorum düzenle.php de çıkan güncelle butonunu arama sonuçlarının listelenmesinde de olsun istiyorum 20 bin tane conta kaydım var arama ile sonuca ulaştığım contanın yanında düzenle/güncelle olsun ve düzenle.php de o contanın kaydına detayına gitsin istiyorum mümkünmü aceba ne kullanmalıyım ? Cevapla
OKTY33 10 ay önce dedi ki;
Hocam çok ufak bir sıkıntı varda acaba yardımcı olabilirmisiniz. Cevapla
^
X