Đặt chỗ thời gian Lịch PHP tải xuống miễn phí

Ảnh chụp màn hình của Lịch đăng ký các ô thời gian

Khoảng thời gian Lịch đăng ký Mô tả của nhà xuất bản

Lịch đăng ký các khung thời gian là một công cụ đăng ký dựa trên PHP/MySQL có giao diện lịch dựa trên AJAX trực quan và cho phép người dùng duyệt qua các ngày và dễ dàng đặt các khung thời gian từ lịch. Có thể dễ dàng cài đặt Lịch đăng ký các khung thời gian trên bất kỳ trang web nào và một đoạn mã JavaScript đơn giản cho phép bạn tích hợp công cụ đăng ký vào bất kỳ trang web nào - HTML, HTM, PHP, ASP, JSP, v.v.
Giờ đây, người dùng cuối có thể dễ dàng đặt lịch hẹn với bạn, thanh toán trực tuyến cho các đặt chỗ và nhận lời nhắc qua email cũng như tin nhắn SMS.
Cùng với chức năng đặt chỗ trực tuyến của công cụ đặt chỗ của chúng tôi, Lịch đặt chỗ theo khung thời gian cung cấp cho bạn một mô-đun quản lý đặt chỗ ở phía sau, cho phép quản trị viên tập lệnh quản lý tình trạng sẵn có của các vị trí, đặt chỗ, thời gian làm việc và . Bảng điều khiển dựa trên web được bảo vệ bằng mật khẩu đảm bảo toàn quyền kiểm soát các yếu tố lịch và chức năng của hệ thống đặt trước như bảng màu, độ dài vị trí, chú giải công cụ, chú thích màu, biểu mẫu đặt chỗ, thông báo qua SMS và email, v.v.
Lịch đăng ký khung thời gian là giải pháp được hỗ trợ đầy đủ, giá cả phải chăng và có thể mở rộng cho những ai cần một công cụ đặt lịch trực tuyến và hệ thống lên lịch cuộc hẹn. Với Giấy phép dành cho nhà phát triển, bạn có thể cài đặt hệ thống đặt trước của chúng tôi trên số lượng trang web không giới hạn, sửa đổi MÃ NGUỒN PHP hoặc đổi thương hiệu cho tập lệnh đặt trước. Giấy phép Nhà phát triển là một giải pháp lý tưởng cho các lập trình viên và nhà thiết kế web. Cập nhật thường xuyên, phí một lần và hỗ trợ cài đặt MIỄN PHÍ. Bản demo MIỄN PHÍ đầy đủ tính năng có sẵn cho Lịch đặt trước các khung thời gian.

Tìm kiếm các mặt hàng tương tự theo danh mục

Phản hồi

Thời gian phát sóng cho phép bạn kiểm soát hoàn toàn đài phát thanh của mình qua web với quản lý lưu trữ thông minh, tìm kiếm mạnh mẽ, trình tạo danh sách phát dễ dàng, lịch lập kế hoạch đơn giản và phát tự động chắc chắn. Các tính năng bao gồm Khối thông minh, chế độ hỗ trợ trực tiếp, hỗ trợ WAV, FLAC, AAC, MP3 và OGG, giảm dần, tín hiệu, danh sách phát, lịch chương trình, tích hợp Icecast, Shoutcast và Soundcloud, vai trò của DJ và người quản lý trạm, tiện ích JQuery, phát Liquidsoap và một

Tích hợp thuế bán hàng cụ thể theo quốc gia Thực đơn theo thời gian, theo mùa và theo ngày Nhân viên bấm giờ vào, ra Tiền lương Báo cáo bán hàng Đặt bàn Thay đổi bàn Danh sách mua sắm tự động Hệ thống đặt hàng Nhập chủ hàng Nhập khách hàng Nhập nhà cung cấp Kiểm soát hàng tồn kho. thực phẩm và phi thực phẩm Kiểm soát mua hàng Theo dõi chi phí Xem bàn theo thời gian thực, bàn nào có người ngồi, đang chờ, dọn dẹp, v.v.

Chào mừng bạn đến với hướng dẫn về cách tạo một hệ thống đặt lịch hẹn đơn giản với PHP MySQL. Các cuộc hẹn với bác sĩ, các buổi tập yoga, các buổi spa, các bài học hoặc bất cứ điều gì – Đây là một ví dụ nhanh chóng và đơn giản về trang đặt lịch hẹn trực tuyến. đọc tiếp

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

MỤC LỤC

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã ví dụ như đã hứa

 

GHI CHÚ NHANH

  • Tạo cơ sở dữ liệu và nhập
    -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    0
  • Thay đổi cơ sở dữ liệu, “các vị trí” và cài đặt ngày trong
    -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    1
  • Truy cập
    -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    2 trong trình duyệt
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

ẢNH CHỤP MÀN HÌNH

Được rồi, bây giờ chúng ta hãy tìm hiểu thêm chi tiết về cách hoạt động của hệ thống cuộc hẹn PHP MySQL

 

PHẦN 1) CƠ SỞ DỮ LIỆU

1A) NGƯỜI DÙNG

1-cơ sở dữ liệu. sql

-- (A) USERS
CREATE TABLE `users` (
  `user_id` bigint(20) NOT NULL,
  `user_name` varchar(255) NOT NULL,
  `user_email` varchar(255) NOT NULL,
  `user_password` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`),
  ADD UNIQUE KEY `user_email` (`user_email`);

ALTER TABLE `users`
  MODIFY `user_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

INSERT INTO `users` (`user_id`, `user_name`, `user_email`, `user_password`) VALUES
(1, 'Joa Doe', '[email protected]', '12345'),
(2, 'Job Doe', '[email protected]', '12345'),
(3, 'Joe Doe', '[email protected]', '12345'),
(4, 'Jon Doe', '[email protected]', '12345'),
(5, 'Joy Doe', '[email protected]', '12345');

Trong ví dụ này, chúng tôi giả sử rằng chỉ những người dùng đã đăng ký mới có thể đặt lịch hẹn. Đây chỉ là bảng người dùng giả, tôi sẽ để lại các liên kết bên dưới nếu bạn chưa có hệ thống người dùng

  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    3 Khóa chính, tự động tăng
  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    0 Họ và tên
  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    1 Email của người dùng. Duy nhất để ngăn trùng lặp
  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    2 Mật khẩu

 

1B) HẸN GẶP

1-cơ sở dữ liệu. sql

-- (B) APPOINTMENTS
CREATE TABLE `appointments` (
  `appo_date` date NOT NULL,
  `appo_slot` varchar(255) NOT NULL,
  `user_id` bigint(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `appointments`
  ADD PRIMARY KEY (`appo_date`,`appo_slot`),
  ADD KEY `user_id` (`user_id`);

Điều này sẽ khá tự giải thích. Một bảng để lưu trữ các cuộc hẹn

  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    3 Ngày hẹn, khóa chính tổng hợp
  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    4 Vị trí cuộc hẹn, khóa chính tổng hợp. Đây là trường văn bản mở để bạn quyết định. Ví dụ: AM/PM hoặc các vị trí theo giờ – “1100, 1200, 1400, 1500”
  • -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    3 Người dùng đã đặt chỗ này. khóa ngoại

 

 

PHẦN 2) HẸN THƯ VIỆN

2-lib-appo. php

pdo = new PDO(
      "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
      DB_USER, DB_PASSWORD, [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ]);
  } catch (Exception $ex) { exit($ex->getMessage()); }}

  // (B) DESTRUCTOR - CLOSE DATABASE CONNECTION
  function __destruct () {
    if ($this->stmt!==null) { $this->stmt = null; }
    if ($this->pdo!==null) { $this->pdo = null; }
  }

  // (C) HELPER FUNCTION - EXECUTE SQL QUERY
  function query ($sql, $data=null) {
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute($data);
  }

  // (D) GET APPOINTMENTS IN DATE RANGE
  function get ($from, $to) {
    $this->query(
      "SELECT * FROM `appointments` WHERE `appo_date` BETWEEN ? AND ?",
      [$from, $to]
    );
    $res = [];
    while ($r = $this->stmt->fetch()) {
      $res[$r["appo_date"]][$r["appo_slot"]] = $r["user_id"];
    }
    return $res;
  }

  // (E) SAVE APPOINTMENT
  function save ($date, $slot, $user) {
    // (E1) CHECK SELECTED DATE
    $min = strtotime("+".APPO_MIN." day");
    $max = strtotime("+".APPO_MAX." day");
    $unix = strtotime($date);
    if ($unix<$min || $unix<$max) { $this->error = "Date must be between ".date("Y-m-d", $min)." and ".date("Y-m-d", $max);
    }

    // (E2) CHECK PREVIOUS APPOINTMENT
    $this->query(
      "SELECT * FROM `appointments` WHERE `appo_date`=? AND `appo_slot`=?",
      [$date, $slot]
    );
    if (is_array($this->stmt->fetch())) {
      $this->error = "$date $slot is already booked";
      return false;
    }

    // (E3) CREATE ENTRY
    $this->query(
      "INSERT INTO `appointments` (`appo_date`, `appo_slot`, `user_id`) VALUES (?,?,?)",
      [$date, $slot, $user]
    );
    return true;
  }
}

// (F) APPOINTMENT DATES & SLOTS - CHANGE TO YOUR OWN!
define("APPO_SLOTS", ["Morning", "Afternoon", "Evening"]);
define("APPO_MIN", 1); // next day
define("APPO_MAX", 7); // next week

// (G) DATABASE SETTINGS - CHANGE TO YOUR OWN!
define("DB_HOST", "localhost");
define("DB_NAME", "test");
define("DB_CHARSET", "utf8");
define("DB_USER", "root");
define("DB_PASSWORD", "");

// (H) NEW APPOINTMENT OBJECT
$_APPO = new Appointment();

Bây giờ cơ sở dữ liệu đã sẵn sàng, bước tiếp theo là tạo một thư viện PHP để làm việc với nó. Điều này có vẻ to lớn, nhưng hãy bình tĩnh và quan sát kỹ

  • (A, B, H) Khi
    -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    6 được tạo, hàm tạo sẽ tự động kết nối với cơ sở dữ liệu. Hàm hủy đóng kết nối
  • (C)
    -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    7 là một hàm trợ giúp đơn giản để chạy truy vấn SQL
  • (D & E) Các chức năng cuộc hẹn “thực tế”
    • -- (B) APPOINTMENTS
      CREATE TABLE `appointments` (
        `appo_date` date NOT NULL,
        `appo_slot` varchar(255) NOT NULL,
        `user_id` bigint(20) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
      
      ALTER TABLE `appointments`
        ADD PRIMARY KEY (`appo_date`,`appo_slot`),
        ADD KEY `user_id` (`user_id`);
      8 Nhận tất cả các cuộc hẹn trong phạm vi ngày nhất định
    • -- (B) APPOINTMENTS
      CREATE TABLE `appointments` (
        `appo_date` date NOT NULL,
        `appo_slot` varchar(255) NOT NULL,
        `user_id` bigint(20) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
      
      ALTER TABLE `appointments`
        ADD PRIMARY KEY (`appo_date`,`appo_slot`),
        ADD KEY `user_id` (`user_id`);
      9 Lưu cuộc hẹn
  • (F) Ngày hẹn và khung thời gian
    • pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE DATABASE CONNECTION
        function __destruct () {
          if ($this->stmt!==null) { $this->stmt = null; }
          if ($this->pdo!==null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
      
        // (D) GET APPOINTMENTS IN DATE RANGE
        function get ($from, $to) {
          $this->query(
            "SELECT * FROM `appointments` WHERE `appo_date` BETWEEN ? AND ?",
            [$from, $to]
          );
          $res = [];
          while ($r = $this->stmt->fetch()) {
            $res[$r["appo_date"]][$r["appo_slot"]] = $r["user_id"];
          }
          return $res;
        }
      
        // (E) SAVE APPOINTMENT
        function save ($date, $slot, $user) {
          // (E1) CHECK SELECTED DATE
          $min = strtotime("+".APPO_MIN." day");
          $max = strtotime("+".APPO_MAX." day");
          $unix = strtotime($date);
          if ($unix<$min || $unix<$max) { $this->error = "Date must be between ".date("Y-m-d", $min)." and ".date("Y-m-d", $max);
          }
      
          // (E2) CHECK PREVIOUS APPOINTMENT
          $this->query(
            "SELECT * FROM `appointments` WHERE `appo_date`=? AND `appo_slot`=?",
            [$date, $slot]
          );
          if (is_array($this->stmt->fetch())) {
            $this->error = "$date $slot is already booked";
            return false;
          }
      
          // (E3) CREATE ENTRY
          $this->query(
            "INSERT INTO `appointments` (`appo_date`, `appo_slot`, `user_id`) VALUES (?,?,?)",
            [$date, $slot, $user]
          );
          return true;
        }
      }
      
      // (F) APPOINTMENT DATES & SLOTS - CHANGE TO YOUR OWN!
      define("APPO_SLOTS", ["Morning", "Afternoon", "Evening"]);
      define("APPO_MIN", 1); // next day
      define("APPO_MAX", 7); // next week
      
      // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      
      // (H) NEW APPOINTMENT OBJECT
      $_APPO = new Appointment();
      0 Như trên, mỗi người sẽ có những “khe thời gian” khác nhau. Xác định của bạn ở đây
    • pdo = new PDO(
            "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
            DB_USER, DB_PASSWORD, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
          ]);
        } catch (Exception $ex) { exit($ex->getMessage()); }}
      
        // (B) DESTRUCTOR - CLOSE DATABASE CONNECTION
        function __destruct () {
          if ($this->stmt!==null) { $this->stmt = null; }
          if ($this->pdo!==null) { $this->pdo = null; }
        }
      
        // (C) HELPER FUNCTION - EXECUTE SQL QUERY
        function query ($sql, $data=null) {
          $this->stmt = $this->pdo->prepare($sql);
          $this->stmt->execute($data);
        }
      
        // (D) GET APPOINTMENTS IN DATE RANGE
        function get ($from, $to) {
          $this->query(
            "SELECT * FROM `appointments` WHERE `appo_date` BETWEEN ? AND ?",
            [$from, $to]
          );
          $res = [];
          while ($r = $this->stmt->fetch()) {
            $res[$r["appo_date"]][$r["appo_slot"]] = $r["user_id"];
          }
          return $res;
        }
      
        // (E) SAVE APPOINTMENT
        function save ($date, $slot, $user) {
          // (E1) CHECK SELECTED DATE
          $min = strtotime("+".APPO_MIN." day");
          $max = strtotime("+".APPO_MAX." day");
          $unix = strtotime($date);
          if ($unix<$min || $unix<$max) { $this->error = "Date must be between ".date("Y-m-d", $min)." and ".date("Y-m-d", $max);
          }
      
          // (E2) CHECK PREVIOUS APPOINTMENT
          $this->query(
            "SELECT * FROM `appointments` WHERE `appo_date`=? AND `appo_slot`=?",
            [$date, $slot]
          );
          if (is_array($this->stmt->fetch())) {
            $this->error = "$date $slot is already booked";
            return false;
          }
      
          // (E3) CREATE ENTRY
          $this->query(
            "INSERT INTO `appointments` (`appo_date`, `appo_slot`, `user_id`) VALUES (?,?,?)",
            [$date, $slot, $user]
          );
          return true;
        }
      }
      
      // (F) APPOINTMENT DATES & SLOTS - CHANGE TO YOUR OWN!
      define("APPO_SLOTS", ["Morning", "Afternoon", "Evening"]);
      define("APPO_MIN", 1); // next day
      define("APPO_MAX", 7); // next week
      
      // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN!
      define("DB_HOST", "localhost");
      define("DB_NAME", "test");
      define("DB_CHARSET", "utf8");
      define("DB_USER", "root");
      define("DB_PASSWORD", "");
      
      // (H) NEW APPOINTMENT OBJECT
      $_APPO = new Appointment();
      1 Mặc định – Ngày được phép sớm nhất là ngày mai, muộn nhất là tuần sau. Thay đổi thành của riêng bạn
  • (G) Hãy nhớ thay đổi cài đặt cơ sở dữ liệu thành cài đặt của riêng bạn

 

 

PHẦN 3) TRANG ĐẶT HẸN

3A) HTML

3a-chọn. php

-- (B) APPOINTMENTS
CREATE TABLE `appointments` (
  `appo_date` date NOT NULL,
  `appo_slot` varchar(255) NOT NULL,
  `user_id` bigint(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `appointments`
  ADD PRIMARY KEY (`appo_date`,`appo_slot`),
  ADD KEY `user_id` (`user_id`);
4

Sẽ không giải thích từng dòng một của trang này, nhưng giao diện HTML được chia thành hai phần

  1. Chúng tôi tải thư viện PHP trước. Tính toán ngày bắt đầu/ngày kết thúc và nhận tất cả các cuộc hẹn đã đặt trong khoảng thời gian này
  2. Bảng “Chọn khung giờ”
  3. Khi người dùng đã chọn một ngày/thời điểm, nó sẽ hiển thị trong biểu mẫu xác nhận này – Chỉ cần nhấp vào “đi” để gửi

Chà, bạn luôn có thể làm lại toàn bộ trang HTML theo ý thích của mình. Sử dụng bất kỳ thư viện và khuôn khổ của bên thứ ba nào bạn chọn

 

3B) BẢN JAVASCRIPT

3b-chọn. js

-- (B) APPOINTMENTS
CREATE TABLE `appointments` (
  `appo_date` date NOT NULL,
  `appo_slot` varchar(255) NOT NULL,
  `user_id` bigint(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `appointments`
  ADD PRIMARY KEY (`appo_date`,`appo_slot`),
  ADD KEY `user_id` (`user_id`);
5

Chỉ là một chức năng đơn giản để cập nhật giao diện HTML khi người dùng chọn ngày/thời điểm

 

 

PHẦN 4) LƯU CUỘC HẸN

4 cuốn. php

-- (B) APPOINTMENTS
CREATE TABLE `appointments` (
  `appo_date` date NOT NULL,
  `appo_slot` varchar(255) NOT NULL,
  `user_id` bigint(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `appointments`
  ADD PRIMARY KEY (`appo_date`,`appo_slot`),
  ADD KEY `user_id` (`user_id`);
6

Cuối cùng ta chỉ cần sử dụng hàm thư viện

-- (B) APPOINTMENTS
CREATE TABLE `appointments` (
  `appo_date` date NOT NULL,
  `appo_slot` varchar(255) NOT NULL,
  `user_id` bigint(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `appointments`
  ADD PRIMARY KEY (`appo_date`,`appo_slot`),
  ADD KEY `user_id` (`user_id`);
9 để lưu lại phiếu hẹn đã nộp. Đúng, bạn cần phải tự mình hoàn thành cái này. Xem “hệ thống chưa hoàn thiện” bên dưới

 

BIT BỔ SUNG & LIÊN KẾT

Đó là tất cả những gì dành cho hướng dẫn và đây là một phần nhỏ về một số tính năng bổ sung và liên kết có thể hữu ích cho bạn

 

HỆ THỐNG KHÔNG ĐẦY ĐỦ

Nhà phát triển của tôi cảm thấy ngứa ran, tôi có thể nghe thấy tiếng troll hét lên "đây là một hệ thống chưa hoàn thiện". Tất nhiên, đây chỉ là một hướng dẫn và rất nhiều công việc cần phải được thực hiện

  • Liên kết với hệ thống người dùng hiện tại của bạn và đảm bảo rằng chỉ những người dùng đã đăng ký mới có thể đặt lịch hẹn. Nếu bạn chưa có hệ thống người dùng, hãy xem các liên kết bên dưới
  • Nhớ sửa đổi
    -- (B) APPOINTMENTS
    CREATE TABLE `appointments` (
      `appo_date` date NOT NULL,
      `appo_slot` varchar(255) NOT NULL,
      `user_id` bigint(20) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    ALTER TABLE `appointments`
      ADD PRIMARY KEY (`appo_date`,`appo_slot`),
      ADD KEY `user_id` (`user_id`);
    9. Thêm séc của riêng bạn để ngăn một người giành lấy tất cả các vị trí có thể. Ví dụ: người dùng chỉ có thể đặt tối đa 3 suất trong vòng 7 ngày
  • Có thể mở hệ thống cuộc hẹn cho công chúng, nhưng bạn sẽ phải tìm cách xử lý thư rác
  • Khi “thanh toán”, gửi email xác nhận, SMS, xử lý thanh toán, yêu cầu thanh toán trước, bất kỳ dự án nào của bạn yêu cầu
  • Thêm chức năng thư viện của riêng bạn để cho phép và xử lý việc hủy bỏ
  • Làm báo cáo cuộc hẹn của riêng bạn. Ví dụ đơn giản –
    pdo = new PDO(
          "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET,
          DB_USER, DB_PASSWORD, [
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ]);
      } catch (Exception $ex) { exit($ex->getMessage()); }}
    
      // (B) DESTRUCTOR - CLOSE DATABASE CONNECTION
      function __destruct () {
        if ($this->stmt!==null) { $this->stmt = null; }
        if ($this->pdo!==null) { $this->pdo = null; }
      }
    
      // (C) HELPER FUNCTION - EXECUTE SQL QUERY
      function query ($sql, $data=null) {
        $this->stmt = $this->pdo->prepare($sql);
        $this->stmt->execute($data);
      }
    
      // (D) GET APPOINTMENTS IN DATE RANGE
      function get ($from, $to) {
        $this->query(
          "SELECT * FROM `appointments` WHERE `appo_date` BETWEEN ? AND ?",
          [$from, $to]
        );
        $res = [];
        while ($r = $this->stmt->fetch()) {
          $res[$r["appo_date"]][$r["appo_slot"]] = $r["user_id"];
        }
        return $res;
      }
    
      // (E) SAVE APPOINTMENT
      function save ($date, $slot, $user) {
        // (E1) CHECK SELECTED DATE
        $min = strtotime("+".APPO_MIN." day");
        $max = strtotime("+".APPO_MAX." day");
        $unix = strtotime($date);
        if ($unix<$min || $unix<$max) { $this->error = "Date must be between ".date("Y-m-d", $min)." and ".date("Y-m-d", $max);
        }
    
        // (E2) CHECK PREVIOUS APPOINTMENT
        $this->query(
          "SELECT * FROM `appointments` WHERE `appo_date`=? AND `appo_slot`=?",
          [$date, $slot]
        );
        if (is_array($this->stmt->fetch())) {
          $this->error = "$date $slot is already booked";
          return false;
        }
    
        // (E3) CREATE ENTRY
        $this->query(
          "INSERT INTO `appointments` (`appo_date`, `appo_slot`, `user_id`) VALUES (?,?,?)",
          [$date, $slot, $user]
        );
        return true;
      }
    }
    
    // (F) APPOINTMENT DATES & SLOTS - CHANGE TO YOUR OWN!
    define("APPO_SLOTS", ["Morning", "Afternoon", "Evening"]);
    define("APPO_MIN", 1); // next day
    define("APPO_MAX", 7); // next week
    
    // (G) DATABASE SETTINGS - CHANGE TO YOUR OWN!
    define("DB_HOST", "localhost");
    define("DB_NAME", "test");
    define("DB_CHARSET", "utf8");
    define("DB_USER", "root");
    define("DB_PASSWORD", "");
    
    // (H) NEW APPOINTMENT OBJECT
    $_APPO = new Appointment();
    4

Khả năng là vô tận và không thể bao quát mọi thứ trong hướng dẫn này – Bạn phải hoàn thành hệ thống của riêng mình

 

 

LIÊN KẾT và THAM KHẢO

  • Cố định hàng & cột của bảng HTML – Code Boxx
  • Đăng Ký Người Dùng Đơn Giản Với PHP MYSQL – Code Boxx
  • Hệ thống đăng nhập người dùng đơn giản với PHP MySQL – Code Boxx
  • Đăng nhập và xác thực JWT bằng PHP MYSQL – Code Boxx
  • Bảng quản trị CSS HTML thuần túy rất đơn giản – Code Boxx

 

KẾT THÚC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến cuối. Tôi hy vọng rằng nó đã giúp bạn hiểu rõ hơn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc