我有一个带有PHP前端的音乐数据库,您可以使用Web客户端添加/编辑/删除艺术家,专辑,曲目。我的最后一个真正的问题是获得一个选择框来自动选择我传递给页面的选项。
示例:
在名为' createCD.php'的页面上我有这段代码:
echo "<td><a href=\"editCD.php?cdTitle=".rawurlencode($row['cdTitle'])."&cdID=$row[cdID]&artID=$row[artID]&cdGenre=".rawurlencode($row['cdGenre'])."&cdPrice=$row[cdPrice]\" </a>Edit</td>";`
这用作下一页的链接,收集有关数据库中相册的所有信息,并发送到名为&#39; editCD.php&#39;。
的页面。现在,在此页面上,所有信息都用于填写此处显示的网页(还有更多内容,但就本帖而言,只有第一个选择框很重要):
Artist Name:
<!-- dropdown with artist name -->
<?php
echo '<select name= "artID" id="artID">';
while ($row = mysqli_fetch_assoc($result)){
echo '<option value="'.$row['artID'].'">'.$row['artName'].'</option>';
}
echo '</select>';
?>
<p>
Album Title:
<input id="cdTitle" type="text" name="cdTitle" value ="<?php echo htmlspecialchars($cdTitle); ?>" />
</p>
我希望选择&#34;选择&#34; &#39; artID&#39;的选项是传递给页面的值。使用关联数组,我能够显示&#39; artName&#39;与'artID&#39;相关联。目前,除了“艺术名称”之外,有关相册的所有信息都会正确显示。它默认为第一个值。这是一个问题,就好像用户只需点击&#34;更新&#34;它会将名称更新为默认名称,因此无意中更改了数据库条目。
我知道我需要使用
<option selected ...>
但我不确定要使用的语法。
答案 0 :(得分:1)
<?php
$artID = $_GET['artID']; // get the artID from the URL, you should do data validation
echo '<select name= "artID" id="artID">';
while ($row = mysqli_fetch_assoc($result)){
echo '<option value="'.$row['artID'].'"';
if ($artID == $row['artID']) echo ' selected'; // pre-select if $artID is the current artID
echo '>'.$row['artName'].'</option>';
}
echo '</select>';
?>
答案 1 :(得分:0)
$artId = $_GET['artID'];
while ($row = mysqli_fetch_assoc($result)) {
$selected = $artId == $row['artID'] ? 'selected' : '';
echo '<option value="'.$row['artID'].'" '.$selected.'>'.$row['artName'].'</option>';
}
首先,您通过$ _GET [&#39; artID&#39;]获取ID。 (在实际场景中使用intval或其他东西来阻止sql注入) 然后检查循环中是否来自数据库的id与来自GET的id相同以及何时打印&#34;被选中,否则没有。