• 28-02-2014, 13:51:20
    #1
    Merhaba arkadaşlar, aşağıdaki resimdeki gibi bir arama formum var



    Buradaki verileri sonuc.php sayfasına şu şekilde aliyorum
    $etiket=trim($_POST["etiket"]);
    $cinsiyet=$_POST["cinsiyet"];
    $sehir=$_POST["sehir"];
    $yas1=$_POST["yas1"];
    $yas2=$_POST["yas2"];
    ve arama sorgum şu şekilde

    $ara=mysql_query("SELECT * FROM uyeler WHERE isim LIKE '%$etiket%' or baslik LIKE '%$etiket%' or eposta LIKE '$etiket' or cinsiyet LIKE '$cinsiyet' or sehir LIKE '$sehir' and yas BETWEEN '$yas1' and '$yas2'");
    
    while ($cek=mysql_fetch_array($ara)) {
    //kodlar..
    }
    Normal aramanın yanı sıra
    Arama kutusu, cinsiyet ve şehir kısmı boş olsa bile sadece yaş aralıgıyla sonuçları listelemek istiyorum.

    Yardımcı olursanız sevinirim
    İyi çalışmalar..
  • 28-02-2014, 13:55:34
    #2
    $ara=mysql_query("SELECT * FROM uyeler WHERE (isim LIKE '%$etiket%' or baslik LIKE '%$etiket%' or eposta LIKE '$etiket' or cinsiyet LIKE '$cinsiyet' or sehir LIKE '$sehir') and yas BETWEEN '$yas1' and '$yas2'");
    
    while ($cek=mysql_fetch_array($ara)) {
    //kodlar..
    }
    şöyle dener misin?
  • 28-02-2014, 14:03:24
    #3
    Dediginizi yaptım ama sonuc daima yaş şartına endexli olarak çalışıyor

    Örnegin
    bayan isaretleyip yas aralıgını 20-23 yaptıgımda
    sonuçlar içinde erkeklerde görünüyor..
  • 28-02-2014, 14:20:29
    #4
    SurucLu adlı üyeden alıntı: mesajı görüntüle
    Dediginizi yaptım ama sonuc daima yaş şartına endexli olarak çalışıyor

    Örnegin
    bayan isaretleyip yas aralıgını 20-23 yaptıgımda
    sonuçlar içinde erkeklerde görünüyor..
    Tüm alanlar zorunlu mu? Burda amaç or diye belirttiğiniz seçenekleri parantez içinde kümelendirmeniz.
  • 28-02-2014, 14:26:09
    #5
    Alanlar zorunlu degil..
    form ile ilgili şu şekilde olasılıklar düşündüm

    Kullanıcı;
    * Sadece isim arayabilir
    * sadece belirtilen yaş aralındaki bayanları veya erkekleri arayabilir
    * sadece belirtilen şehirdeki bayan veya erkekleri arayabilir.

    Bunları düşünerek nasıl bir sorgu yazabilirim veya sorgu bu şekilde ise nasıl filitreleyebilirim ?

    Hali hazırdaki sorgu ile şehir veya cinsiyet ne olursa olsun eger yaş aralıgında bir yaş varsa o kişiyi sonuç olark veriyor.
  • 28-02-2014, 14:42:19
    #6
    Zor değil bunu yapmak. Şöyle fikir vereyim, gerisini tamamla.
    aaa1, aaa2.. gibi değişkenlerin var. aaa1 değişkeni tanımlı ve dolu geliyorsa sorgu adında bir değişkeni mysql sorguna ekle.

    Aşağıdaki kodu incele, kendine uyarla.

    $sorgu = ""; // string'i deklare et
    
    if ($yas)
    {
    $sorgu .= " and yas = '$yas'"
    }
    if ($etiket)
    {
     $sorgu .= " and etiket= '$etiket'"
    }
    
    $ara=mysql_query("SELECT * FROM uyeler WHERE id > 0 $sorgu");
    
    while ($cek=mysql_fetch_array($ara)) {
    //kodlar..
    }
  • 28-02-2014, 15:04:02
    #7
    Dediginiz anladım ile anlamadım arasında bi yerdeyim
    Biraz uğraşayım bakalım nolcak

    İlginiz için tşk ettim iyi çalışmalar.
  • 28-02-2014, 15:21:56
    #8
    Bir de bunu dener misin?
    SELECT * FROM uyeler WHERE (isim LIKE '%$etiket%' or baslik LIKE '%$etiket%' or eposta LIKE '$etiket' or sehir LIKE '$sehir') and yas BETWEEN '$yas1' and '$yas2'" and cinsiyet LIKE '$cinsiyet'
  • 28-02-2014, 15:32:39
    #9
    @Elumre hocam dediginizi yaptım ama
    cinsiyet, yaş ve şehir alanlarını doldurdugumda
    cinsiyete endexli çalışıyor şehir göz ardı ediliyor.
    __________________________________________________ _______________

    @Ron hocam sizinde yönlendirmenizle aşağıdaki gibi kodları düzenledim
    ama sql sorgusu cevap vermiyor..

    <?php
    include("header.php");
    $etiket=trim($_POST["etiket"]);
    $cinsiyet=$_POST["cinsiyet"];
    $sehir=$_POST["sehir"];
    $yas1=$_POST["yas1"];
    $yas2=$_POST["yas2"];
    
    $sorgu="";
    if ($cinsiyet) {
    $sorgu.="and cinsiyet='$cinsiyet'" ;
    }
    if ($sehir) {
    $sorgu.="and sehir='$sehir'" ;
    }
    if ($etiket) {
    $sorgu.= " and isim='$etiket'";
    $sorgu.= " and baslik='$etiket'";
    $sorgu.= " and eposta='$etiket'";
    } 
    
    $ara=mysql_query("SELECT * FROM uyeler WHERE yas=>$yas1 and yas=<$yas2 $sorgu");
    ?>
    <div style="margin-left:10px; float:left; width:72%;">
    <div class="baslik">&nbsp;&nbsp;Arama sonuçları</div>
    <?php
    if($ara) {
    while ($cek=mysql_fetch_array($ara)) {
    echo "İsim: ".$cek['isim']."<br />Cinsiyet: ".$cek['cinsiyet']."<br />Başlık: ".$cek['baslik']."<br />Yaş:".$cek['yas']."<br />Şehir: ".$cek['sehir']."<hr />";
    }
    } else {
    echo "Sonuç bulunamadi";
    }
    ?>
    arama yapıldıgında Sonuç bulunamadı yazısı sayfaya basılıyor