• 04-06-2024, 10:46:37
    #1
    Merhaba,

    Gelen ziyaretçilerin kaydını yapabileceğim ( ad soyad, geldiği yer, görüşeceği kişi, giriş saati) bir sistem arıyorum. Çıkış saatini en son çıkınca butona basarakta yapabiliriz, saat yazarakta sorun değil. Tekrar gelince kişinin adını yazıp bulup aynı kişiye ziyaret ekleme gibi bir özellik olması yeterli, bu veya buna benzer bir sistem mevcut mudur?
    Yardımlarınızı bekliyorum, teşekkürler.
  • 05-06-2024, 10:32:26
    #2
    Proje Yapısı:
    • index.php: Ziyaretçi kayıt formu ve mevcut ziyaretçilerin listesi
    • add_visitor.php: Ziyaretçi ekleme işlemlerini gerçekleştiren PHP dosyası
    • update_visitor.php: Ziyaretçinin çıkış saatini güncelleyen PHP dosyası
    • database.php: Veritabanı bağlantısını sağlayan PHP dosyası
    • style.css: Bootstrap ve özel CSS stillerini içeren dosya
    1. index.php (Ziyaretçi Kayıt Formu ve Listesi):

    <!DOCTYPE html>
    <html>
    <head>
      <title>Ziyaretçi Kayıt Sistemi</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
      <link rel="stylesheet" href="style.css">
    </head>
    <body>
      <div class="container mt-5">
        <h2>Ziyaretçi Kayıt Formu</h2>
        <form action="add_visitor.php" method="post">
          <div class="form-group">
            <label for="adSoyad">Ad Soyad:</label>
            <input type="text" class="form-control" id="adSoyad" name="adSoyad" required>
          </div>
          <div class="form-group">
            <label for="geldigiYer">Geldiği Yer:</label>
            <input type="text" class="form-control" id="geldigiYer" name="geldigiYer" required>
          </div>
          <div class="form-group">
            <label for="gorecegiKisi">Görüşeceği Kişi:</label>
            <input type="text" class="form-control" id="gorecegiKisi" name="gorecegiKisi" required>
          </div>
          <button type="submit" class="btn btn-primary">Kaydet</button>
        </form>
    
        <h2>Mevcut Ziyaretçiler</h2>
        <table class="table table-striped">
          <thead>
            <tr>
              <th>ID</th>
              <th>Ad Soyad</th>
              <th>Geldiği Yer</th>
              <th>Görüşeceği Kişi</th>
              <th>Giriş Saati</th>
              <th>Çıkış Saati</th>
              <th>İşlemler</th>
            </tr>
          </thead>
          <tbody>
            <?php
            require_once 'database.php'; // Veritabanı bağlantısı
            $sql = "SELECT * FROM visitors WHERE cikis_saati IS NULL";
            $result = $conn->query($sql);
    
            if ($result->num_rows > 0) {
              while($row = $result->fetch_assoc()) {
                echo "<tr>";
                echo "<td>" . $row["id"] . "</td>";
                echo "<td>" . $row["ad_soyad"] . "</td>";
                echo "<td>" . $row["geldigi_yer"] . "</td>";
                echo "<td>" . $row["gorecegi_kisi"] . "</td>";
                echo "<td>" . $row["giris_saati"] . "</td>";
                echo "<td>";
                if ($row["cikis_saati"] == NULL) {
                  echo "<form action='update_visitor.php' method='post'>";
                  echo "<input type='hidden' name='visitorId' value='" . $row["id"] . "'>";
                  echo "<button type='submit' class='btn btn-danger btn-sm'>Çıkış Yap</button>";
                  echo "</form>";
                } else {
                  echo $row["cikis_saati"];
                }
                echo "</td>";
                echo "</tr>";
              }
            } else {
              echo "<tr><td colspan='7'>Henüz kayıtlı ziyaretçi yok.</td></tr>";
            }
            $conn->close();
            ?>
          </tbody>
        </table>
      </div>
    
      <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    </body>
    </html>
    2. add_visitor.php (Ziyaretçi Ekleme):

    <?php
    require_once 'database.php';
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $adSoyad = $_POST["adSoyad"];
      $geldigiYer = $_POST["geldigiYer"];
      $gorecegiKisi = $_POST["gorecegiKisi"];
      $girisSaati = date("Y-m-d H:i:s"); // Şu anki zaman
    
      $sql = "INSERT INTO visitors (ad_soyad, geldigi_yer, gorecegi_kisi, giris_saati)
              VALUES ('$adSoyad', '$geldigiYer', '$gorecegiKisi', '$girisSaati')";
    
      if ($conn->query($sql) === TRUE) {
        header("Location: index.php"); // Kayıt başarılıysa index.php'ye yönlendir
      } else {
        echo "Hata: " . $sql . "<br>" . $conn->error;
      }
    
      $conn->close();
    }
    ?>
    3. update_visitor.php (Çıkış Saati Güncelleme):
    <?php
    require_once 'database.php';
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $visitorId = $_POST["visitorId"];
      $cikisSaati = date("Y-m-d H:i:s");
    
      $sql = "UPDATE visitors SET cikis_saati='$cikisSaati' WHERE id=$visitorId";
    
      if ($conn->query($sql) === TRUE) {
        header("Location: index.php");
      } else {
        echo "Hata: " . $sql . "<br>" . $conn->error;
      }
    
      $conn->close();
    }
    ?>
    4. database.php (Veritabanı Bağlantısı):
    <?php
    $servername = "localhost"; // Sunucu adı (genellikle localhost)
    $username = "your_username"; // Veritabanı kullanıcı adı
    $password = "your_password"; // Veritabanı şifresi
    $dbname = "your_database"; // Veritabanı adı
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Check connection
    if ($conn->connect_error) {
      die("Veritabanı bağlantısı başarısız: " . $conn->connect_error);
    }
    ?>

    Veritabanı Oluşturma (visitors tablosu):
    CREATE TABLE visitors (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        ad_soyad VARCHAR(50) NOT NULL,
        geldigi_yer VARCHAR(50) NOT NULL,
        gorecegi_kisi VARCHAR(50) NOT NULL,
        giris_saati DATETIME NOT NULL,
        cikis_saati DATETIME
    );
  • 06-06-2024, 03:00:25
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    muratozsaycom adlı üyeden alıntı: mesajı görüntüle
    Proje Yapısı:
    • index.php: Ziyaretçi kayıt formu ve mevcut ziyaretçilerin listesi
    • add_visitor.php: Ziyaretçi ekleme işlemlerini gerçekleştiren PHP dosyası
    • update_visitor.php: Ziyaretçinin çıkış saatini güncelleyen PHP dosyası
    • database.php: Veritabanı bağlantısını sağlayan PHP dosyası
    • style.css: Bootstrap ve özel CSS stillerini içeren dosya
    1. index.php (Ziyaretçi Kayıt Formu ve Listesi):

    <!DOCTYPE html>
    <html>
    <head>
      <title>Ziyaretçi Kayıt Sistemi</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
      <link rel="stylesheet" href="style.css">
    </head>
    <body>
      <div class="container mt-5">
        <h2>Ziyaretçi Kayıt Formu</h2>
        <form action="add_visitor.php" method="post">
          <div class="form-group">
            <label for="adSoyad">Ad Soyad:</label>
            <input type="text" class="form-control" id="adSoyad" name="adSoyad" required>
          </div>
          <div class="form-group">
            <label for="geldigiYer">Geldiği Yer:</label>
            <input type="text" class="form-control" id="geldigiYer" name="geldigiYer" required>
          </div>
          <div class="form-group">
            <label for="gorecegiKisi">Görüşeceği Kişi:</label>
            <input type="text" class="form-control" id="gorecegiKisi" name="gorecegiKisi" required>
          </div>
          <button type="submit" class="btn btn-primary">Kaydet</button>
        </form>
    
        <h2>Mevcut Ziyaretçiler</h2>
        <table class="table table-striped">
          <thead>
            <tr>
              <th>ID</th>
              <th>Ad Soyad</th>
              <th>Geldiği Yer</th>
              <th>Görüşeceği Kişi</th>
              <th>Giriş Saati</th>
              <th>Çıkış Saati</th>
              <th>İşlemler</th>
            </tr>
          </thead>
          <tbody>
            <?php
            require_once 'database.php'; // Veritabanı bağlantısı
            $sql = "SELECT * FROM visitors WHERE cikis_saati IS NULL";
            $result = $conn->query($sql);
    
            if ($result->num_rows > 0) {
              while($row = $result->fetch_assoc()) {
                echo "<tr>";
                echo "<td>" . $row["id"] . "</td>";
                echo "<td>" . $row["ad_soyad"] . "</td>";
                echo "<td>" . $row["geldigi_yer"] . "</td>";
                echo "<td>" . $row["gorecegi_kisi"] . "</td>";
                echo "<td>" . $row["giris_saati"] . "</td>";
                echo "<td>";
                if ($row["cikis_saati"] == NULL) {
                  echo "<form action='update_visitor.php' method='post'>";
                  echo "<input type='hidden' name='visitorId' value='" . $row["id"] . "'>";
                  echo "<button type='submit' class='btn btn-danger btn-sm'>Çıkış Yap</button>";
                  echo "</form>";
                } else {
                  echo $row["cikis_saati"];
                }
                echo "</td>";
                echo "</tr>";
              }
            } else {
              echo "<tr><td colspan='7'>Henüz kayıtlı ziyaretçi yok.</td></tr>";
            }
            $conn->close();
            ?>
          </tbody>
        </table>
      </div>
    
      <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    </body>
    </html>
    2. add_visitor.php (Ziyaretçi Ekleme):

    <?php
    require_once 'database.php';
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $adSoyad = $_POST["adSoyad"];
      $geldigiYer = $_POST["geldigiYer"];
      $gorecegiKisi = $_POST["gorecegiKisi"];
      $girisSaati = date("Y-m-d H:i:s"); // Şu anki zaman
    
      $sql = "INSERT INTO visitors (ad_soyad, geldigi_yer, gorecegi_kisi, giris_saati)
              VALUES ('$adSoyad', '$geldigiYer', '$gorecegiKisi', '$girisSaati')";
    
      if ($conn->query($sql) === TRUE) {
        header("Location: index.php"); // Kayıt başarılıysa index.php'ye yönlendir
      } else {
        echo "Hata: " . $sql . "<br>" . $conn->error;
      }
    
      $conn->close();
    }
    ?>
    3. update_visitor.php (Çıkış Saati Güncelleme):
    <?php
    require_once 'database.php';
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $visitorId = $_POST["visitorId"];
      $cikisSaati = date("Y-m-d H:i:s");
    
      $sql = "UPDATE visitors SET cikis_saati='$cikisSaati' WHERE id=$visitorId";
    
      if ($conn->query($sql) === TRUE) {
        header("Location: index.php");
      } else {
        echo "Hata: " . $sql . "<br>" . $conn->error;
      }
    
      $conn->close();
    }
    ?>
    4. database.php (Veritabanı Bağlantısı):
    <?php
    $servername = "localhost"; // Sunucu adı (genellikle localhost)
    $username = "your_username"; // Veritabanı kullanıcı adı
    $password = "your_password"; // Veritabanı şifresi
    $dbname = "your_database"; // Veritabanı adı
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Check connection
    if ($conn->connect_error) {
      die("Veritabanı bağlantısı başarısız: " . $conn->connect_error);
    }
    ?>
    Veritabanı Oluşturma (visitors tablosu):
    CREATE TABLE visitors (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        ad_soyad VARCHAR(50) NOT NULL,
        geldigi_yer VARCHAR(50) NOT NULL,
        gorecegi_kisi VARCHAR(50) NOT NULL,
        giris_saati DATETIME NOT NULL,
        cikis_saati DATETIME
    );
    merhaba'lar hocam $_POST kısımlarında " htmlspecialchars " kullanırsanız sizin için daha saglıklı olur ve database.php'de pdo kullansanız sizin için daha iyi olurdu iyi calısmalar dilerim