• 21-03-2025, 15:49:33
    #1
    Merhabalar,
    PHP form projemde ziyaretçiye minimum 3 gün sonrası için tarih seçtiriyorum. Select ile seçilecek değere göre ziyaretçiye tarih seçtirirken 1 gün sonrası veya 3 gün sonrası olacak şekilde tarih seçtirmek istiyorum.
    Örneğin select ile 'acil' değeri seçilirse tarih seçiminde minimum 1 gün sonrayı seçebilsin, ama acil değil seçilirse tarih seçiminde minimum 3 gün sonrası seçebilsin istiyorum. Desteğinizi rica ederim.
    <select name="aciliyet_turu" " class="form-control" required>
    <option value="" disabled selected>Aciliyet Seçiniz</option>
    <option value="Acil">Acil </option>
    <option value="Acil Değil">Acil Değil </option>
    </select>
    <?php
    $minTarih = date('Y-m-d', strtotime('+3 days'));
    ?>
    <input name="baslamatarihi" type="date" class="form-control"  placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
  • 21-03-2025, 15:59:35
    #2
    selamlar,

    ide olarak cursor kullanıp free versiyonuyla kontrollü bir şekilde 10dk da çözebileceğin bir konudur.
  • 21-03-2025, 16:00:41
    #3
    <select name="aciliyet_turu" id="aciliyet_turu" class="form-control" required onchange="tarihGuncelle()">
        <option value="" disabled selected>Aciliyet Seçiniz</option>
        <option value="Acil">Acil</option>
        <option value="Acil Değil">Acil Değil</option>
    </select>
    
    <?php
    $minTarih = date('Y-m-d', strtotime('+3 days'));
    ?>
    
    <input name="baslamatarihi" id="baslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
    
    <script>
    function tarihGuncelle() {
        var aciliyetTuru = document.getElementById('aciliyet_turu').value;
        var tarihInput = document.getElementById('baslamatarihi');
        
        var bugun = new Date();
        var minTarih;
        
        if (aciliyetTuru === "Acil") {
            // Acil seçilirse 1 gün sonrası
            bugun.setDate(bugun.getDate() + 1);
        } else {
            // Acil Değil seçilirse 3 gün sonrası
            bugun.setDate(bugun.getDate() + 3);
        }
        
        // Tarihi YYYY-MM-DD formatına dönüştürme
        var yil = bugun.getFullYear();
        var ay = String(bugun.getMonth() + 1).padStart(2, '0');
        var gun = String(bugun.getDate()).padStart(2, '0');
        minTarih = yil + '-' + ay + '-' + gun;
        
        // min özelliğini güncelle
        tarihInput.min = minTarih;
        
        // Eğer seçili tarih yeni minimum değerden küçükse, tarihi sıfırla
        if (tarihInput.value && tarihInput.value < minTarih) {
            tarihInput.value = '';
        }
    }
    
    // Sayfa yüklendiğinde varsayılan değeri ayarla
    document.addEventListener('DOMContentLoaded', function() {
        // Varsayılan olarak PHP'nin ayarladığı değeri kullan
        // Eğer aciliyet seçilirse, JavaScript ile güncellenecek
    });
    </script>


    EK düzenleme:

    <select name="aciliyet_turu" id="aciliyet_turu" class="form-control" required onchange="tarihGuncelle()">
        <option value="" disabled selected>Aciliyet Seçiniz</option>
        <option value="Acil">Acil</option>
        <option value="Acil Değil">Acil Değil</option>
    </select>
    <?php
    $minTarih = date('Y-m-d', strtotime('+3 days'));
    ?>
    <input name="baslamatarihi" id="baslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required onchange="bitisTarihiGuncelle()">
    <input name="bitistarihi" id="bitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
    <script>
    function tarihGuncelle() {
        var aciliyetTuru = document.getElementById('aciliyet_turu').value;
        var baslamaTarihi = document.getElementById('baslamatarihi');
        var bitisTarihi = document.getElementById('bitistarihi');
        
        var bugun = new Date();
        var minTarih;
        
        if (aciliyetTuru === "Acil") {
            // Acil seçilirse 1 gün sonrası
            bugun.setDate(bugun.getDate() + 1);
        } else {
            // Acil Değil seçilirse 3 gün sonrası
            bugun.setDate(bugun.getDate() + 3);
        }
        
        // Tarihi YYYY-MM-DD formatına dönüştürme
        var yil = bugun.getFullYear();
        var ay = String(bugun.getMonth() + 1).padStart(2, '0');
        var gun = String(bugun.getDate()).padStart(2, '0');
        minTarih = yil + '-' + ay + '-' + gun;
        
        // min özelliğini her iki alan için de güncelle
        baslamaTarihi.min = minTarih;
        bitisTarihi.min = minTarih;
        
        // Eğer seçili tarihler yeni minimum değerden küçükse, tarihleri sıfırla
        if (baslamaTarihi.value && baslamaTarihi.value < minTarih) {
            baslamaTarihi.value = '';
        }
        
        if (bitisTarihi.value && bitisTarihi.value < minTarih) {
            bitisTarihi.value = '';
        }
        
        // Başlangıç tarihi değiştiğinde bitiş tarihini de güncelle
        bitisTarihiGuncelle();
    }
    function bitisTarihiGuncelle() {
        var baslamaTarihi = document.getElementById('baslamatarihi');
        var bitisTarihi = document.getElementById('bitistarihi');
        
        // Eğer başlangıç tarihi seçilmişse, bitiş tarihinin minimum değerini başlangıç tarihine ayarla
        if (baslamaTarihi.value) {
            bitisTarihi.min = baslamaTarihi.value;
            
            // Eğer bitiş tarihi, yeni minimum tarihten önce ise, temizle
            if (bitisTarihi.value && bitisTarihi.value < baslamaTarihi.value) {
                bitisTarihi.value = '';
            }
        } else {
            // Başlangıç tarihi seçilmemişse, aciliyet türüne göre minimum değeri kullan
            tarihGuncelle();
        }
    }
    // Sayfa yüklendiğinde varsayılan değerleri ayarla
    document.addEventListener('DOMContentLoaded', function() {
        // Varsayılan olarak PHP'nin ayarladığı değeri kullan
    });
    </script>
  • 21-03-2025, 16:03:46
    #4
    Merhabalar
    PHP tarafında tarih sınırını belirlemek güzel bir başlangıç olmuş ancak, formdaki <input type="date"> alanının min değerini kullanıcının seçimine göre dinamik olarak belirlemek istiyorsanız, bunu JavaScript ile yapmanız gerekir. Aşağıda ufak bir örnek bırakayım umarım yardımcı olur deneyip ihtiyacınıza göre güncelleyebilirsiniz JavaScript kodunu


    <select name="aciliyet_turu" id="aciliyet" class="form-control" required onchange="tarihGuncelle()">
    <option value="" disabled selected>Aciliyet Seçiniz</option>
    <option value="Acil">Acil</option>
    <option value="Acil Değil">Acil Değil</option>
    </select>
    
    <input name="baslamatarihi" id="tarih" type="date" class="form-control" placeholder="Başlama Tarihi" required>
    
    <script>
    function tarihGuncelle() {
    const secim = document.getElementById("aciliyet").value;
    const tarihInput = document.getElementById("tarih");
    
    let bugun = new Date();
    let minGun = secim === "Acil" ? 1 : 3;
    bugun.setDate(bugun.getDate() + minGun);
    
    let yil = bugun.getFullYear();
    let ay = String(bugun.getMonth() + 1).padStart(2, '0');
    let gun = String(bugun.getDate()).padStart(2, '0');
    
    let minTarih = `${yil}-${ay}-${gun}`;
    tarihInput.min = minTarih;
    tarihInput.value = minTarih;
    }
    </script>
  • 21-03-2025, 16:15:30
    #5
    Tncr adlı üyeden alıntı: mesajı görüntüle
    <select name="aciliyet_turu" id="aciliyet_turu" class="form-control" required onchange="tarihGuncelle()">
        <option value="" disabled selected>Aciliyet Seçiniz</option>
        <option value="Acil">Acil</option>
        <option value="Acil Değil">Acil Değil</option>
    </select>
    
    <?php
    $minTarih = date('Y-m-d', strtotime('+3 days'));
    ?>
    
    <input name="baslamatarihi" id="baslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
    
    <script>
    function tarihGuncelle() {
        var aciliyetTuru = document.getElementById('aciliyet_turu').value;
        var tarihInput = document.getElementById('baslamatarihi');
        
        var bugun = new Date();
        var minTarih;
        
        if (aciliyetTuru === "Acil") {
            // Acil seçilirse 1 gün sonrası
            bugun.setDate(bugun.getDate() + 1);
        } else {
            // Acil Değil seçilirse 3 gün sonrası
            bugun.setDate(bugun.getDate() + 3);
        }
        
        // Tarihi YYYY-MM-DD formatına dönüştürme
        var yil = bugun.getFullYear();
        var ay = String(bugun.getMonth() + 1).padStart(2, '0');
        var gun = String(bugun.getDate()).padStart(2, '0');
        minTarih = yil + '-' + ay + '-' + gun;
        
        // min özelliğini güncelle
        tarihInput.min = minTarih;
        
        // Eğer seçili tarih yeni minimum değerden küçükse, tarihi sıfırla
        if (tarihInput.value && tarihInput.value < minTarih) {
            tarihInput.value = '';
        }
    }
    
    // Sayfa yüklendiğinde varsayılan değeri ayarla
    document.addEventListener('DOMContentLoaded', function() {
        // Varsayılan olarak PHP'nin ayarladığı değeri kullan
        // Eğer aciliyet seçilirse, JavaScript ile güncellenecek
    });
    </script>
    Desteğiniz için teşekkür ederim, ilettiğiniz gibi sorunum çözüldü.
  • 21-03-2025, 17:27:38
    #6
    Tncr adlı üyeden alıntı: mesajı görüntüle
    <select name="aciliyet_turu" id="aciliyet_turu" class="form-control" required onchange="tarihGuncelle()">
        <option value="" disabled selected>Aciliyet Seçiniz</option>
        <option value="Acil">Acil</option>
        <option value="Acil Değil">Acil Değil</option>
    </select>
    
    <?php
    $minTarih = date('Y-m-d', strtotime('+3 days'));
    ?>
    
    <input name="baslamatarihi" id="baslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
    
    <script>
    function tarihGuncelle() {
        var aciliyetTuru = document.getElementById('aciliyet_turu').value;
        var tarihInput = document.getElementById('baslamatarihi');
        
        var bugun = new Date();
        var minTarih;
        
        if (aciliyetTuru === "Acil") {
            // Acil seçilirse 1 gün sonrası
            bugun.setDate(bugun.getDate() + 1);
        } else {
            // Acil Değil seçilirse 3 gün sonrası
            bugun.setDate(bugun.getDate() + 3);
        }
        
        // Tarihi YYYY-MM-DD formatına dönüştürme
        var yil = bugun.getFullYear();
        var ay = String(bugun.getMonth() + 1).padStart(2, '0');
        var gun = String(bugun.getDate()).padStart(2, '0');
        minTarih = yil + '-' + ay + '-' + gun;
        
        // min özelliğini güncelle
        tarihInput.min = minTarih;
        
        // Eğer seçili tarih yeni minimum değerden küçükse, tarihi sıfırla
        if (tarihInput.value && tarihInput.value < minTarih) {
            tarihInput.value = '';
        }
    }
    
    // Sayfa yüklendiğinde varsayılan değeri ayarla
    document.addEventListener('DOMContentLoaded', function() {
        // Varsayılan olarak PHP'nin ayarladığı değeri kullan
        // Eğer aciliyet seçilirse, JavaScript ile güncellenecek
    });
    </script>
    EK düzenleme:

    <select name="aciliyet_turu" id="aciliyet_turu" class="form-control" required onchange="tarihGuncelle()">
        <option value="" disabled selected>Aciliyet Seçiniz</option>
        <option value="Acil">Acil</option>
        <option value="Acil Değil">Acil Değil</option>
    </select>
    <?php
    $minTarih = date('Y-m-d', strtotime('+3 days'));
    ?>
    <input name="baslamatarihi" id="baslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required onchange="bitisTarihiGuncelle()">
    <input name="bitistarihi" id="bitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
    <script>
    function tarihGuncelle() {
        var aciliyetTuru = document.getElementById('aciliyet_turu').value;
        var baslamaTarihi = document.getElementById('baslamatarihi');
        var bitisTarihi = document.getElementById('bitistarihi');
        
        var bugun = new Date();
        var minTarih;
        
        if (aciliyetTuru === "Acil") {
            // Acil seçilirse 1 gün sonrası
            bugun.setDate(bugun.getDate() + 1);
        } else {
            // Acil Değil seçilirse 3 gün sonrası
            bugun.setDate(bugun.getDate() + 3);
        }
        
        // Tarihi YYYY-MM-DD formatına dönüştürme
        var yil = bugun.getFullYear();
        var ay = String(bugun.getMonth() + 1).padStart(2, '0');
        var gun = String(bugun.getDate()).padStart(2, '0');
        minTarih = yil + '-' + ay + '-' + gun;
        
        // min özelliğini her iki alan için de güncelle
        baslamaTarihi.min = minTarih;
        bitisTarihi.min = minTarih;
        
        // Eğer seçili tarihler yeni minimum değerden küçükse, tarihleri sıfırla
        if (baslamaTarihi.value && baslamaTarihi.value < minTarih) {
            baslamaTarihi.value = '';
        }
        
        if (bitisTarihi.value && bitisTarihi.value < minTarih) {
            bitisTarihi.value = '';
        }
        
        // Başlangıç tarihi değiştiğinde bitiş tarihini de güncelle
        bitisTarihiGuncelle();
    }
    function bitisTarihiGuncelle() {
        var baslamaTarihi = document.getElementById('baslamatarihi');
        var bitisTarihi = document.getElementById('bitistarihi');
        
        // Eğer başlangıç tarihi seçilmişse, bitiş tarihinin minimum değerini başlangıç tarihine ayarla
        if (baslamaTarihi.value) {
            bitisTarihi.min = baslamaTarihi.value;
            
            // Eğer bitiş tarihi, yeni minimum tarihten önce ise, temizle
            if (bitisTarihi.value && bitisTarihi.value < baslamaTarihi.value) {
                bitisTarihi.value = '';
            }
        } else {
            // Başlangıç tarihi seçilmemişse, aciliyet türüne göre minimum değeri kullan
            tarihGuncelle();
        }
    }
    // Sayfa yüklendiğinde varsayılan değerleri ayarla
    document.addEventListener('DOMContentLoaded', function() {
        // Varsayılan olarak PHP'nin ayarladığı değeri kullan
    });
    </script>
    Hocam peki 2 adet tarih inputu olursa ilettiğiniz kodlarla nasıl bir değişiklik yapmamız gerekiyor?

    <input name="baslamatarihi" id="baslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>
    <input name="bitistarihi" id="bitistarihi " type="date" class="form-control" placeholder="Başlama Tarihi" min="<?php echo $minTarih; ?>" max="2026-12-31" required>