2012-11-28 42 views
0

我有一張表格,可以打印出我的表格中的所有用戶。每個用戶旁邊都有一個選擇框和一個更新按鈕。我遇到的問題是該腳本只能從最後一個選擇框中讀取。如何使選擇框變爲動態,以便腳本知道選擇框來自哪一行?對於選擇框如何使用php和mySQL製作動態選擇框

代碼:

<select name="level" > 
<option value="basic" SELECTED>Basic</option> 
<option value="premium">Premium</option> 
<option value="platinum">Platinum</option> 
</select> 

<button type="submit" name="update" value="<?php echo $row['id'] ?>">Update</button> 

在另一個腳本代碼當按下提交按鈕,生效:

if (isset($_POST['update'])) { 
//Get the ID of the account that will be updated 
$userID = $_POST['update']; 
//Get the level that the admin wishes to change to 
$level= $_POST['level']; 

//Connect to the DB 
mysql_connect("localhost", "xxxx", "xxxx")or die("Cannot connect to database"); 
mysql_select_db("xxxx")or die("Database cannot be selected or it doesnt exist"); 

//Updates the users access level 
mysql_query("UPDATE users SET level='$level' WHERE id='$userID' "); 
+3

都知道SQL禁令?你的代碼很容易受到sql禁令...壞人會殺死你的數據庫] –

+0

這些值來自選擇框......我只需要使用正確的值更新數據庫......目前它只是採取正確的來自上一個選擇框的值 – user1860175

回答

0

只看該HTML,你將要覆蓋選擇因爲它們都具有相同的名稱。

最簡單的解決辦法是將名字中的數組轉換您的選擇框:

<select name="level[<?php echo $row['id']; ?>]" > 

不,你可以訪問這些服務器端爲:

$_POST['level'][$userID] 

您還需要切換到PDO/mysqli並準備帶有綁定變量的語句以避免你的SQL注入問題。

0

你可以使用它的jQuery。試試這個,

$(document).ready(function(){ 
    var values = []; 
    $('select[name=level]').each(function() { 
    values[] = $(this).val(); 
    }); 

    $('button[name=update]').val(values); 

}); 

的原因,它只能讀取最後一行,是$row['id']只包含迭代結果集的最後一行。

0

使用此:

<input type="hidden" name="userid[]" value="#THEUSERID"/> 
<select name="level[]" > 
<option value="basic" SELECTED>Basic</option> 
<option value="premium">Premium</option> 
<option value="platinum">Platinum</option> 
</select> 

if (isset($_POST['update'])) { 
    foreach($_POST['userid'] as $k=>$userID){ 

//Get the level that the admin wishes to change to 
     $level= $_POST['level'][$k]; 

//Connect to the DB 
     mysql_connect("localhost", "xxxx", "xxxx")or die("Cannot connect to database"); 
     mysql_select_db("xxxx")or die("Database cannot be selected or it doesnt exist"); 

//Updates the users access level 
     mysql_query("UPDATE users SET level='$level' WHERE id='$userID' "); 
    } 
}