我正在练习稍作练习,但我偶然发现了一个小问题,我无法抬头。目标很简单:用户填写表格,然后将其重定向到结果页面或表格。从结果页面中,用户可以导航到一个页面,他们可以在其中编辑任何匹配时间段的记录和输入的名称。
示例:用户1添加了一个名为" banshee"的汽车,将其重定向到结果页面,看到了" banshee'汽车,但随后决定他希望颜色不同。用户可导航到更新页面,并且能够从下拉列表中输入" Banshee"或从" Banshee"中输入" Banshee"。第一个选项可行,但后者是我要寻找的解决方案。
目前我有以下表格(这只是重要的部分):
<form method="post" name="input" action="edittest.php" >
<?php
include("/var/www/html/includes/sqlconnecttest.php");
$db=mysqli_select_db($connect,$database)
or die("Could not connect to the database");
$query = "SELECT * FROM cars WHERE datetime > DATE_SUB(CURDATE(), INTERVAL 5 DAY);";
$sql = mysqli_query($connect,$query);
?>
<p>
<label>Name</label>
<select name="name" form="input" required>
<?php
echo "<option value="" disabled="disabled" selected="selected" style="display:none"></option>";
while ($row = mysqli_fetch_array($sql)){
echo "<option value="name">" . $row['name'] . "</option>";
}
?>
</select>
</p>
连接是通过以下PHP代码完成的:
<?php
include("/var/www/html/includes/sqlconnecttest.php");
$db = new mysqli("$host","$user","$pass","$database");
$name=$_POST['name'];
$stmt = $db->prepare("UPDATE cars
SET color=?, airco=?, tires=?, rims=?, price=?, engine=?, remarks=?
WHERE name='$name' AND datetime > DATE_SUB(CURDATE(), INTERVAL 5 DAY);");
$stmt->bind_param('ssssiss', $ccolor, $cairco, $ctires, $crims, $cprice, $cengine, $cremarks);
$color=$_POST['color'];
$airco=$_POST['airco'];
$tires=$_POST['tires'];
$rims=$_POST['rims'];
$price=$_POST['price'];
$engine=$_POST['engine'];
$remarks=$_POST['remarks'];
$ccolor=htmlspecialchars($color,ENT_QUOTES);
$cairco=htmlspecialchars($airco,ENT_QUOTES);
$ctires=htmlspecialchars($tires,ENT_QUOTES);
$crims=htmlspecialchars($rims,ENT_QUOTES);
$cprice=htmlspecialchars($price,ENT_QUOTES);
$cengine=htmlspecialchars($engine,ENT_QUOTES);
$cremarks=htmlspecialchars($remarks,ENT_QUOTES);
if ($stmt->execute()) {
header("Location: redtest.php");
}
?>
问题如下:当我使用上面发布的HTML表单并带有while-loop填充选项时,"更新"页面无助。没有错误,没有更新,只需执行操作(open edittest.php)。
但是,当我用此简单的TextField替换上述下拉菜单时,它可以正常工作。无论我在Textfield中输入什么,它都在更新查询中使用它。
<p>
<label>Name</label>
<input type="text" maxlength="50" name="name" required />
</p>
我感觉到PHP代码打破了选择场和其余表格之间的连接。
我看到了您的选择两个问题。首先,您有一个似乎是一个默认值,然后将其隐藏起来:无。您还为每个选项设置相同的值。我相信这就是您要做的。
<select name="name" form="input" required>
<option value=""></option>
<?php
while ($row = mysqli_fetch_array($sql)){
echo "<option value="". $row['name'] ."">" . $row['name'] . "</option>";
}
?>
</select>