lostyazilim
tr.link

MYSQL arama sorgusunda başka bir koşul belirleme?

10 Mesajlar 1.793 Okunma
lstbozum
tr.link

MrBrown 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%'");
 

 

wmaraci
reklam

ozcan0110 ozcan0110 WM Aracı Kullanıcı
  • Üyelik 13.05.2013
  • Yaş/Cinsiyet 30 / 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.
 

 

MrBrown 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)
Yok olmuyor o şekil
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Ü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)
wmaraci
wmaraci

MrBrown 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)

Turgay Can adlı üyeden alıntı

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.


Benim konuyu açmamın sebebi sizin verdiğiniz koddaki şekilde çalışmaması zaten. Başka bir yolu olsa gerek. İnternettede araştırdım koşullu arama, şartlı arama şeklinde ama işime yarayacak bilgi bulamadım
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Ü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 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
 

 

yaramazca yaramazca WM Aracı Kullanıcı
  • Ü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.
MrBrown

kişi bu mesajı beğendi.

MrBrown 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)

yaramazca adlı üyeden alıntı

$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.


Çok teşekkürler gerçekten tam olarak işime yarayan kod bu
 

 

yaramazca yaramazca WM Aracı Kullanıcı
  • Ü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)

MrBrown adlı üyeden alıntı

Çok teşekkürler gerçekten tam olarak işime yarayan kod bu


rica ederim. iyi çalışmalar.
 

 

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