2013-09-25 50 views
0

我的更新語句無法正常工作,我試圖從數據庫中提取數據,在其中填充「Y」或「N」的下拉列表,在提交時輸入值進入數據庫並刷新頁面。使用Dropdown值更新MySql DB

到目前爲止,我有我的項目列表,每個項目都有正確填充的下拉列表,現在我的提交失敗了。

<?php 
    $updatedFeatProd = $_POST['featuredProduct']; 
    var_dump($updatedFeatProd); 

    if ($_POST) { 
     foreach ($_POST['featuredProduct'] as $key => $val) { 
      $query = 'UPDATE tblProducts SET featuredProduct = ' . $updatedFeatProd . ' 
        WHERE fldID = ' . $val; 
      $sql = dbQuery($query); 
     } 
    } 
    $sql = dbQuery('SELECT fldId, fldName, featuredProduct FROM tblProducts'); 
?> 

<form method="post" action="#" name="featuredProd"> 
    <table> 
    <tr><td><p>Product Name</p></td><td><p>Is a featured product?</p></td></tr> 

<?php 
    $products = dbFetchAll($sql); 
    foreach ($products as $product) { 
     //var_dump($product['fldName']); 
?> 
    <tr> 
     <td> 
      <p><?php echo $product['fldName']; ?></p> 
     </td> 
     <td> 
      <select name="featuredDropdown">; 
<?php 
     if ($product['featuredProduct'] == 'Y') { 
?> 
       <option value="<?php $product['fldId'] ?>"><?php echo $product['featuredProduct'] ?></option> 
       <option value="<?php $product['fldId'] ?>">N</option> 
<?php 
     } else { 
?> 
       <option value="<?php $product['fldId'] ?>"><?php echo $product['featuredProduct'] ?></option> 
       <option value="<?php $product['fldId'] ?>">Y</option> 
<?php 
     } 
?> 
      </select> 
     </td> 
    </tr> 

<?php 
    } 
?> 
+0

可以在運行之前打印查詢嗎?你似乎開放SQL注入 – user4035

+0

習慣於顯示錯誤,當事情不像你想要的那樣,你會以這種方式發生問題,然後你可以嘗試自己解決它。例如... if($ sql = dbQuery($ query)) { } else { echo'Query Failed'; } – user2801966

回答

0

這裏的介紹沒有多大意義。您可以在一個插槽中使用ProductName下拉菜單,在另一個插槽中使用「N」。

一旦用戶爲產品選擇了「N」,他們就不知道他們說了「不」,因爲他們再也看不到他們已選擇「否」的產品名稱。

提供一個<label>包含產品名稱和一個YES/NO下拉菜單讓他們可以從中進行選擇。

但是你的更新代碼不工作的原因是你叫的下拉featuredDropdown

<Select name="featuredDropdown"> 

,你正試圖處理場在更新代碼

foreach ($_POST['featuredProduct'] as $key => $val) { 

稱爲featuredProduct你下一個問題可能是你正在支持多於一個<Select name="featuredDropdown">,所以你需要像這樣把它變成一個數組:

<Select name="featuredDropdown[]"> 

然後,您將在$ _POST數組中有一個featuredDropdown數組。 $_POST['featuredDropdown'][]