v2.5.2
Giriş yap

MYSQL daha İNCE arama yapmak.

aydinkeskin
629 defa görüntülendi

Özellikle @tayfunerbilen sana sesleniyor :)

mysql de boolen mode diye birşey var bilmem bilirmisiniz :)))
şaka bi yana elbet bilirsiniz de.

ben bir türlü kullanmadım.

SELECT id, adi, aciklama,katid MATCH (adi,aciklama) AGAINST ('?' IN BOOLEAN MODE)
AS sonuc FROM urunler ORDER BY sonuc DESC;

urunler tablosunda arama yaptırıcam adi ve aciklama sutunlarına göre
fakat bir türlü istediğim sonucu alamıyorum bütün verileri olsun olmasın hangi tuşa basarsam veriyor.

if (isset($_POST['term'])) {  
	try { 
    $term = $_POST['term'];  
	$kod = "SELECT id, adi, aciklama,katid MATCH (adi,aciklama)  AGAINST ('?' IN BOOLEAN MODE)
                AS sonuc FROM urunler ORDER BY sonuc DESC;";
		$Arama = pre($kod);
		$val = "%$term%";	
		$Arama->bindParam(':term', $val , PDO::PARAM_STR);			
		$Arama->execute();

		$Count = $Arama->rowCount();  
         
		$result ="" ;
		if ($Count  > 0){
			while($data=$Arama->fetch(PDO::FETCH_ASSOC)) { 	
				$kodd = "SELECT * FROM urunler_kat WHERE id=?";
				$kate = pre($kodd);
				$kate->execute([$data["katid"]]);
				$ukat = $kate->fetch(2);
			   $result = $result .'	<li class="list-group-item">
				<a href="'.TEMA.'/urun-detay/'.$data['id'].'/'.seo($ukat['adi']).'/'.seo($data['adi']).'">'.$data['adi'].'</a>
			</li> ';	 
			}
			echo $result ;
			// echo $kod;
		}

	}
	catch (PDOException $e) {
		echo 'Bağlantı Hatası ' . $e->getMessage();
	}
}
	
	
	nerde hata yapıyorum acaba
aydinkeskin
1488 gün önce

ben bu şekilde sorunsuz kullanıyorum

sadece dediğim gibi eksik olan bir işlem var

örnek veri : ali eve giderken öldü :)

arama alanına derken yazdığımda "ali eve giderken öldü" çıkması gerekiyor ama çıkmıyor

sadece ali veya eve veya giderken veya öldü yazarsam çıkıyor..

kodlar aşağıdaki gibidir.

sende bu kodlar ile yapıyorsan score > 0 dan yaparsan net sonuç alırsın

sonuçlar sorgulanırken varsa 1 yoksa 0 olarak sonuçlanıyor score olarak listelediğin için ne varsa listeleneiyor.

@tayfunerbilen kardeşimiz eksiğimizi tamamlamıza yardımcı olursa ne mutlu bize :)

if (isset($_POST['term'])) {  
	try { 
    $term = $_POST['term'];   
		$sorgu ="SELECT *, MATCH(adi,aciklama) AGAINST (:aranan) AS score 
				 FROM urunler 
				 WHERE MATCH(adi,aciklama) AGAINST(+:aranan IN BOOLEAN MODE)
				 ORDER BY score > 0 DESC limit 8;"; 

		$aranan = '*'.$term.'*';

		$ara = $db->prepare($sorgu);                        
		$ara->bindValue(':aranan', $aranan, PDO::PARAM_STR);	
		$ara->execute();

		$Count = $ara->rowCount();  
         
		$result ="" ;
		if ($Count  > 0){

			while($data=$ara->fetch(PDO::FETCH_ASSOC)) {
				$kodd = "SELECT * FROM urunler_kat WHERE id=? ";
				$kate = pre($kodd);
				$kate->execute([$data["katid"]]);
				$ukat = $kate->fetch(2); 
		  
			   $result = $result .' 
								<li class="list-group-item">
									<a href="'.TEMA.'/urun-detay/'.$data['id'].'/'.seo($ukat['adi']).'/'.seo($data['adi']).'">
										<div class="d-flex search-product align-items-center">
											<img style="width:50px; height:50px;" src="'.TEMA.'/uploads/urunler/'.$data['resim'].'"> 
											<div class="w-100 overflow--hidden">
												<div style="margin-left:5px;font-weight:bold;">'.$data["adi"].' </div>
												<div class="clearfix">
													<div class="price-box float-left">
													'.indirimfiyat($data["indirim"],$data["fiyat"]).'
													</div>
													<div class="stock-box float-right">
														<span class="badge badge-pill '.stokrenk($data["stok"]).'">'.stoklar($data["stok"]).'</span>
													</div>
												</div>
											</div>
										</div>
									</a>
								</li>
							 ';	 
			 
			}
			echo $result ; 
			echo '
				<li class="list-group-item "> 
					<a style="font:15px; font-weight:bold;" href="">Tüm Ürünler >> </a>
					 
				</li>
			';
		} 
		

		
	}
	catch (PDOException $e) {
		echo 'Bağlantı Hatası ' . $e->getMessage();
	}
}