我是一个 PHP 新手所以希望我的问题很容易理解。
我正在尝试从我的编辑/更新页面的下拉菜单中显示先前选择的选项。下拉菜单显示我从名为“团队”的表中获取的所有团队。我从不使用此表将数据插入 - 仅从中获取数据。
team
|id|name |
|--| --- |
|1 | MTL |
|2 | BOS |
|3 | CGY |
|4 | EDM |
还有一个名为“crud”的第二个表,我所有的提交结果都被插入到其中。 'home' 和 'away' 选项卡显示来自 'team' 表的球队 ID。例如在第 1 行,主队是 CGY,客队是 MTL:
crud
|id|game#|home|away|goalsHome|goalsAway
|1 | 1 |3 |1 | |
|2 | 2 |1 |2 | |
|3 | 3 |2 |4 | |
|4 | 4 |4 |3 | |
|5 | | | | |
目前,当我单击更新按钮时,它会将我重定向到 update.php,我可以在其中提交所有更改。一切正常,但它始终显示所选的默认选项,而不是显示先前选择的值。
因为这个下拉列表是从我的团队表中获取数据来显示选项,所以我很难在不弄乱选项的情况下显示之前选择的值。
这就是我的主页选项代码目前的样子:
<select name="home" type="text" id="" value="">
<?php
$query = "SELECT * FROM team";
$result = $con->query($query);
if ($result->num_rows > 0) {
while ($row = mysqli_fetch_assoc($result)) {
?>
<option value="<?php echo $row['id']; ?>"selected="selected"><?php echo $row['name']; ?></option>
<?php
}
}
?>
</select>
<label>Home Team</label>
如您所见,我的查询是从“团队”表中获取所有团队,以显示为选项。这很好,但是当我尝试使用 join 显示先前选择的值时,它不再显示“团队”中的所有团队,而是只会显示两个团队(以最近“crud”记录中的哪个团队为准)。这是我的代码,仅更改主队选项的查询:
$query = "SELECT * FROM team
INNER JOIN crud ON crud.home=team.id";
我需要它从表“crud”中获取先前选择的数据,然后保留从表“team”中选择的选项。所以我觉得我走在正确的轨道上,加入声明很可能是去这里的方式。
非常感谢任何帮助或指导。我找到了很多其他资源来实现选项中的手动输入,但不是从数据库中的不同表中获取选项时。
CODE(同上)
<select name="home" type="text" id="" value="">
<?php
$query = "SELECT * FROM team";
;
$result = $con->query($query);
if ($result->num_rows > 0) {
while ($row = mysqli_fetch_assoc($result)) {
?>
<option value="<?php echo $row['id']; ?>"selected="selected"><?php echo $row['name']; ?></option>
<?php
}
}
?>
</select>
<label>Home Team</label>
$query = "SELECT * FROM team
INNER JOIN crud ON crud.home=team.id";
假设您正在编辑 id=1 的 crud 表记录,那么对于“主字段”:
你应该换线
<option value="<?php echo $row['id']; ?>"selected="selected"><?php echo $row['name']; ?></option>
类似以下内容
<option value="<?php echo $row['id']; ?>"
<?php if ($row["id"]==$row0["home"]) { echo " selected "; } ?>
><?php echo $row['name']; ?></option>
所以代码将是
<?php
$query0 = "SELECT * FROM crud where id=1";
$result0 = $con->query($query0);
$row0 = mysqli_fetch_assoc($result0)
<select name=home>
$query = "SELECT * FROM team";
$result = $con->query($query);
if ($result->num_rows > 0) {
while ($row = mysqli_fetch_assoc($result)) {
?>
<option value="<?php echo $row['id']; ?>"
<?php if ($row["id"]==$row0["home"]) { echo " selected "; } ?>
><?php echo $row['name']; ?></option>
<?php
}
}
?>
</select>