所以我有一个很长的国家大学列表,这些大学的名称很长,我需要为每个 <option value="1">LONG NAME </option>
分配一个值标签。问题是该值是数字,我希望当我从数据库返回数据时它是可读的。
长话短说,下面的代码返回我的值数字。大学名怎么翻译?
<form method="post" action=""">
<select name="university">
<option value="1">UNIVERSITY LONG NAME </option>
<option value="2">UNIVERSITY LONG NAME....</option>
<option value="3">UNIVERSITY LONG NAME 2</option>
</select>
<input type="submit" value="Submit the form"/>
</form>
<?php
$option = isset($_POST['university']) ? $_POST['university'] : false;
if ($option) {
echo htmlentities($_POST['university'], ENT_QUOTES, "UTF-8");
} else {
echo "task option is required";
exit;
}
?>
最佳答案
首先,您需要一个包含大学详细信息的数据库,以便您可以获取它们或将它们显示给最终用户,具体取决于他选择的大学。 我创建了一个名为universities的表并添加了2个字段(ID,university_name),id字段将是该表的主键,每所大学都会有一个唯一的id,两所大学不可能有相同的 id ,因此当 uesr 选择一所大学时,代码将根据其 id 搜索该大学。
只是为了测试我添加了 3 所大学的代码,这是表结构和我添加到其中的大学:
表结构:
我为此测试添加的大学:
- 阿拉斯加大学费尔类克斯分校:ID (1)
- 阿肯色大学:ID (2)
- 加州大学伯克利分校:ID (3)
现在,如果用户选择“阿拉斯加大学费尔类克斯分校”并按下提交,则应该出现“阿拉斯加大学费尔类克斯大学”的所有信息,这就是代码将执行的操作,具体取决于结果的选项 ID。
现在让我们来看代码: 在我的代码中,我使用 PDO 连接到数据库并从数据库中获取数据。什么是PDO?以及如何从数据库中获取数据?
PDO is an acronym for PHP Data Objects. PDO is a lean, consistent way to access databases. This means developers can write portable code much easier. PDO is not an abstraction layer like PearDB. PDO is a more like a data access layer which uses a unified API (Application Programming Interface).
要了解如何从数据库中获取数据,我希望您阅读本主题: PHP 从 MySQL 中选择数据:http://www.w3schools.com/php/php_mysql_select.asp
编辑(谢谢 chris85):我编辑了准备语句,这样它就可以免受 SQL 注入(inject)的影响:
请阅读此内容:Prepared statements and stored procedures
旧代码:
$FetchUniversity = $conn->prepare("SELECT * FROM universities WHERE id= university ");
$FetchUniversity->execute();
新代码:
$FetchUniversity = $conn->prepare("SELECT * FROM universities WHERE id= ? ");
$FetchUniversity->execute(array($university_id));
完整代码在这里:
<html>
<body>
<form method="post" action="">
<select name="university">
<option SELECTED>Pick University </option>
<option value="1">University of Alaska Fairbanks</option>
<option value="2">University of Arkansas</option>
<option value="3">University of California, Berkeley</option>
</select>
<input type="submit" name="submit">
</form>
<?php
$servername = "Localhost";
$username = "root";
$password = "";
$database = "Name of the database";
try {
$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
if(isset($_POST['submit']))
{
$university_id = $_POST['university'];
$FetchUniversity = $conn->prepare("SELECT * FROM universities WHERE id= ? ");
$FetchUniversity->execute(array($university_id));
$FetchUni = $FetchUniversity->FETCH(PDO::FETCH_ASSOC);
echo $PickerUni = $FetchUni['university_name'];
}
else
{
echo "Please Pick a university";
}
?>
</body>
<html>
我在我的电脑(本地电脑)上测试了这段代码,所以服务器名称是“Localhost”。
我看到您没有给提交按钮命名,这是错误的,如果您不打算使用 AJAX 之类的东西,您应该给它命名。随着时间的推移,一切都会对你来说很容易,这又是一个测试代码,如果不是,你会看到我放了一些东西来保护查询,但它是一个测试代码,所以没有危险。希望这对你有帮助 future ,如果有什么不适合你,请告诉我。
关于php - 如何处理 PHP 中的 <option> 值以便在数据库中可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196044/