2016-04-27 57 views
-1

我有一个PHP前端的音乐数据库,您可以使用Web客户端添加/编辑/删除艺术家,专辑和曲目。我最后一个真正的问题是获得一个选择框来自动选择我传递给页面的选项。基于前一页的PHP/MySQL自动选择选项

例子:

在一个名为“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>";` 

这是作为一个链接到下一个页面,并收集所有有关的信息数据库中的专辑并发送到名为“editCD.php”的页面。

现在这个页面上,所有的信息都用来填写如下图所示的网页(有更多,但是对于这篇文章的目的,只有第一个选择框事项):

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> 

什么我希望“artID”的“选择”选项是传递给页面的值。使用关联数组,我能够显示与'artID'关联的'artName'。目前,除了'artName'外,关于专辑的所有信息均正确显示,并且默认为第一个值。这是一个问题,就像用户只需单击“更新”一样,它会将名称更新为默认名称,因此意外更改数据库条目。

我知道我需要使用

<option selected ...> 

,但我不知道在要使用的语法。

回答

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>'; 
?> 
+0

谢谢,工作得很好,而且我在每个文件的开头都有数据验证,但是我认为在这篇文章中并不值得包括。 – Dan

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 [ 'artid的数据类型']的ID。 (在一个真实的场景中使用intval或东西,以防止SQL注入) 然后检查循环,如果从数据库的id是从GET的id和当它打印“选择,否则什么都没有。

相关问题