• 29-08-2009, 01:51:47
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşlar iki fiyat arası arama yaptırmaya çalışıyorum. Between komutunu araştırdım, uygulamayı doğru yaptım sanıyorum ama çalışmıyor, nerde hata yapmış olabilirim ? Yardımcı olursanız sevinirim. Teşekkürler


    Örnek olarak şöyle yaptım : ( Renk ve Fiyat aralığına göre )

    $renk = trim(htmlspecialchars($_POST['renk']));
    $min = trim(htmlspecialchars($_POST['min']));
    $max = trim(htmlspecialchars($_POST['max']));
    if ($renk=="Farketmez") {
    $renk="";
    }
    if ($min=="Farketmez") {
    $min="";
    }
    if ($max=="Farketmez") {
    $max="";
    }
    if ($renk!="") {
    $w10="renk='$renk' and ";
    }else{
    $w10="";
    }
    if ($fiyat!="") {
    $w11=$w11."(fiyat between $min and $max) and ";
    }else{
    $w11="";
    }
  • 29-08-2009, 01:58:27
    #2
    $sql=$w1.$w2.......$w11;

    $sorgu=mysql_query($sql);
    ....
    buna benzer bir uygulama yapıyorsunuz sanırım. satırını
    $sorgu=mysql_query($sql) or die(htmlspecialchars($sql));
    şekline benzetebilr misiniz acaba
  • 29-08-2009, 02:39:18
    #3
    Bu şekilde ide
    Alıntı
    $counttotal = mysql_query("SELECT * FROM `arac` where ($w1$w2$w3$w4$w5$w6$w7$w8$w9$w10$w11 onay=1 and acil=1)") or die(mysql_error());
    Bu şekilde değiştirdim, ama yine bütün sonuçları döküyor
    Alıntı
    $counttotal = mysql_query("SELECT * FROM `arac` where ($w1$w2$w3$w4$w5$w6$w7$w8$w9$w10$w11 onay=1 and acil=1)") or die(htmlspecialchars($counttotal));
  • 29-08-2009, 02:57:41
    #4
    değer dönüyorsa o sondaki kısım zaten çalışmaz, ancak false döndüğünde geçer or dan sonraki kısma, o satırı tekrar eski haline alıp, bir üst satıra
    die("$w1$w2$w3$w4$w5$w6$w7$w8$w9$w10$w11");
    yazdığınızda sorguyu ekrana yazar. muhtemelen $w11 boş gelecektir. Yani orada herhangi bir şekilde between kontrolü olmayacaktır. Bu tahminimin sebebi

    if ($fiyat!="") {
    $w11=$w11."(fiyat between $min and $max) and ";
    }else{
    $w11="";
    }

    kontrolün. Gördüğüm kadarıyla $fiyat diye değişken yok ve bunu gözden kaçırdığını düşünüyorum. Eğer öyleyse
    if ($min!="" && $max!='') {
    $w11=$w11."(fiyat between $min and $max) and ";
    }else{
    $w11="";
    }

    şeklinde değişiklik yapman gerekecek
  • 29-08-2009, 03:04:36
    #5
    Sadece bunu değiştridim düzeldi. Çok teşekkür ederim, 2 saattir uğraşıyordum acemilik işte, Tekrar teşekkür ederim
    Alıntı
    if ($min!="" && $max!='') {
    $w11=$w11."(fiyat between $min and $max) and ";
    }else{
    $w11="";
    }