gpt4 book ai didi

php - 从 SQL 填充选择字段,使用选择更新数据库

转载 作者:行者123 更新时间:2023-11-29 20:52:12 25 4
gpt4 key购买 nike

我正在练习一点开发,但我偶然发现了一个我无法理解的小问题。目标很简单:用户填写表单,然后重定向到结果页面或表单。从结果页面,用户可以导航到一个页面,在其中可以编辑与他们输入的时间段和名称相匹配的任何记录。

示例:用户 1 添加了一辆名为“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 循环填充选项时,更新页面不执行任何操作。没有错误,没有更新,它只是执行操作(打开 edittest.php)。

但是,当我用这个简单的文本字段替换上面发布的下拉菜单时,它工作正常。无论我在文本字段中输入什么,它都会在更新查询中使用它。

    <p>
<label>Name</label>
<input type="text" maxlength="50" name="name" required />
</p>

我感觉 PHP 代码破坏了选择字段和表单其余部分之间的连接。

最佳答案

我发现您的选择有两个问题。首先,您拥有看似默认的值,然后使用 display:none 隐藏该值。您还为每个选项设置相同的值。我相信这就是您正在尝试做的事情。

<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>

关于php - 从 SQL 填充选择字段,使用选择更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37945913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com