• 07-05-2024, 13:57:04
    #1
    Merhaba kolay gelsin herkese, bir formum mevcut şuanki haliyle her alandan formdan veri girerek sorunsuz listeleme yapabiliyorum ama min fiyat max fiyat kısmını yapamadım kodlarım aşağıda ;



    aşağıda arama formum var ;

    <form method="post"  action="listele.php" target="_parent">
    
    
    <div class="s-form dd-form4">
    <h3>İlan Arama</h3>
    </div>
    
    <div class="s-form dd-form9">
    Emlak Tipi<br />
    <select name="emlak_tip" class="ddf">
    <option value="">Lütfen Seçiniz</option>
    <option value="Havuzlu Villa">Havuzlu Villa</option>
    <option value="Ozel Villa">Özel Villa</option>
    <option value="Ortak Havuzlu Villa">Ortak Havuzlu Villa</option>
    <option value="Havuzlu Daire">Havuzlu Daire</option>
    <option value="Tarla">Tarla</option>
    <option value="Bahce">Bahce</option>
    <option value="Arsa">Arsa</option>
    <option value="Apartman">Apartman</option>
    <option value="Arazi">Arazi</option>
    <option value="Ticari Mulk">Ticari Mulk</option>
    </select>
    </div>
    
    <div class="s-form dd-form9">
    Bölge<br />
    <select name="bolge" class="ddf">
    <option value="">Lütfen Seçiniz</option>
    <option value="Dalyan">Dalyan</option>
    <option value="Akyaka">Akyaka</option>
    <option value="Candir">&Ccedil;andır</option>
    <option value="Dalaman">Dalaman</option>
    <option value="Other">Other</option>
    </select>
    </div>
    
    <div class="s-form dd-form">
    Yatak Odası<br />
    <select name="yatak_oda" class="dd-form2">
    <option value="">Lütfen Seçiniz</option>
    <option value="1">1+</option>
    <option value="2">2+</option>
    <option value="3">3+</option>
    <option value="4">4+</option>
    <option value="5">5+</option>
    <option value="6">6+</option>
    <option value="7">7+</option>
    <option value="8">8+</option>
    <option value="9">9+</option>
    <option value="10+">10+</option>
    </select>
    </div>
    
    <div class="s-form dd-form">
    Banyo Sayısı<br />
    <select name="banyo" class="dd-form2">
    <option value="">Lütfen Seçiniz</option>
    <option value="1">1+</option>
    <option value="2">2+</option>
    <option value="3">3+</option>
    <option value="4">4+</option>
    <option value="5">5+</option>
    </select>
    </div>
    
    <div class="s-form dd-form10">
    Emlak Fiyat Min <br />
    <select name="Min_Price">
    <option value=''>Lütfen Seçiniz</option>
    <option value='0'>limit yok</option>
    <option value='5000'>50,000</option>
    <option value='75000'>75,000</option>
    <option value='100000'>100,000</option>
    <option value='150000'>150,000</option>
    <option value='200000'>200,000</option>
    <option value='250000'>250,000</option>
    <option value='300000'>300,000</option>
    <option value='350000'>350,000</option>
    <option value='400000'>400,000</option>
    <option value='450000'>450,000</option>
    <option value='500000'>500,000</option>
    <option value='600000'>600,000</option>
    <option value='700000'>700,000</option>
    <option value='800000'>800,000</option>
    <option value='900000'>900,000</option>
    <option value='1000000'>1,000,000</option>
    <option value='1500000'>1,500,000</option>
    <option value='2000000'>2,000,000</option>
    <option value='2500000'>2,500,000</option>
    <option value='5000000'>5,000,000</option>
    <option value='10000000'>10,000,000</option>
    <option value='15000000'>15,000,000</option>
    <option value='20000000'>20,000,000</option>
    
    </select>
    </div>
    
    <div class="s-form dd-form10">
    Emlak Fiyat Max<br />
    <select name="Max_Price">
    <option value=''>Lütfen Seçiniz</option>
    <option value='99999999999999'>limit yok</option>
    <option value='50000'>50,000</option><option value='75000'>75,000</option>
    <option value='100000'>100,000</option><option value='150000'>150,000</option>
    <option value='200000'>200,000</option><option value='250000'>250,000</option>
    <option value='300000'>300,000</option><option value='350000'>350,000</option>
    <option value='400000'>400,000</option><option value='450000'>450,000</option>
    <option value='500000'>500,000</option><option value='600000'>600,000</option>
    <option value='700000'>700,000</option><option value='800000'>800,000</option>
    <option value='900000'>900,000</option><option value='1000000'>1,000,000</option>
    <option value='1500000'>1,500,000</option><option value='2000000'>2,000,000</option>
    <option value='2500000'>2,500,000</option><option value='5000000'>5,000,000</option>
    <option value='10000000'>10,000,000</option><option value='15000000'>15,000,000</option>
    <option value='20000000'>20,000,000</option>
    
    </select>
    </div>
    
    <div class="form-top"> </div>
    
    <div class="s-form dd-form7">
    Ref No
    <input type="text" name="id" maxlength="20" class="dd-form5" />
    </div>
    
    <div class="s-form dd-form8">
    Emlak İsmi
    <input type="text" name="urun_baslik" maxlength="20" class="dd-form6" />
    </div>
    
    
    <div class="s-form dd-form3">
    <input type="submit" name="submit" value="Gönder"  />
    </div>
    
    </form>


    listele.php kodlarım ;

    <?php 
    if(isset($_POST['submit'])){
    
    if(isset($_POST['Min_Price'])){
          $inputParameters['Min_Price']['fiyat >'] = $_POST['Min_Price'];
         }  
        if(isset($_POST['Max_Price'])){
          $inputParameters['Max_Price']['fiyat <'] = $_POST['Max_Price'];
         }  
    
    $fields = array('urun_baslik', 'id', 'banyo', 'yatak_oda', 'tarif','fiyat','birim','emlak_tip','bolge','bolge2','masterid','emlak_buyuk');
    $inputParameters = array();
    
    foreach ($fields as $field) {
        // don't forget to validate the fields values from $_POST
        if (!empty($_POST[$field])) {
            $inputParameters[$field] = '%' . $_POST[$field] . '%';
    		
        }
    }
    
    $where = implode(' and ', array_map(function($item) {
        return "`$item` LIKE :$item";
    }, array_keys($inputParameters)));
    
    
    $cek = $bag->prepare("SELECT `id`, `urun_baslik`, `banyo`, `yatak_oda`, `emlak_tip`,`tarif`, `fiyat`, `birim`,`bolge`,`bolge2`,`masterid`,`emlak_buyuk` FROM `adverts` WHERE $where");
    $cek->execute($inputParameters);
    
    
       
    
    foreach ($cek->fetchAll(PDO::FETCH_ASSOC) as $kayit) {
       $resimcek = $bag->query("select picture from pictures where masterid= ".$kayit["masterid"]." limit 1")->fetch();
     
    	  $resimcek != 0 ? $resimcek = $resimcek['picture'] : $resimcek = "fotoyok.jpg"; 
     	
     
    echo '
    
    <h3>'.$kayit['bolge'].' - '.$kayit['bolge2'].'</h3>
    
    <div class=property-i><div class=property-div><a href="'.perma($kayit["urun_baslik"]).'-'. $kayit["masterid"].'.html"><img src="images/pictures/biger/'. $resimcek.'" width="377" height="282" alt="apartment" /></a></div>
    
    <div class=property-out><div class=property-name><h3>'.$kayit['urun_baslik'].'</h3>
    
    <h4>'.$kayit['yatak_oda'].' Yatak Odalı '.$kayit['emlak_tip'].'</h4></div>
    
    <div class=property-plot>Emlak Büyüklüğü: '.$kayit['emlak_buyuk'].'</div><div class=property-bedrooms>Yatak Odası: '.$kayit['yatak_oda'].'</div>
    
    <div class=property-bathrooms>Banyo: '.$kayit['banyo'].'</div></div><'. substr($kayit['tarif'],1,205) .' ...</p>
    
    <div class=property-price>Fiyat: '.number_format($kayit['fiyat']).' '.$kayit['birim'].'  <span></div>
    
    <div class=property-reference>Referans No: '.$kayit['id'].'</div>
    
    <div class=property-more><a href="'.perma($kayit["urun_baslik"]).'-'. $kayit["masterid"].'.html">Detaylı Bilgi</a></div></div>
    
    <h3>&nbsp;</h3> 
    ';
    }
    }
    
    
    ?>
    </div>
    
    
    
    </div>
    
    
    </div>
    
    </div>
    </div>
  • 07-05-2024, 14:18:02
    #2
    $inputParameters['Min_Price']['fiyat >'] ve $inputParameters['Max_Price']['fiyat <'] ifadeleri "fiyat" diye bir veri olmadığı için boş geçer. Sonuçta şöyle bir çıktı oluşur sql sorgunuzda:

    SELECT `id`, `urun_baslik`, `banyo`, `yatak_oda`, `emlak_tip`,`tarif`, `fiyat`, `birim`,`bolge`,`bolge2`,`masterid`,`emlak_buyuk` FROM `adverts` WHERE `urun_baslik` LIKE :urun_baslik and `id` LIKE :id and `banyo` LIKE :banyo and `yatak_oda` LIKE :yatak_oda and `emlak_tip` LIKE :emlak_tip and `bolge` LIKE :bolge
    Yani Min_Price ve Max_Price hiç gelmez bu şekilde sorgunuza. Sadece fiyat kısmına özel, implode kısmından sonra $where öncesine şu kodu ekleyin:

    // PHP sürümünü bilmediğim için uzun uzun böyle yazdım.
    $minPrice = isset($_POST['Min_Price']) ? (!empty($_POST['Min_Price']) ? (int)$_POST['Min_Price'] : null): null;
    $maxPrice = isset($_POST['Max_Price']) ? (!empty($_POST['Max_Price']) ? (int)$_POST['Max_Price'] : null) : null;
    
    if(!is_null($minPrice) && !is_null($maxPrice)) {
        if(strlen($where)>0) {
            $where .= ' and ';
        }
        $where .= "fiyat BETWEEN :min_price AND :max_price";
        $inputParameters['min_price'] = $_POST['Min_Price'];
        $inputParameters['max_price'] = $_POST['Max_Price'];
    }
    Üst taraftaki şu kodu da kaldırabilirsiniz:
    if(isset($_POST['Min_Price'])){
        $inputParameters['Min_Price']['fiyat >'] = $_POST['Min_Price'];
       }  
      if(isset($post['Max_Price'])){
        $inputParameters['Max_Price']['fiyat <'] = $_POST['Max_Price'];
       }
  • 07-05-2024, 15:44:53
    #3
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    $inputParameters['Min_Price']['fiyat >'] ve $inputParameters['Max_Price']['fiyat <'] ifadeleri "fiyat" diye bir veri olmadığı için boş geçer. Sonuçta şöyle bir çıktı oluşur sql sorgunuzda:

    SELECT `id`, `urun_baslik`, `banyo`, `yatak_oda`, `emlak_tip`,`tarif`, `fiyat`, `birim`,`bolge`,`bolge2`,`masterid`,`emlak_buyuk` FROM `adverts` WHERE `urun_baslik` LIKE :urun_baslik and `id` LIKE :id and `banyo` LIKE :banyo and `yatak_oda` LIKE :yatak_oda and `emlak_tip` LIKE :emlak_tip and `bolge` LIKE :bolge
    Yani Min_Price ve Max_Price hiç gelmez bu şekilde sorgunuza. Sadece fiyat kısmına özel, implode kısmından sonra $where öncesine şu kodu ekleyin:

    if(isset($_POST['Min_Price']) and isset($_POST['Max_Price'])) {
        $where .= " and fiyat BETWEEN :min_price AND :max_price";
        $inputParameters['min_price'] = $_POST['Min_Price'];
        $inputParameters['max_price'] = $_POST['Max_Price'];
    }
    Üst taraftaki şu kodu da kaldırabilirsiniz:
    if(isset($_POST['Min_Price'])){
        $inputParameters['Min_Price']['fiyat >'] = $_POST['Min_Price'];
       }  
      if(isset($post['Max_Price'])){
        $inputParameters['Max_Price']['fiyat <'] = $_POST['Max_Price'];
       }
    hocam cevap için teşekkürler fakat sonuç alamadım.
  • 07-05-2024, 17:29:05
    #4
    Düzelttik, bağlandık, hallettik. Kodun son halini de mesajımda güncelledim.

    ByEmrah35 adlı üyeden alıntı: mesajı görüntüle
    hocam cevap için teşekkürler fakat sonuç alamadım.
  • 07-05-2024, 17:56:00
    #5
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    Düzelttik, bağlandık, hallettik. Kodun son halini de mesajımda güncelledim.
    yardımların için çok teşekkürler, sorunu halletti