Dans le développement Web, nous devons souvent utiliser des formulaires pour collecter les informations saisies par les utilisateurs. Cependant, dans certains cas, nous devons transmettre certaines données au traitement en arrière-plan en même temps, et ces données ne nécessitent pas de saisie ou d'affichage de l'utilisateur. À l'heure actuelle, vous pouvez utiliser des champs masqués pour transmettre ces données. Dans le développement PHP, nous pouvons transmettre un tableau via des champs cachés.
Qu'est-ce qu'un domaine caché ?
En HTML, il existe une balise , qui est utilisée pour transmettre des données en arrière-plan mais non affichées sur la page. C'est le champ caché.
En PHP, nous pouvons également définir un champ caché via la balise pour transmettre les données au serveur.
Comment passer un tableau ?
Si vous souhaitez transmettre un tableau, vous devez sérialiser le tableau puis le stocker dans le champ caché. Par exemple, le code suivant peut sérialiser un tableau associatif et le stocker dans un champ caché :
<form method="post" action="process.php"> <input type="hidden" name="data" value="<?php echo htmlspecialchars(json_encode($data)); ?>"> <input type="submit" value="Submit"> </form>
Dans le code ci-dessus, nous définissons un champ caché nommé "data" et sérialisons le tableau associatif $data La valeur est ensuite attribuée au attribut "value" de ce champ masqué. Notez qu'avant de stocker le champ caché, nous utilisons d'abord la fonction json_encode() intégrée de PHP pour sérialiser le tableau associatif en une chaîne JSON.
Côté serveur, nous pouvons utiliser la fonction json_decode() pour désérialiser la chaîne JSON dans un tableau associatif. Par exemple, le code suivant peut analyser le champ caché passé précédemment dans un tableau associatif :
$data = json_decode($_POST['data'], true);
Dans le code ci-dessus, nous utilisons $_POST['data'] pour obtenir les caractères JSON sérialisés stockés dans la chaîne du champ caché, puis utilisez la fonction json_decode() pour le désérialiser en un tableau associatif.
Il est important de noter que nous devons définir le deuxième paramètre sur true afin de convertir le résultat en un tableau associatif.
Exemple de démonstration
Afin de mieux comprendre le principe et la mise en œuvre du passage de tableaux dans des champs cachés, nous proposons un exemple de démonstration ci-dessous. Cet exemple est un système de forum de messages simple. Une fois que l'utilisateur a laissé un message, le contenu du message est stocké dans la base de données MySQL et la liste des messages est affichée sur la page.
Tout d'abord, jetons un coup d'œil au code front-end, qui est responsable du rendu du formulaire de message et de la liste des messages :
<!DOCTYPE html> <html> <head> <title>Message Board Demo</title> </head> <body> <h1>Message Board Demo</h1> <form method="post" action="process.php"> <p><label>Your Name:</label><br><input type="text" name="name"></p> <p><label>Message:</label><br><textarea name="message"></textarea></p> <input type="hidden" name="action" value="add"> <p><input type="submit" value="Submit"></p> </form> <hr> <h2>Message List</h2> <ul> <?php foreach ($messages as $message) : ?> <li><?php echo htmlspecialchars($message['name'] . ': ' . $message['message']) ?></li> <?php endforeach; ?> </ul> </body> </html>
Dans le code ci-dessus, nous définissons un formulaire dans lequel l'utilisateur peut saisir le nom et le contenu du message, puis cliquez sur le bouton « Soumettre » pour soumettre le formulaire. Dans le formulaire, nous définissons un champ caché pour passer un paramètre de ligne de commande "action" afin d'indiquer à l'arrière-plan les opérations que nous voulons effectuer. Ici, nous définissons « action » sur « ajouter », indiquant que nous souhaitons ajouter un nouveau message.
Une fois le formulaire soumis, nous devons envoyer le nom et le contenu du message saisi par l'utilisateur au serveur pour traitement. La logique de traitement spécifique est implémentée dans le code PHP en arrière-plan.
Voici le code backend pour gérer les opérations d'ajout et de lecture des commentaires :
<?php // 连接到数据库 $conn = new mysqli('localhost', 'username', 'password', 'database'); // 检查连接是否成功 if ($conn->connect_error) { die('Connection failed: ' . $conn->connect_error); } // 处理留言添加操作 if ($_POST['action'] == 'add') { $name = $_POST['name']; $message = $_POST['message']; $sql = "INSERT INTO messages (name, message) VALUES ('$name', '$message')"; $result = $conn->query($sql); if (!$result) { die('Error: ' . $conn->error); } } // 读取留言列表 $sql = "SELECT * FROM messages ORDER BY id DESC"; $result = $conn->query($sql); if (!$result) { die('Error: ' . $conn->error); } $messages = []; while ($row = $result->fetch_assoc()) { $messages[] = $row; } $conn->close();
Dans le code ci-dessus, nous nous connectons d'abord à la base de données MySQL et vérifions si la connexion est réussie. Ensuite, en fonction du paramètre « action » soumis, déterminez quelle opération l'utilisateur souhaite effectuer.
Si le paramètre "action" est "ajouter", cela signifie que l'utilisateur souhaite ajouter un nouveau message. Nous obtenons le nom et le contenu du message saisis par l'utilisateur à partir du tableau $_POST, puis utilisons l'instruction insert pour écrire le contenu du message dans la base de données MySQL.
Si le paramètre "action" est "lire", cela signifie que l'utilisateur souhaite lire la liste des messages. Nous interrogeons tous les enregistrements de messages de la base de données MySQL et stockons les résultats dans un tableau associatif $messages.
Enfin, nous fermons la connexion à la base de données MySQL et transmettons le tableau $messages au code front-end afin que l'utilisateur puisse voir la liste des messages.
Conclusion
Grâce à l'exemple de démonstration ci-dessus, nous pouvons voir comment utiliser les champs cachés pour transmettre des tableaux. Dans le développement Web quotidien, nous devons souvent transmettre certaines données en arrière-plan pour les traiter en même temps sans intervention ni affichage de l'utilisateur. L'utilisation de champs cachés peut bien remplir cette fonction, et l'utilisation de tableaux peut améliorer la flexibilité du transfert de données, rendant nos programmes plus faciles à développer et à maintenir.
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!