• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

Kriterlere göre seçenekli arama ?

Konuyu Okuyan Kişiler (0)

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#1
Merhaba arkadaşlar,
Select optionlardan gelen kriterlere göre arma işlemi yapmak istiyorum.
Yapıyorum ancak sadece bir tane kriteri baz olarak işlem döndürüyor.
Sadece Erkek dediğim hiç bir sorun yok ancak İstanbul Erkek dediğimde bayanlarıda gösteriyor.

Yapım şu şekilde yardımcı olursanız çok sevinirim o kadar yerde konu açtık bir sonuca varamadım,
İF ile her gelen value değeri için sql sorgusu çalıştırmayı denemiştim ancak onda da çok sql sorgusu dönücek,
Bu işlemi gelen değerleri array atarak foreach içinde yapabilirmiyiz bu konuda php bilgim yetersiz geliyor malesef.


Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Arama</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
$baglan = mysql_connect("localhost","root","") or die (mysql_error());
$db = mysql_select_db("dil_database", $baglan) or die (mysql_error());
mysql_query("SET CHARACTER SET utf-8");
	$uyeBul = mysql_query("select * from site_uye");
		$uyeGoster = mysql_fetch_array($uyeBul);
?>
<!--Arama_Panel-->
	<div class="arama_panel">
		<div class="arama_baslik"><span>Istediginiz kritelere göre arama yapabilirsiniz</span></div>
		<div class="sag_yazi_alan">
		<form action="islem.php" method="GET">
		<span  class="select_baslik">İlçe Seçiniz</span>
		<span>
		<select name="ilce" class="select">
				<?php
	
		
				$ilceBul = mysql_query("select * from site_ilce");
				echo'<option value="0">İlçe seçiniz</option>';
			while ($rG = mysql_fetch_array($ilceBul)){
				
				echo '<option name="'.$rG["id"].'" value="'.$rG["id"].'"';
				echo ($rG["id"] == $uyeGoster["v_id"] );
				echo '>'.$rG["ilce"].'</option>';
			}
			
		
		?>
		</select>
		</span>
		<span class="select_baslik">Ders seçiniz</span>
		<span>
		<select name="v_id" class="select">
			<?php
	
		
				$dersBul = mysql_query("select * from site_ders");
				echo'<option value="0">Ders seçiniz</option>';
			while ($rG = mysql_fetch_array($dersBul)){
				
				echo '<option name="'.$rG["id"].'" value="'.$rG["id"].'"';
				echo ($rG["id"] == $uyeGoster["v_id"]);
				echo '>'.$rG["ders"].'</option>';
			}
			
		
		?>
		</select>
		</span>
		<span  class="select_baslik">Seviye seçiniz</span>
		<span>
		<select name="seviye_id"  class="select">
			<?php

		
				$seviyeBul = mysql_query("select * from ders_seviye");
				echo'<option value="0">Seviye seçiniz</option>';
			while ($rG = mysql_fetch_array($seviyeBul)){
				
				echo '<option name="'.$rG["id"].'" value="'.$rG["id"].'"';
				echo ($rG["id"] == $uyeGoster["seviye_id"]);
				echo '>'.$rG["seviye"].'</option>';
			}
			
		
		?>
		</select>
		</span>
		<span class="select_baslik">Cinsiyet seçiniz</span>
		<span><select name="cinsiyeti" class="select">
		<option value="0">Seviye seçiniz</option>
		<option value="Bayan">Bayan</option> 
		<option value="Erkek">Erkek</option> 

		</select>
		</span>
		<input type="image" src="../tema/standart/images/arama.png" class="ara_button" alt="Submit" />
		</form>
		</div>
	</div>
	<!--#Arama_Panel-->
</body>
</html>
Kod:
<html>
<head>
<title>arama</title>
<link rel="stylesheet" type="text/css" href="../tema/standart/css/style.css" />
<body>
<?php
$baglan = mysql_connect("localhost","root","") or die (mysql_error());
$db = mysql_select_db("dil_database", $baglan) or die (mysql_error());
mysql_query("SET CHARACTER SET utf8");
?>
<?php

	
		$ilce = strip_tags(trim($_GET["ilce"]));
		$v_id = strip_tags(trim($_GET["v_id"]));
		$seviye_id = strip_tags(trim($_GET["seviye_id"]));
		$cinsiyeti = strip_tags(trim($_GET["cinsiyeti"]));

		$sayfa = @$_GET["sayfa"];
			if (empty($sayfa) || !is_numeric($sayfa)){
				$sayfa = 1;
			}
			$toplam = mysql_num_rows(mysql_query("select * from site_uye where onay='1'"));
			$lim = 10;
			$goster = $sayfa * $lim - $lim;


		
		$hocaBul = mysql_query("SELECT * FROM site_uye WHERE ilce LIKE '%$ilce%' || v_id LIKE '%$v_id%' || seviye_id LIKE '%$seviye_id%' || cinsiyeti LIKE '%$cinsiyeti%' order by id desc  limit $goster,$lim");


				
			$hocaSay = mysql_num_rows($hocaBul);
			if ($hocaSay > 0){
		echo'<div class="hizmetler">
		<div class="hizmetler_baslik"><img src="/tema/standart/images/search.png" alt="hizmet" /><strong>Arama</strong></div>
		<div class="hizmet_alan">
			<div class="sss_blokbaslik"><img src="/tema/standart/images/buttons_arrow.png" alt="button" /><h2 title="yasindan">Arama Sonuçları</h2></div>
			<ul class="arama_sutun">
				<li class="a_ogretmen"><span class="soru_text">Ögretmen adı</span></li>
				<li class="t_ogretmen"><span class="soru_text">Tecrübe</span></li>
				<li class="s_ogretmen"><span class="soru_text">1 seans ücreti</span></li>
				<li class="c_ogretmen"><span class="soru_text">Cinsiyet</span></li>
				<li class="u_ogretmen"><span class="soru_text">Üniversite</span></li>
			</ul>';
				while ($goster = mysql_fetch_array($hocaBul)){
					
                $kadi =$goster["kadi"];
				$tecrube =$goster["tecrube"];
				$fiyat =$goster["fiyat"];
				$cinsiyeti =$goster["cinsiyeti"];
				$m_universite =$goster["m_universite"];

	
					
					echo'<ul class="arama_liste">
			<li class="a_ogretmen"><span class="aramalistetext">'.$goster["kadi"].'</span></li>
			<li class="t_ogretmen"><span class="aramalistetext">'.$goster["tecrube"].'</span></li>
			<li class="s_ogretmen"><span class="aramalistetext">'.$goster["fiyat"].'</span></li>
			<li class="c_ogretmen"><span class="aramalistetext"> '.$goster["cinsiyeti"].'</span></li>
			<li class="u_ogretmen"><span class="aramalistetext">'.$goster["m_universite"].'</span></li>
			
</ul>';
				}
			echo'</div>

<div class="hizmet_alanalt">';
	$ssayisi = ceil($toplam/$lim);
	$forlimit = 3;
	echo '<div style="margin:40px 0 10px 130px;" class="sayfala">';
	echo'<span class="t_sayfa">Toplam sayfa:<strong>'.$ssayisi.'</strong></span>';
	if($sayfa > 1){
		$onceki = $sayfa -1;
		echo '<span class="sayfa"><a href="index.php?git=panel_arama&sayfa" title="son"><img src="/tema/standart/images/ilk_sayfa.png" alt="son" /></a></span><span class="sayfa"><a href="index.php?git=panel_arama&sayfa='.$onceki.'" title="son"><img src="/tema/standart/images/geri_icon.png" alt="onceki" /></a></span>';
	
	}
	
	for($i = $sayfa - $forlimit; $i < $sayfa + $forlimit +1; $i++){
	
		if($i > 0 && $i <= $ssayisi){
			
			if($i == $sayfa){
				
				echo '<span class="sayfa_aktif">'.$i.'</span>';
			
			}else{
				
				echo '<span class="s_sayfa"><a href="index.php?git=panel_arama&sayfa='.$i.'">'.$i.'</a></span>';
			
			}
			
		}
	
	}
	
	if($sayfa != $ssayisi){
		
		echo '<span class="sayfa"><a href="index.php?git=panel_arama&sayfa='.($sayfa +1).'" title="sonraki"><img src="/tema/standart/images/ileri_icon.png" alt="ileri" /></a></span>';
		echo '<span class="sayfa"><a href="index.php?git=panel_arama&sayfa='.$ssayisi.'" title="son"><img src="/tema/standart/images/son_sayfa.png" alt="son" /></a></span>';
	}
	echo '</div>';
	
	echo'
	</div>
	<div class="hizmet_alanalts"></div>';
			
			}else {
				echo"Bir Sorun Var","Hiçbişey bulunamadı!";
			}



?>
</body>
</html>
 

kralmermi

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
93
Beğeniler
0
Konum
<?php ?>
#2
select * from site_uye where ilce like '%$ilce%' || v_id like '%$v_id%' || seviye_id like '%$seviye_id%' || cinsiyeti like '%$cinsiyeti%' limit $goster,$lim

burdaki sorguda LİKE kullandıgın için bayan üyelerinde gelmesi çok normal

NEDEN ?

kullandiğin şekilde LIKE %% basinda ve sonunda geçen kelimeleri ara diyorsun. Database dede verilerini bay ve bayan olarak tutuyor isen BAY kelimesi her iki aramadada geçtiği için bayan üyelerinde sonuçlarini alman çok normal.

LIKE yerine = kullanmayı denersen daha doğru sonuca ulaşırsın. Çünkü = sql de kesinlik demektir. ayrıca || yerine de OR kullanırsan sql sorgun daha doğru yere gidicektir.

Kolay gelsin.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#3
Veritabanında Bayan ve Erkek olarak Mevcut,
Malesef dediğiniz gibi de denedim ancak yinede filitreleme işlemini yapmıyor.
Sadece bir seçeneği dikkate alıyor.Acaba yapımdamı bir sorun var anlayamadım kaç gündür.
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#5
Tek sorunun, Bayan ararken erkek çıkması veya Erkek ararken bayan çıkması ise

PHP:
$hocaBul = mysql_query("SELECT * FROM site_uye WHERE ilce LIKE '%$ilce%' || v_id LIKE '%$v_id%' || seviye_id LIKE '%$seviye_id%' and cinsiyeti='$cinsiyeti' order by id desc  limit $goster,$lim");
Şeklinde kullan.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#6
inforesimSorun şu sadece tek seçeneğe göre sıralatıyor.
Siz sadece Ders istediği gönderirseniz derse göre sıralatıyor anca.
İstanbul Matematik >yani ilçe ve ders isteği gönderdiğinizde ilk istek olan istanbulu baz alıyor sadece.Kriterlerden sadece birini dikkate alıyor yani.

ByTRiSLaSiS Regexp hiç araştırmadım.
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#7
inforesimSorun şu sadece tek seçeneğe göre sıralatıyor.
Siz sadece Ders istediği gönderirseniz derse göre sıralatıyor anca.
İstanbul Matematik >yani ilçe ve ders isteği gönderdiğinizde ilk istek olan istanbulu baz alıyor sadece.Kriterlerden sadece birini dikkate alıyor yani.

ByTRiSLaSiS Regexp hiç araştırmadım.
or kullanmışsın, and kullanman lazım.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#8
and kullanımında zorunluluk doğuyor.
Yani sadece istanbullu öğrentmenleri aratmak istediğimde sonuç bulunamadı oluyor.
Hiç sonuç bastırmıyor o şekilde ekrana.
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#9
and kullanımında zorunluluk doğuyor.
Yani sadece istanbullu öğrentmenleri aratmak istediğimde sonuç bulunamadı oluyor.
Hiç sonuç bastırmıyor o şekilde ekrana.
Bak zaten cevabı kendin söylüyorsun. and zorunlu koşuldur, Örnek istanbulda bayan öğretmen diye aratırsın, Bunların arasında and varsa zorunlu olarak istanbulda bayan öğretmenleri arar ama sonuç yok ise, Yoktur.

ama or da, Örnek istanbulda öğretmen vardır ama bayan yoktur erkek vardır, or da orada işlevini görür ve erkekleri getirir.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#10
Ama ben istiyorum ki.
Mesala
İlçe = İstanbul
Ders = Matematik
Seviye = Başlangıç

Şeklinde arama yapılacak veritabanında 2 tane kayıt var biri bayan biri erkek ancak cinsiyeti seçmediğim için and zorunluluğunda hiçbir listeletme yapmayacak.

ben istiyorum ki kriterler boş olduğunda dair sonuç bastır.
Bu durumda if ile gelen değerlerin boş dolu olup olmadığı kontrol ederek ayrı sql çalıştırmak mı gerekiyor illaki.
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#11
Ama ben istiyorum ki.
Mesala
İlçe = İstanbul
Ders = Matematik
Seviye = Başlangıç

Şeklinde arama yapılacak veritabanında 2 tane kayıt var biri bayan biri erkek ancak cinsiyeti seçmediğim için and zorunluluğunda hiçbir listeletme yapmayacak.

ben istiyorum ki kriterler boş olduğunda dair sonuç bastır.
Bu durumda if ile gelen değerlerin boş dolu olup olmadığı kontrol ederek ayrı sql çalıştırmak mı gerekiyor illaki.
Aynen tek tek kontrol yaptıracaksın ve Onlara göre sorgu yazacaksın.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#12
Arkadaşlar şu şekinde istediğim sonuca ulaştım böyle bir arama yapmak isteyen arkadaşlar yararlanabilir;
İnforesim ilginiz ve cevaplarınız için çok teşekkür ederim herkeze iyi forumlar bol kodlar.

Kod:
$kosul = ''; 
if(!empty($ilce)){
	if(strlen($kosul)<1){
	$kosul .= "where ilce like '%".$ilce."%'"; 
	}else{ 
	$kosul .= "and ilce like '%".$ilce."%'"; 
	} 
}

if(!empty($v_id)){
	if(strlen($kosul)<1){
	$kosul .= "where v_id like '%".$v_id."%'"; 
	}else{ 
	$kosul .= "and v_id like '%".$v_id."%'"; 
	} 
} 

if(!empty($seviye_id)){
	if(strlen($kosul)<1){
	$kosul .= "where seviye_id like '%".$seviye_id."%'"; 
	}else{ 
	$kosul .= "and seviye_id like '%".$seviye_id."%'"; 
	} 
} 

if(!empty($cinsiyeti)){
	if(strlen($kosul)<1){
	$kosul .= "where cinsiyeti like '%".$cinsiyeti."%'"; 
	}else{ 
	$kosul .= "and cinsiyeti like '%".$cinsiyeti."%'"; 
	} 
}
Kod:
$hocaBul = mysql_query("select * from site_uye ".$kosul);
Diğer kodlara sayfanın başından bakabilir ve kendinize göre uyarlayabilirsiniz.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#13
kriterlere göre aramada son bir sorunum kaldı umarım. Örnek Yapı şu şekilde; index.php?git=panel-arama&ilce=0&vid=1&seviyeid=0&cinsiyeti=0&x=14&y=20

Olması gereken Sayfalama yapısı; index.php?git=panel-arama&ilce=0&vid=1&seviyeid=0&cinsiyeti=0&x=14&y=20&sayfa=3

Şuanki Sayfalama yapısı; index.php?git=panel-arama&sayfa=9

Sayfaları bastırdığım Linkim '.$i.'

panel-arama[burada url gelen değeri bastırmam gerekiyor diğer sayfalara taşımak için]&sayfa=3

URL gelen değerleri bir şekilde 2 ve sonraki sayfalara aktarmam gerekiyor.

Aklıma gelipde yapamadıklarım Session veya cokkie ile URL hafızaya almak; $urlm = $HTTPGETVARS['sayfa']; Bunu yemedi.

Bununla ilgili fikri yada örneği olan varmı Htacces ile yapılıyorsa çok iyi olur.
 

faruksaldir

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
9
Beğeniler
0
#16
Evet oldu ancak şu şekilde bir hata meydana geldi.
İleri ve öncekide
ndex.php?git=panel-arama&ilce=0&v_id=0&seviye_id=0&cinsiyeti=0&x=37&y=18&sayfa=3&sayfa=2&sayfa=3&sayfa=4&sayfa=5

sayfa=4&sayfa=5 diye gidiyor ileri yaptığımda.


<a href="'.$_SERVER["REQUEST_URI"].'&sayfa='.$i.'">'.$i.'</a>
<a href="'.$_SERVER["REQUEST_URI"].'&sayfa='.($sayfa +1).'" title="sonraki"></a>
<a href="'.$_SERVER["REQUEST_URI"].'&sayfa='.$ssayisi.'" title="son"></a>