lostyazilim
tr.link

Farklı kelimelerle aramayı nasıl yaparım

6 Mesajlar 925 Okunma
lstbozum
tr.link

savas43 savas43 WM Aracı Kullanıcı
  • Üyelik 17.01.2019
  • Yaş/Cinsiyet 25 / E
  • Meslek Öğrenci
  • Konum Kütahya
  • Ad Soyad S** B**
  • Mesajlar 9
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)
Merhabalar stok takip programı yapıyorum. Mysql de like yaparken illa cümleye göre arama yapıyor fakat ben her farklı şekilde arama yapmak istiyorum.
Örnek olarak ürün adi motorsiklet iç lastik
Ama ben arama yaparken mesela böyle aramak istiyorum iç lastik motorsiklet nasıl yapabilirim ?
 

 

wmaraci
reklam

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
https://stackoverflow.com/questions/30334845/sql-select-and-group-records-with-same-words-in-different-order

Linki inceleyebilirsiniz.
 

 

savas43 savas43 WM Aracı Kullanıcı
  • Üyelik 17.01.2019
  • Yaş/Cinsiyet 25 / E
  • Meslek Öğrenci
  • Konum Kütahya
  • Ad Soyad S** B**
  • Mesajlar 9
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)
Hemen bakıyorum
 

 

savas43 savas43 WM Aracı Kullanıcı
  • Üyelik 17.01.2019
  • Yaş/Cinsiyet 25 / E
  • Meslek Öğrenci
  • Konum Kütahya
  • Ad Soyad S** B**
  • Mesajlar 9
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)
Başka çözümü var mı ? Yada projesinde kullanan ?
 

 

wmaraci
wmaraci

LizGate LizGate Lizgate Kullanıcı
  • Üyelik 30.03.2019
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılımcı
  • Konum Muğla
  • Ad Soyad A** Y**
  • Mesajlar 93
  • Beğeniler 12 / 47
  • Ticaret 3, (%100)
Kurumsal geliştirmede dediğin yöntem kullanılmaz. Veri girişi nasıl yapıldıysa o şekilde arama yaptırılır. Program müşterinin kullanabileceği kolaylıkta ve müşterinin programa uyacağı şekilde olur. "Müşteri programa uymak zorundadır" demen gerekir bu durumda.

Örneğin;
Stok Adı : Motorsiklet İç Lastik

Arama yaptırdığın zaman kullanıcı arama yerine iç lastik yazarsa içinde iç lastik geçen stokları getirir.

İlle de yapacağım diyorsan Like or Like kombinasyonu yapman gerekir bir döngü ile. Bu döngüyüde girilen kelimeleri parse ederek çıkan kelime sayısı kadar döndürüp kelimeleri ekletmen olur ama sağlıksız olur.
savas43

kişi bu mesajı beğendi.

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Alttaki sorguyu ihtiyacınıza göre düzenleyebilirsiniz. Unutmamanız gerekir ki kelime sayısı arttıkça sorgu performansında ciddi yavaşlamalar olacaktır.


$name ='John S Smith';
$words=explode(" ", $name);;

function get_all_combination($arr, $temp_string, &$collect) {
if ($temp_string != "")
$collect []= $temp_string;

for ($i=0; $i $arrcopy = $arr;
$elem = array_splice($arrcopy, $i, 1); // i'ninci elemanı silip, döndürür
if (sizeof($arrcopy) > 0) {
get_all_combination($arrcopy, $temp_string ." " . $elem[0], $collect);
} else {
$collect []= $temp_string. " " . $elem[0];
}
}
}

$collect = array();
get_all_combination($words, "", $collect);

/*
$collect içeriği

[0] => John
[1] => John S
[2] => John S Smith
[3] => John Smith
[4] => John Smith S
[5] => S
[6] => S John
[7] => S John Smith
[8] => S Smith
[9] => S Smith John
[10] => Smith
[11] => Smith John
[12] => Smith John S
[13] => Smith S
[14] => Smith S John
*/

$sql="SELECT * FROM sent WHERE 1=1 AND (customer_name = '".implode("' OR customer_name = '",$collect)."')" ;


?>

savas43

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al