Maison  >  Article  >  développement back-end  >  Comment gérer la sélection et l'affichage à plusieurs niveaux dans les formulaires PHP

Comment gérer la sélection et l'affichage à plusieurs niveaux dans les formulaires PHP

王林
王林original
2023-08-10 23:27:251378parcourir

Comment gérer la sélection et laffichage à plusieurs niveaux dans les formulaires PHP

Comment gérer la sélection et l'affichage à plusieurs niveaux dans les formulaires PHP

Lors du développement d'applications Web, les formulaires font partie intégrante. Les formulaires permettent aux utilisateurs de saisir et de soumettre des données, nous permettant ainsi de traiter et de sauvegarder les saisies des utilisateurs. Parfois, nos formulaires contiennent plusieurs niveaux de sélection, tels que des sélections pour les provinces et les villes, ou des sélections pour des classifications à plusieurs niveaux. Dans cet article, je présenterai des techniques sur la façon de gérer la sélection et l'affichage à plusieurs niveaux dans les formulaires PHP, et je fournirai des exemples de code correspondants.

  1. Conception de base de données

Tout d'abord, nous devons concevoir les tables correspondantes dans la base de données pour stocker les données sélectionnées à plusieurs niveaux. En prenant comme exemple les provinces et les villes, nous pouvons concevoir trois tableaux : « provinces », « villes » et « districts ». Chaque table contient un champ de clé primaire à incrémentation automatique qui identifie de manière unique chaque enregistrement, ainsi qu'un champ de nom correspondant à des fins d'affichage.

Par exemple, la table "provinces" peut contenir les champs suivants :

id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255)

La table "villes" peut contenir les champs suivants :

id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
province_id INT

La table "quartiers" peut contenir les champs suivants :

id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
city_id INT
  1. Requête base de données

Ensuite, nous Les données correspondantes doivent être interrogées en fonction de la sélection de l'utilisateur. Dans cet exemple, nous pouvons utiliser des listes déroulantes pour réaliser une sélection à plusieurs niveaux. Une fois que l'utilisateur a sélectionné une province, nous devons interroger les données de la ville correspondante en fonction de l'identifiant de la province. Ensuite, une fois que l'utilisateur a sélectionné une ville, nous devons interroger les données du district et du comté correspondants en fonction de l'identifiant de la ville.

Ce qui suit est un exemple simple de code de requête de base de données :

<?php
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

// 获取省份数据
$sql = "SELECT * FROM provinces";
$result = $conn->query($sql);
$provinces = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $provinces[$row['id']] = $row['name'];
    }
}

// 获取城市数据
$provinceId = $_POST['province_id'];
$sql = "SELECT * FROM cities WHERE province_id = " . $provinceId;
$result = $conn->query($sql);
$cities = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $cities[$row['id']] = $row['name'];
    }
}

// 获取区县数据
$cityId = $_POST['city_id'];
$sql = "SELECT * FROM districts WHERE city_id = " . $cityId;
$result = $conn->query($sql);
$districts = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $districts[$row['id']] = $row['name'];
    }
}

$conn->close();
?>
  1. Affichage et traitement du formulaire

Enfin, nous devons afficher les données interrogées dans le formulaire et traiter les données soumises par l'utilisateur. Ce qui suit est un exemple simple de code d'affichage et de traitement de formulaire :

<!DOCTYPE html>
<html>
<head>
    <title>多层级选择示例</title>
</head>
<body>
    <form method="post" action="process.php">
        <label for="province">省份:</label>
        <select id="province" name="province_id">
            <?php foreach ($provinces as $id => $name) { ?>
                <option value="<?php echo $id; ?>"><?php echo $name; ?></option>
            <?php } ?>
        </select><br>

        <label for="city">城市:</label>
        <select id="city" name="city_id">
            <?php foreach ($cities as $id => $name) { ?>
                <option value="<?php echo $id; ?>"><?php echo $name; ?></option>
            <?php } ?>
        </select><br>

        <label for="district">区县:</label>
        <select id="district" name="district_id">
            <?php foreach ($districts as $id => $name) { ?>
                <option value="<?php echo $id; ?>"><?php echo $name; ?></option>
            <?php } ?>
        </select><br>

        <input type="submit" value="提交">
    </form>
</body>
</html>

Dans le code ci-dessus, nous utilisons une boucle foreach pour afficher les données interrogées sous forme d'options de liste déroulante. Une fois que l'utilisateur a sélectionné l'option correspondante, les données du formulaire seront envoyées au script "process.php" qui traite les données une fois soumises. Vous pouvez effectuer les opérations de traitement et de sauvegarde des données correspondantes dans ce script.

Voici comment gérer la sélection et l'affichage à plusieurs niveaux dans les formulaires PHP. En concevant correctement la base de données et en interrogeant les données, nous pouvons facilement mettre en œuvre des fonctions de sélection à plusieurs niveaux et effectuer d'autres opérations via les données soumises par l'utilisateur. J'espère que cet article pourra vous être utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn