MrBrown
Üyeliği Durdurulmuş
Banlı Kullanıcı
-
Üyelik
06.03.2014
-
Yaş/Cinsiyet
29 / E
-
Meslek
Web Yazılımcı
-
Konum
İstanbul Avrupa
-
Ad Soyad
H** S**
-
Mesajlar
38
-
Beğeniler
15 / 6
-
Ticaret
10, (%100)
Merhaba arkadaşlar,
Sayfalarım arasında arama yaptırırken aşağıdaki sorguyu uyguluyorum. Fakat ben aramayı yaparken Onay='1' olanları kayıtlarım arasında sadece arama yapmasını istiyorum. Where onay = '1' kodumu tam olarak bu satırın neresine veya nasıl şekilde girmem gerekiyor. Yardımlarınızı bekliyorum.
$result = mysql_query("SELECT * FROM sayfalar WHERE lower(url) like '%$search%' OR lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%'");
-
Üyelik
13.05.2013
-
Yaş/Cinsiyet
29 / E
-
Meslek
Freelance Web Developer
-
Konum
Balıkesir
-
Ad Soyad
Ö** A**
-
Mesajlar
234
-
Beğeniler
26 / 27
-
Ticaret
1, (%100)
$result = mysql_query("SELECT * FROM sayfalar WHERE lower(url) and onay='1' like '%$search%' OR lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%'");
Deneyin.
-
Üyelik
25.06.2012
-
Yaş/Cinsiyet
38 / E
-
Meslek
Engineering Director
-
Konum
İstanbul Avrupa
-
Ad Soyad
T** C**
-
Mesajlar
771
-
Beğeniler
2 / 260
-
Ticaret
0, (%0)
ozcan0110 adlı üyeden alıntı
$result = mysql_query("
SELECT * FROM sayfalar WHERE lower(url) and onay='1' like '%$search%' OR lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%'");
Deneyin.
Sorgu çalışmaz. lower(url) kısmından sonra like gelmeli.
Soruyu soran arkadaş, bu sorguyu arkadaşın dediği gibi ;
SELECT * FROM sayfalar WHERE onay='1' and lower(url) like '%$search%' OR lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%'");
şeklinde yazarsa çalışacaktır.
https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
-
Üyelik
25.06.2012
-
Yaş/Cinsiyet
38 / E
-
Meslek
Engineering Director
-
Konum
İstanbul Avrupa
-
Ad Soyad
T** C**
-
Mesajlar
771
-
Beğeniler
2 / 260
-
Ticaret
0, (%0)
Bunu programatic olarak yapsanız daha makul sanki çünkü işin içinde mantıksal bir işlem var.
SQL ile when case oluşturarak yapabilirsiniz lakin o kadar mühendisliğe luzum yok.
Çalışır sorguda istediğiniz gibi çalışmaz.
Sorguyu biraz düzenlemekte fayda var. Ayrıca çalışacak mantığıda belirtirseniz daha stabil ve köklü bir çözüm yolu önerilebilir.
"SELECT * FROM sayfalar WHERE onay='1' and (lower(url) like '%$search%' OR lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%')"
BOLD olan yerlerdeki kısım tüm sayfalar için geçerlimidir ? Bu sorguyu parçalasak? Bu kadar çok arka arkaya OR kullanmak neden? OR ilk koşul true döndüğünde diğerlerinin hiç birine bakmaz.
Yani siz "search" değerini gönderdiğinizde "lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%'" bu kısmı kaale almaz bile..
Sorguyu mantıksal algoritmaya koyup, yeniden refaktor etmekte fayda var onun içinde ne koşulda hangi koşul çalışacak belirtirseniz iyi olur ;)
https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
MrBrown
Üyeliği Durdurulmuş
Banlı Kullanıcı
-
Üyelik
06.03.2014
-
Yaş/Cinsiyet
29 / E
-
Meslek
Web Yazılımcı
-
Konum
İstanbul Avrupa
-
Ad Soyad
H** S**
-
Mesajlar
38
-
Beğeniler
15 / 6
-
Ticaret
10, (%100)
Ben duyarlı bir arama olması için o OR la ayırdığım 4 alandada arama yapmasını istiyorum ama. Birisinde bulamazsa birisinde bulsun ama ziyaretçinin karşısına bir sonuç getirsin. Şimdi denedimde OR ları kaldırtıktan sonra onay='1' and çalışıyor ama dediğim gibi hepsinde birden arama yaptırabilsem daha iyi olur
Ek Olarak: Şimdi denedimde 3 arama alanından fazlasında sorun çıkartıyor. Yani 2 den fazla OR kullanımında. Neyse Etiketlerde arama yaptırmayı askıya alırım o halde. Teşekkürler yardımlarınız için
-
Üyelik
14.02.2014
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım Geliştirme Uzmanı
-
Konum
Çanakkale
-
Ad Soyad
S** Y**
-
Mesajlar
204
-
Beğeniler
13 / 32
-
Ticaret
44, (%100)
$result = mysql_query("SELECT * FROM sayfalar WHERE (lower(url) like '%$search%' OR lower(etiketler) like '%$search%' OR lower(title) LIKE '%$search%' OR lower(aciklama) like '%$search%') AND onay='1'");
deneyin.
1 kişi bu mesajı beğendi.