• 20-05-2024, 08:50:20
    #1
    Bir personel sistemi hazırladım. personellere izin veriyorum mevcut izinlerinden düşüyor kalan günü gösteriyor ama izinli personel index sayfasında 2 güün kaldı derken izinli personeller sayfasında 3 gün yazıyor neden bir türlü çözemedim.

  • 20-05-2024, 08:55:54
    #2
    Kodu atarsanız inceleyelim.
  • 20-05-2024, 09:01:21
    #3
    izinli_personel.php kodum bu hocam

     <?php
                        include 'config.php';
                        $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
                        if ($conn->connect_error) {
                            die("Bağlantı hatası: " . $conn->connect_error);
                        }
                        // İzinli personelleri çekme (bugünün tarihi arasında izinli olanlar)
                        $sql = "SELECT p.id, p.ad, p.sicil_no, i.izin_baslangic, i.izin_bitis, i.izin_turu 
                                FROM personel p 
                                INNER JOIN izinler i ON p.id = i.personel_id 
                                WHERE CURDATE() BETWEEN i.izin_baslangic AND i.izin_bitis";
                        $result = $conn->query($sql);
                        if ($result->num_rows > 0) {
                            while($row = $result->fetch_assoc()) {
                                $izin_bitis = new DateTime($row["izin_bitis"]);
                                $bugun = new DateTime();
                                $fark = $bugun->diff($izin_bitis);
                                $kalan_gun = $fark->days + 1; // İzin bitiş günü dahil
                                echo "<tr>
                                          <td>" . $row["ad"] . "</td>
                                          <td>" . $row["sicil_no"] . "</td>
                                          <td>" . $row["izin_baslangic"] . "</td>
                                          <td>" . $row["izin_bitis"] . "</td>
                                          <td>" . $row["izin_turu"] . "</td>
                                          <td class='kalan-gun'>$kalan_gun</td>
                                          <td>
                                              <a href='izin_belgesi_duzenle.php?id=" . $row["id"] . "' class='btn btn-info btn-sm'>Belge Düzenle</a>
                                              <a href='izin_duzenle.php?id=" . $row["id"] . "' class='btn btn-primary btn-sm'>İzin Düzenle</a>
                                              <a href='izin_sil.php?id=" . $row["id"] . "' class='btn btn-danger btn-sm' onclick='return confirm(\"İzni silmek istediğinize emin misiniz?\");'>İzin Sil</a>
                                          </td>
                                      </tr>";
                            }
                        } else {
                            echo "<tr><td colspan='7'>İzinli personel bulunamadı.</td></tr>";
                        }
                        $conn->close();
                        ?>

    imdex ile anasayfada gördüğüm kod ise bu :

       <?php
                    session_start();
                    // İzin bilgisi mesajını göster (eğer varsa)
                    if (isset($_SESSION['izin_bilgileri'])) {
                        $izin_bilgileri = $_SESSION['izin_bilgileri'];
                        echo "<div class='alert alert-info'>
                                  Personel ID: {$izin_bilgileri['personel_id']}<br>
                                  İzin Başlangıç: {$izin_bilgileri['izin_baslangic']}<br>
                                  İzin Bitiş: {$izin_bilgileri['izin_bitis']}<br>
                                  İzin Türü: {$izin_bilgileri['izin_turu']}
                              </div>";
                        unset($_SESSION['izin_bilgileri']);
                    }
                    include 'config.php'; 
                    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
                    if ($conn->connect_error) {
                        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
                    }
                    // Personel verilerini çekme
                    $sql = "SELECT * FROM personel";
                    $result = $conn->query($sql);
                    if ($result->num_rows > 0) {
                        echo '<table class="table table-striped" id="personelTablosu">';
                        echo "<tr>
                                
                                  <th>Ad</th>
                                  <th>Görev</th>
                                  <th>Görev Yeri</th>
                                  <th>Kalan İzin</th>
                                  <th>Kullanılan İzin</th>
                                  <th>İzin Bilgisi</th>
                                  <th>İşlemler</th>
                              </tr>";
                        while($row = $result->fetch_assoc()) {
                            // İzin bilgilerini çekme (izinler tablosundan)
                            $izinSql = "SELECT izin_bitis FROM izinler WHERE personel_id = " . $row["id"] . " AND izin_bitis >= CURDATE() ORDER BY izin_bitis DESC LIMIT 1"; // Aktif izinleri al
                            $izinResult = $conn->query($izinSql);
                            $izinBitisTarihi = null;
                            $kalanGun = null;
                            if ($izinResult->num_rows > 0) {
                                $izinRow = $izinResult->fetch_assoc();
                                $izinBitisTarihi = $izinRow["izin_bitis"];
                                // Kalan gün hesabı
                                $bugun = new DateTime();
                                $bitisTarihi = new DateTime($izinBitisTarihi);
                                $kalanGun = $bugun->diff($bitisTarihi)->days;
                            }
                            // Satırı vurgulamak için class ekleme
                            $rowClass = ($izinBitisTarihi !== null) ? "highlighted" : "";
                            echo "<tr data-personel-adi='" . strtolower($row["ad"]) . "' class='$rowClass'>";
                           
                            echo "<td>" . $row["ad"] . "</td>";
                            echo "<td>" . $row["gorev"] . "</td>";
                            echo "<td>" . $row["gorev_yeri"] . "</td>";
                            echo "<td>" . $row["kalan_izin"] . "</td>";
                            echo "<td>" . $row["kullanilan_izin"] . "</td>";
    
                            // İzin bitiş tarihi ve kalan gün bilgisini ekleme
                            echo "<td>";
                            if ($izinBitisTarihi !== null) {
                                echo "İzin Bitiş: $izinBitisTarihi ($kalanGun gün kaldı)";
                            }
                            echo "</td>";
                            echo "<td>
                                      <a href='personel_duzenle.php?id=" . $row["id"] . "' class='btn btn-primary btn-sm'>Düzenle</a>
                                      <a href='personel_sil.php?id=" . $row["id"] . "' class='btn btn-danger btn-sm' onclick='return confirm(\"Silmek istediğinize emin misiniz?\");'>Sil</a>
                                  </td>";
                            echo "</tr>";
                        }
                        echo "</table>";
                    } else {
                        echo "Kayıt bulunamadı.";
                    }
                    $conn->close();
                    ?>
  • 20-05-2024, 09:02:21
    #4
    birde mesala ben izin belgesi yaptığımda mevcut bir izin belgesi şablonum var word olarak onun gibi alıp direk yazdırma olayım olabilir mi ?
  • 22-05-2024, 18:34:05
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Çünki izinli_personel sayfanızda izin bitiş gününüze 1 gün daha ekliyorsunuz.
    $kalan_gun = $fark->days + 1; // İzin bitiş günü dahil
  • 22-05-2024, 18:38:23
    #6
    muratozsaycom adlı üyeden alıntı: mesajı görüntüle
    birde mesala ben izin belgesi yaptığımda mevcut bir izin belgesi şablonum var word olarak onun gibi alıp direk yazdırma olayım olabilir mi ?
    Bunun içinde word dosyanızda değişmesi gereken yerlere özel değerler girin.Ardından bu word dosyanızı file_get_contents ile bir stringe atayın ve değişmesi gereken yerleri değiştirip yazdırın.Örnek Kod;
    Word Dosyası örnek;
    Ad : {_AD_}
    PHP Kod Örneği:
    $word_file = file_get_contents("word_dosyasi.docx");
    $new_file = str_replace("{_AD_}","Emre",$word_file);
    ardından file_put_contents ile bu yeni içeriği başka bir docx sayfasına kayıt edin.Bunun için phpword gibi kütüphaneler var onlarıda kullanabilirsiniz.