• 05-06-2024, 21:26:30
    #1
    Arkadaşlar merhaba. Bir emlak sitesi yapıyorum. Emlak aratırken, oda sayısı verisini de kullanıyorum. Mesela, konum=istanbul, ilçe=kadıköy, oda sayısı=3+1 gibi. Aratmayı yaptığımda 4 gibi 2 gibi tam sayı kullanırsam sonuç sayfasında sayfalama yapabiliyorum. Ama 3+1 gibi bir veri gönderirsem, sayfalama yapamıyorum. Buradaki + işaretini adres çubuğunda string olarak göstermem gerekli. Benim aklıma bir kaç çözüm geliyor ama nasıl yapacağımı bilemiyorum.
    1. Form sayfamdaki selectbox verisi 3+1 diyelim. Form işlem sayfasında veriyi çekerken + operatörünü string'e çevir diye tür dönüşümü yapılabilir.
    2. Veriyi çekerken explode ile + operatörünü ayır ve string olarak aktar.
    3. str_replace ile bir şey yapılabilir diye düşünüyorum.
    4. Bir de urlencode ile şifreleyip kodu decode etmek bir çareymiş diye okudum internetten ama nasıl yapılabilir bilemedim. Yardımcı olursanız sevinirim.
    Selectbox'ı aşağıya koyuyorum çok kısa bir şeklini.
    <select name="" id="">
        <option value="">Seçiniz</option>
        <option value="1+0" placeholder="Seç">1+0</option>
        <option value="1+1" placeholder="Seç">1+1</option>
    </select>
  • 05-06-2024, 21:30:38
    #2
    En iyi çözüm en basit olandır. En az kodla çözmeye çalışın. orada 1+0 veya 1+1 yazmasının ne sisteme ne son kullanıcıya bir yararı yok + yerine farklı bir karakter kullanabilirsiniz veya en basiti:
    1+0 = 10
    1+1 = 11
    2+1 = 21
    3+1 = 31
    4+1 = 41

    Çok basit olarak çözebilirsiniz.
  • 05-06-2024, 21:37:37
    #3
    Veriyi parçala döndür çevir gereksiz. Oda sayı düzenleri zaten çok az. Hepsine değişken atayın. Ona göre düzenleme yapın.
  • 05-06-2024, 21:51:55
    #4
    $number_of_rooms = (str)$_GET['number_of_rooms']
  • 05-06-2024, 22:53:32
    #5
    Ayesoft dediğinizi yaptım. Veri 1+1 olarak görünmüyor.
    if($odasayisi == "11") {
        $odasayisi = "1+1";
    }
    şeklinde yaptım ama veri gelmedi.


    exUBert
    Değişkeni işlem sayfasında mı atayacağım. Ne yapmam lazım anlamadım.


    kazimolmez
    Niyedir bilmiyorum, (int) fonksiyonu etkin ama (str) diye bir fonksiyonu tanımıyor ide. Ben onu (string) şeklinde yaptım ama sayfa veri gelmedi.
    $odasayisi =@ (string) $_GET['odasayisi'];
  • 05-06-2024, 23:43:51
    #6
    php sürümünden dolayı olabilir birde aşağıdakini dene
    $odasayisi = strval($_GET['odasayisi'])
    ayrıca @ karakteri ile hata bastırmak yerine gelen veriyi kontrol edersen kod kalitesi için daha iyi olur
    if (isset($_GET['odasayisi'])) {
        $odasayisi = strval($_GET['odasayisi'])
    } else {
        echo 'Hata!';
    }
  • 06-06-2024, 00:36:22
    #7
    Form ile verileri gönderirken
    <select name="odasayisi" id="">
       <option value="">Seçiniz</option>
       <option value="10" placeholder="Seç">1+0</option>
       <option value="11" placeholder="Seç">1+1</option>
       <option value="21" placeholder="Seç">2+1</option>
    </select>
    Verileri echo ile gösterirken
    <?php
    if($odasayisi == "10") {
       echo "1+0";
    } elseif($odasayisi == "11") {
       echo "1+1";
    } elseif($odasayisi == "21") {
       echo "2+1";
    } else {
       echo "9";
    }
    ?>
    bu şekilde yaptım, çalıştı. Bu arada siz söyleyince kontrol ettim, hata bastırmamı gerektirecek bir şey yokmuş. Cevaplar için teşekkür ederim.
  • 12-06-2024, 01:45:08
    #8
    Peki oda sayısı hem 2+1 hemde 3+1 olarak çoklu gelirse çözümünüz işe yarar mı?
    Ayrıca 1+1'in value değeri neden 1+1 ?
    Emlak sisteminde bu gibi veriler dinamiktir. Karşılığıda tablodaki idsi olabilir Yani;
    <option value="22112">1+1</option>

    Dolayısıyla Gette oda_tip=22112,222112,2213 şeklinde kullanabilirsin
  • 12-06-2024, 14:56:34
    #9
    frequency, formu post ettiğinde tek veri yani örnek olarak 2+1 veya 3+1 olarak göndermek zorunda. Aynı anda iki adet oda sayısı göndermesi mümkün değil. Dediğinizi inşallah yanlış anlamamışımdır.