Danh sách thả xuống phụ thuộc trong php không có ajax

Hộp chọn phụ thuộc động được sử dụng để tự động điền dữ liệu phụ thuộc vào danh sách thả xuống. Dựa trên lựa chọn thả xuống, dữ liệu phụ thuộc được lấy từ cơ sở dữ liệu và hiển thị trong hộp chọn tiếp theo. Nói chung, hộp chọn phụ thuộc động được sử dụng để triển khai chức năng thả xuống thành phố của quốc gia, tiểu bang. Sử dụng Ajax và PHP, bạn có thể dễ dàng triển khai trình đơn thả xuống phụ thuộc động mà không cần làm mới trang

Danh sách thả xuống phụ thuộc động rất hữu ích để tìm nạp dữ liệu quan hệ động từ cơ sở dữ liệu và được liệt kê trong nhiều hộp chọn. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách triển khai trình đơn thả xuống quan hệ của thành phố quốc gia bằng cách sử dụng jQuery, Ajax, PHP và MySQL. Điều này có nghĩa là nhà nước có liên quan đến đất nước và thành phố có liên quan đến nhà nước. Dựa trên việc thay đổi quốc gia & tiểu bang, tiểu bang & thành phố tương ứng được tìm nạp từ cơ sở dữ liệu mà không cần tải lại trang bằng jQuery, Ajax, PHP và MySQL

Mã ví dụ ban đầu hiển thị tất cả các quốc gia trong danh sách thả xuống quốc gia. Khi một quốc gia được chọn, các trạng thái tương ứng sẽ được tìm nạp từ cơ sở dữ liệu MySQL và xuất hiện trong danh sách thả xuống trạng thái. Tương tự như vậy khi một tiểu bang được chọn, các thành phố tương ứng sẽ được tìm nạp từ cơ sở dữ liệu MySQL và xuất hiện trong menu thả xuống của thành phố

Trước khi bắt đầu xây dựng danh sách thả xuống phụ thuộc động với PHP và MySQL, hãy xem cấu trúc tệp

dynamic_dependent_dropdown_php/
├── dbConfig.php
├── index.php
├── ajaxData.php
└── js/
    └── jquery.min.js

Tạo bảng cơ sở dữ liệu

Để lưu trữ dữ liệu của quốc gia, tiểu bang và thành phố, cần có ba bảng trong cơ sở dữ liệu. Ngoài ra, sẽ có một mối quan hệ giữa các quốc gia, tiểu bang và bảng thành phố. Bảng tiểu bang có mối quan hệ với bảng quốc gia và bảng thành phố có mối quan hệ với bảng tiểu bang

SQL sau đây tạo một bảng

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
1 trong cơ sở dữ liệu MySQL

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

SQL sau đây tạo một bảng

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
0 với trường cha mẹ
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
1 trong cơ sở dữ liệu MySQL

CREATE TABLE `states` (
 `state_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_id` int(11) NOT NULL,
 `state_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`state_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

SQL sau đây tạo một bảng

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
2 với trường cha mẹ
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
3 trong cơ sở dữ liệu MySQL

CREATE TABLE `cities` (
 `city_id` int(11) NOT NULL AUTO_INCREMENT,
 `state_id` int(11) NOT NULL,
 `city_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`city_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Cấu hình cơ sở dữ liệu (dbConfig. php)

Đoạn mã sau dùng để kết nối cơ sở dữ liệu bằng PHP và MySQL. Chỉ định máy chủ cơ sở dữ liệu (

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
4), tên người dùng (
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
5), mật khẩu (
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
6) và tên (
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
7) theo thông tin đăng nhập cơ sở dữ liệu của bạn

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
2

Hộp chọn phụ thuộc động (chỉ mục. php)

Mã HTML & PHP.
Ban đầu, tất cả dữ liệu quốc gia được lấy từ cơ sở dữ liệu và được liệt kê trong menu thả xuống quốc gia. Khi một giá trị được chọn trong danh sách thả xuống quốc gia, dữ liệu tương ứng sẽ được liệt kê trong danh sách thả xuống của tiểu bang và thành phố.

Mã JavaScript.
Sau khi một quốc gia được chọn, các trạng thái phụ thuộc sẽ được tìm nạp từ tập lệnh phía máy chủ (

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
8) bằng cách sử dụng jQuery và Ajax. Tương tự như vậy, bằng cách chọn trạng thái, các thành phố phụ thuộc được truy xuất từ ​​tập lệnh phía máy chủ (
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
8) bằng cách sử dụng jQuery và Ajax.

Cần có jQuery để sử dụng Ajax, vì vậy, trước tiên hãy bao gồm thư viện jQuery

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
5

Bắt đầu yêu cầu Ajax để tìm nạp dữ liệu phụ thuộc (tiểu bang và thành phố) từ cơ sở dữ liệu mà không cần làm mới trang bằng jQuery

  • Khi thay đổi giá trị trong danh sách thả xuống quốc gia,
    • ĐĂNG IS quốc gia đã chọn vào tập lệnh phía máy chủ (Dữ liệu ajax. php) thông qua yêu cầu Ajax
    • Danh sách tùy chọn hộp chọn được lấy từ phản hồi và HTML được đặt thành danh sách thả xuống trạng thái phụ thuộc
  • Khi thay đổi giá trị trong trạng thái thả xuống,
    • ĐĂNG ID trạng thái đã chọn vào tập lệnh phía máy chủ (ajaxData. php) thông qua yêu cầu Ajax
    • Danh sách tùy chọn hộp chọn được lấy từ phản hồi Ajax và HTML được đặt thành danh sách thả xuống thành phố phụ thuộc
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
5

Đã truy xuất dữ liệu phụ thuộc từ cơ sở dữ liệu (ajaxData. php)

Dữ liệu ajax. php được gọi bởi yêu cầu Ajax để truy xuất dữ liệu phụ thuộc từ cơ sở dữ liệu bằng PHP và MySQL. HTML thả xuống của tiểu bang và thành phố được trả về phương thức thành công của yêu cầu Ajax

  • Truy xuất ID từ yêu cầu Ajax bằng phương thức PHP $_POST
  • Nếu
    CREATE TABLE `countries` (
     `country_id` int(11) NOT NULL AUTO_INCREMENT,
     `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
     `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
     PRIMARY KEY (`country_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    1 được cung cấp,
    • Tìm nạp dữ liệu trạng thái dựa trên ID quốc gia cụ thể từ cơ sở dữ liệu
    • Tạo HTML của danh sách tùy chọn trạng thái
  • Nếu
    CREATE TABLE `countries` (
     `country_id` int(11) NOT NULL AUTO_INCREMENT,
     `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
     `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
     PRIMARY KEY (`country_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    3 được cung cấp,
    • Tìm nạp dữ liệu thành phố dựa trên ID trạng thái cụ thể từ cơ sở dữ liệu
    • Tạo HTML của danh sách tùy chọn thành phố
  • Tùy chọn hiển thị của danh sách thả xuống
CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
9

Đăng và nhận giá trị của danh sách thả xuống phụ thuộc động

Sau khi gửi biểu mẫu, bạn có thể nhận giá trị của các hộp chọn phụ thuộc động bằng cách sử dụng PHP. Sử dụng phương thức $_POST để truy xuất giá trị tùy chọn đã chọn trong PHP

Mã HTML

Mã PHP

CREATE TABLE `countries` (
 `country_id` int(11) NOT NULL AUTO_INCREMENT,
 `country_name` varchar(50) CHARACTER SET utf8 NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active | 0=Inactive',
 PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
0

Danh sách thả xuống nhiều lựa chọn với Hộp kiểm bằng jQuery

Sự kết luận

Các hộp chọn phụ thuộc động là một yếu tố rất hữu ích khi bạn muốn cho phép người dùng chọn các giá trị từ danh sách thả xuống nhiều. Trong mã ví dụ, chúng tôi đã hiển thị các hộp chọn phụ thuộc động cho danh sách thả xuống thành phố của quốc gia trong PHP. Bạn có thể dễ dàng mở rộng chức năng hộp chọn phụ thuộc động và triển khai danh sách thả xuống thành phố trạng thái quốc gia Ajax bằng PHP và MySQL. Nếu bạn có một số lượng lớn dữ liệu, hãy sử dụng kiểu dữ liệu JSON trong Ajax và PHP để có phản hồi nhanh

Bạn có muốn nhận trợ giúp triển khai hay sửa đổi hoặc nâng cao chức năng của tập lệnh này không?