2016-04-27 36 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和當它打印「選擇,否則什麼都沒有。

相關問題