• 14-05-2014, 21:05:39
    #1
    Arkadaşlar emlak sisteminde kullanıcıya kriterler seçtiriyorum.
    Örneğin il , ilce , semt seçtiriyorum.

    Misal veriyorum il,ilce,semt i seçtiğinde ona göre ilanlar geliyor.
    Fakat kullanıcı sadece il, ilce seçtiğinde de seçili olan kriterlere göre ilan getirmek istiyorum.
    SQL sorgum aşağıdaki gibi ne yapmalıyım ?
    Her iki ihtimalde de ilanlar gelsin.
    $sql = mysql_query("SELECT * FROM posts WHERE il LIKE '%$il%' AND ilce LIKE '%$ilce%' AND semt LIKE '%$semt%' AND fiyat BETWEEN '$epara' AND '$cpara'");
    @saintx;
  • 14-05-2014, 21:07:27
    #2
    Üyeliği durduruldu
    öncelikle like php ile alakalı değil sql ile alakalıdır bunu öğrenin'ki sonra sorun yaşmayın ardından or ile and ifadelerini araştırın tam sorgu yazsam burada öğrenmeyeceksiniz ama araştırırsanız öğrenirsiniz aynı zamanda sorunuda çözersiniz yok illah php dersen kullanıcı seçim yaptığı kısma if sorgusu at
  • 14-05-2014, 21:22:48
    #3
    Like kullanmanız burada çok doğru değil Örneğin kullanıcı "sa" yazdığında
    Manisa, Bursa vb içerisinde sa geçen tüm şehirlerdeki ilanları getirmei gerektiği durumlarda like kullanmalısınız. Burada yapmanız gereken Şehiri elle seçmemeli açılan kutudan seçmeidir. Sorguya gelenverilerin formatları kntol edilmiş olmalıdır. AND kullanımı doğru burada OR kullanamak doğru olmayacaktır.

    Sorgu da şöyle olmalı.
    $sql = mysql_query("SELECT * FROM posts WHERE il = '$il' AND ilce = '$ilce' AND semt = '$semt' AND fiyat > '$epara' AND fiyat < '$cpara'");
  • 14-05-2014, 21:30:38
    #4
    Misafir
    Arama formundan dolu alanlara göre sorguyu oluşturur... Sanırım istediğin bu hocam. Test etmedim, yazım yanlışım varsa k.bakma

    $sorgu    =    "SELECT * FROM posts";
    $where    =    array();
    
    if(!empty($il))
        $where[]    =    "il = '".$il."'";
    
    if(!empty($ilce))    
        $where[]    =    "ilce = '".$ilce."'";
        
    if(!empty($semt))    
        $where[]    =    "semt = '".$semt."'";    
        
    if(!empty($epara) and $epara>0)    
        $where[]    =    "fiyat > '".$epara."'";
        
    if(!empty($cpara) and $cpara>0)    
        $where[]    =    "fiyat < '".$cpara."'";    
        
    $tmp    =    implode(" AND ",$where);    
    
    if(!empty($tmp))
        $tmp    =    "WHERE ".$tmp;
        
    $sql    =    mysql_query($sorgu.$where);
    • samsunikinciel
    samsunikinciel bunu beğendi.
    1 kişi bunu beğendi.
  • 14-05-2014, 21:43:17
    #5
    yakoSin adlı üyeden alıntı: mesajı görüntüle
    $sorgu = "SELECT * FROM posts";
    $where = array();

    if(!empty($il))
    $where[] = "il = '".$il."'";

    if(!empty($ilce))
    $where[] = "ilce = '".$ilce."'";

    if(!empty($semt))
    $where[] = "semt = '".$semt."'";

    if(!empty($epara) and $epara>0)
    $where[] = "fiyat > '".$epara."'";

    if(!empty($cpara) and $cpara>0)
    $where[] = "fiyat > '".$cpara."'";

    $tmp = implode(" AND ",$where);

    if(!empty($tmp))
    $tmp = "WHERE ".$tmp;

    $sql = mysql_query($sorgu.$tmp);

    Yöntem teknik olarak doğru olsada kontroller çok doğru değil 2. küçüktür işareti büyüktür olacak. empty() yerine formdan gelen veriler için isset tercih edilmeli. epara cparadan küçük olmalı ve formatları kontrol edilmeli.

    Örneğin 1.000 da 1000 ikiside bin lira dır vb.
    Mantık doğru ama genel olarak eksik direk bu kodu kullanamazsınız. Düzenlemeniz gerekir
  • 14-05-2014, 21:50:22
    #6
    Misafir
    maskidea adlı üyeden alıntı: mesajı görüntüle
    Yöntem teknik olarak doğru olsada kontroller çok doğru değil 2. küçüktür işareti büyüktür olacak. empty() yerine formdan gelen veriler için isset tercih edilmeli. epara cparadan küçük olmalı ve formatları kontrol edilmeli.

    Örneğin 1.000 da 1000 ikiside bin lira dır vb.
    Mantık doğru ama genel olarak eksik direk bu kodu kullanamazsınız. Düzenlemeniz gerekir

    empty performans olarak isset'den daha iyidir.

    En basit örnek , $il değişkeninde istanbul verisi mi var , 34 verisi mi bilmiyoruz. Bunlar benim kodumun üstünde, $_POST'tan yada $_GET'ten veri alınırken set edilmiş ve süzülmüştür.

    Dolayısıyla verilerin formatları da db yapısına göre uyarlanmıştır zamnnımca

    Ve direk kullanılabilir durumda, sadece büyüktür küçüktürle alakalı bir karakterin değişmesi gerekiyor. Hangi bilgiye dayanıp, bu yorumu yaptınız ona da anlam veremedim açıkcası.
  • 14-05-2014, 21:55:40
    #7
    yakoSin adlı üyeden alıntı: mesajı görüntüle
    empty performans olarak isset'den daha iyidir.

    En basit örnek , $il değişkeninde istanbul verisi mi var , 34 verisi mi bilmiyoruz. Bunlar benim kodumun üstünde, $_POST'tan yada $_GET'ten veri alınırken set edilmiş ve süzülmüştür.

    Dolayısıyla verilerin formatları da db yapısına göre uyarlanmıştır zamnnımca

    Ve direk kullanılabilir durumda, sadece büyüktür küçüktürle alakalı bir karakterin değişmesi gerekiyor. Hangi bilgiye dayanıp, bu yorumu yaptınız ona da anlam veremedim açıkcası.
    Sanırım ppostumu kendine saldırı olarak algıladın öyleyse üzülürüm başta çok vaktin olmadığını yazmışsın.

    empty bir değişkenin boş olup olmadıpğını kontrol eder .
    isset tanımlanıp tanımlanmadığını.
    Formdan gelen verilerde isset kullanılmalıdır.

    db yapısında "." ve "," hatalı kullanımı bin lirayı 1 lira yapabiilir kullanıcı insiyatifine bırakılamaz.
  • 14-05-2014, 22:05:22
    #8
    Misafir
    maskidea adlı üyeden alıntı: mesajı görüntüle
    Sanırım ppostumu kendine saldırı olarak algıladın öyleyse üzülürüm başta çok vaktin olmadığını yazmışsın.

    empty bir değişkenin boş olup olmadıpğını kontrol eder .
    isset tanımlanıp tanımlanmadığını.
    Formdan gelen verilerde isset kullanılmalıdır.

    db yapısında "." ve "," hatalı kullanımı bin lirayı 1 lira yapabiilir kullanıcı insiyatifine bırakılamaz.

    Tamam işte hocam ben posttan yada get'ten veri almıyorum ki Arkadaş almış verileri, değişkenleri doldurmuş.

    empty ve isset olayını biliyorum. Örnek vereyim.
    Boş değer isset'ten geçiyor, çünkü değişken set edilmiş. Ama empty'den geçmiyor çünkü boş.

    Bana değişkenin içi dolu olup olmadığı lazım, set edilip edilmediği değil. Aşağıdaki kodda iki echo satırıda işlenir, ama biri olumlu sonuç verir biri olumsuz.

    $var = "";
    if (empty($var)) {
        echo 'boş';
    }
    
    if (isset($var)) {
        echo 'dolu';
    }
  • 14-05-2014, 22:14:32
    #9
    isset te değişken null değere sahipse sonuç false döner hocam. null dan farklı bir değer sahipse true döner.

    Bende senin gibi düşünüyordum tam hatırlamıyorum ama hatırladığım kadarıyla form verilerinde boşluk gönderildiği zamandı sanırım empty hataya sebep oluyordu.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:12:24 -->-> Daha önceki mesaj 22:09:56 --

    bak php.net ne demiş

    Alıntı
    Bilginize:

    empty() işlevi sadece bir çözümleme hatasına yol açmayan değişkenleri sınar. Başka bir deyişle şu satır çalışmaz: empty(trim($isim)).


    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:14:32 -->-> Daha önceki mesaj 22:12:24 --

    yani empty($il) bu satır hiç bir zaman çalışmaz. Her zaman boş gösterir.