• 18-09-2024, 11:41:02
    #1
    Arkadaşlar PHP formumda 2 adet tarih ve 1 adet input text' im var. Seçilen 2 adet tarihin arasındaki gün farkını hesaplayarak input text' e yazdırmam mümkün müdür?
    <form>
    <div class="form-row">
    <div class="form-group">
    <label>Başlama Tarihi</label>
    <input name="izinbaslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" required>
    </div>
    <div class="form-group">
    <label>Bitiş Tarihi</label>
    <input name="izinbitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" required>
    </div>
    <div class="form-group">
    <label>Toplam Süre (Gün)</label>
    <input name="toplamsuregun" type="text" class="form-control" placeholder="Toplam Gün" required>
    </div>
    </div>
    </form>
  • 18-09-2024, 11:42:45
    #2
    Javascript ile
    <form id="dateForm">
      <div class="form-row">
        <div class="form-group">
          <label>Başlama Tarihi</label>
          <input id="izinbaslamatarihi" name="izinbaslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" required>
        </div>
        <div class="form-group">
          <label>Bitiş Tarihi</label>
          <input id="izinbitistarihi" name="izinbitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" required>
        </div>
        <div class="form-group">
          <label>Toplam Süre (Gün)</label>
          <input id="toplamsuregun" name="toplamsuregun" type="text" class="form-control" placeholder="Toplam Gün" required readonly>
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Hesapla</button>
    </form>
    
    <script>
    document.getElementById('dateForm').addEventListener('submit', function(event) {
      event.preventDefault(); // Formun gönderilmesini engelle
      
      var startDate = new Date(document.getElementById('izinbaslamatarihi').value);
      var endDate = new Date(document.getElementById('izinbitistarihi').value);
      
      if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
        alert('Tarihleri giriniz.');
        return;
      }
      
      var timeDifference = endDate - startDate;
      var daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24));
      
      if (daysDifference < 0) {
        alert('Bitiş tarihi başlangıç tarihinden önce olamaz.');
        return;
      }
      
      document.getElementById('toplamsuregun').value = daysDifference;
    });
    </script>
    php ile
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $izinbaslamatarihi = $_POST['izinbaslamatarihi'];
        $izinbitistarihi = $_POST['izinbitistarihi'];
    
        $startDate = new DateTime($izinbaslamatarihi);
        $endDate = new DateTime($izinbitistarihi);
    
        $interval = $startDate->diff($endDate);
        $daysDifference = $interval->days;
    
        // Eğer bitiş tarihi başlangıç tarihinden önceyse
        if ($startDate > $endDate) {
            $daysDifference = 0;
            echo 'Bitiş tarihi başlangıç tarihinden önce olamaz.';
        }
    }
    ?>
    
    <form method="post">
      <div class="form-row">
        <div class="form-group">
          <label>Başlama Tarihi</label>
          <input name="izinbaslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" required>
        </div>
        <div class="form-group">
          <label>Bitiş Tarihi</label>
          <input name="izinbitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" required>
        </div>
        <div class="form-group">
          <label>Toplam Süre (Gün)</label>
          <input name="toplamsuregun" type="text" class="form-control" placeholder="Toplam Gün" value="<?php echo isset($daysDifference) ? $daysDifference : ''; ?>" readonly>
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Hesapla</button>
    </form>
  • 18-09-2024, 11:43:09
    #3
    PHP iki tarih arasındaki farkı hesaplama adlı makaleme bir göz atın hocam. İşinizi çözecektir.
  • 18-09-2024, 11:53:26
    #4
    EvrenOnur adlı üyeden alıntı: mesajı görüntüle
    Javascript ile
    <form id="dateForm">
      <div class="form-row">
        <div class="form-group">
          <label>Başlama Tarihi</label>
          <input id="izinbaslamatarihi" name="izinbaslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" required>
        </div>
        <div class="form-group">
          <label>Bitiş Tarihi</label>
          <input id="izinbitistarihi" name="izinbitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" required>
        </div>
        <div class="form-group">
          <label>Toplam Süre (Gün)</label>
          <input id="toplamsuregun" name="toplamsuregun" type="text" class="form-control" placeholder="Toplam Gün" required readonly>
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Hesapla</button>
    </form>
    
    <script>
    document.getElementById('dateForm').addEventListener('submit', function(event) {
      event.preventDefault(); // Formun gönderilmesini engelle
      
      var startDate = new Date(document.getElementById('izinbaslamatarihi').value);
      var endDate = new Date(document.getElementById('izinbitistarihi').value);
      
      if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
        alert('Tarihleri giriniz.');
        return;
      }
      
      var timeDifference = endDate - startDate;
      var daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24));
      
      if (daysDifference < 0) {
        alert('Bitiş tarihi başlangıç tarihinden önce olamaz.');
        return;
      }
      
      document.getElementById('toplamsuregun').value = daysDifference;
    });
    </script>
    php ile
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $izinbaslamatarihi = $_POST['izinbaslamatarihi'];
        $izinbitistarihi = $_POST['izinbitistarihi'];
    
        $startDate = new DateTime($izinbaslamatarihi);
        $endDate = new DateTime($izinbitistarihi);
    
        $interval = $startDate->diff($endDate);
        $daysDifference = $interval->days;
    
        // Eğer bitiş tarihi başlangıç tarihinden önceyse
        if ($startDate > $endDate) {
            $daysDifference = 0;
            echo 'Bitiş tarihi başlangıç tarihinden önce olamaz.';
        }
    }
    ?>
    
    <form method="post">
      <div class="form-row">
        <div class="form-group">
          <label>Başlama Tarihi</label>
          <input name="izinbaslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" required>
        </div>
        <div class="form-group">
          <label>Bitiş Tarihi</label>
          <input name="izinbitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" required>
        </div>
        <div class="form-group">
          <label>Toplam Süre (Gün)</label>
          <input name="toplamsuregun" type="text" class="form-control" placeholder="Toplam Gün" value="<?php echo isset($daysDifference) ? $daysDifference : ''; ?>" readonly>
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Hesapla</button>
    </form>
    Anlatımınız için çok teşekkür ederim hocam, ancak formumda hali hazırda bir kaydet butonum var. Sizin iletmiş olduğunuz formdaki hesapla butonu, kaydet butonum ile çakışıyor.
  • 18-09-2024, 11:54:36
    #5
    eycreative adlı üyeden alıntı: mesajı görüntüle
    PHP iki tarih arasındaki farkı hesaplama adlı makaleme bir göz atın hocam. İşinizi çözecektir.
    Bilgilendirdiğiniz için teşekkür ederim hocam, ben seçilen 2 tarih aralığını hesaplamak istediğim için makalenizde bunun tam cevabını bulamadım.
  • 18-09-2024, 12:01:41
    #6
    mtyuksel adlı üyeden alıntı: mesajı görüntüle
    Bilgilendirdiğiniz için teşekkür ederim hocam, ben seçilen 2 tarih aralığını hesaplamak istediğim için makalenizde bunun tam cevabını bulamadım.
    <form method="post">
            <label>Başlangıç Tarihi (YYYY-MM-DD):</label>
            <input type="date" name="startDate" required><br><br>
            
            <label>Bitiş Tarihi (YYYY-MM-DD):</label>
            <input type="date" name="endingDate" required><br><br>
            
            <input type="submit" value="Hesapla">
        </form>
        <?php
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            $startDate = $_POST['startDate'];
            $endingDate = $_POST['endingDate'];
            function dateCalc($startDate, $endingDate) {
                $date1 = new DateTime($startDate);
                $date2 = new DateTime($endingDate);
                $interval = $date1->diff($date2);
                return $interval->format('%a');
            }
            $result = dateCalc($startDate, $endingDate);
            echo "<h2>Toplam Gün Sayısı: $result</h2>";
        }
        ?>
    Makalemde ki fonksiyonu uyarladım buyurun deneyin.
  • 18-09-2024, 15:32:27
    #7
    eycreative adlı üyeden alıntı: mesajı görüntüle
    <form method="post">
            <label>Başlangıç Tarihi (YYYY-MM-DD):</label>
            <input type="date" name="startDate" required><br><br>
            
            <label>Bitiş Tarihi (YYYY-MM-DD):</label>
            <input type="date" name="endingDate" required><br><br>
            
            <input type="submit" value="Hesapla">
        </form>
        <?php
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            $startDate = $_POST['startDate'];
            $endingDate = $_POST['endingDate'];
            function dateCalc($startDate, $endingDate) {
                $date1 = new DateTime($startDate);
                $date2 = new DateTime($endingDate);
                $interval = $date1->diff($date2);
                return $interval->format('%a');
            }
            $result = dateCalc($startDate, $endingDate);
            echo "<h2>Toplam Gün Sayısı: $result</h2>";
        }
        ?>
    Makalemde ki fonksiyonu uyarladım buyurun deneyin.
    Anlatımınız için çok teşekkür ederim hocam, ancak formumda hali hazırda bir kaydet butonum var. Sizin iletmiş olduğunuz formdaki hesapla butonu, kaydet butonum ile çakışıyor.

    <form>
    <div class="form-row">
    <div class="form-group">
    <label>Başlama Tarihi</label>
    <input name="izinbaslamatarihi" type="date" class="form-control" placeholder="Başlama Tarihi" required>
    </div>
    <div class="form-group">
    <label>Bitiş Tarihi</label>
    <input name="izinbitistarihi" type="date" class="form-control" placeholder="Bitiş Tarihi" required>
    </div>
    <div class="form-group">
    <label>Toplam Süre (Gün)</label>
    <input name="toplamsuregun" type="text" class="form-control" placeholder="Toplam Gün" required>
    </div>
    </div>
    <div class="text-center">
    <button type="submit" name="kaydet" class="btn btn-primary">Kaydet</button>
    </div>
    </form>
  • 18-09-2024, 15:35:47
    #8
    hocam butona name="kaydet" ekleyeceksiniz.
    php kısmında if(isset($_POST["kaydet"])) koşulunu çalıştıracaksınız yani adı name olan bir post gelirse burda işlem yap demek oluyor.