2011-05-27 42 views
3

獲得一個多選框的所有值的最佳方法是什麼,然後我想將這些值保存在數據庫的一行中,然後從該行希望將每個值分開。做這樣的事情最好的方法是什麼?我的目標是保存這些值,然後將每個值分開。從選擇倍數獲取值並將它們存入數據庫

+0

難道他們提交的數據?另外,你想插入的表格看起來像什麼? – babonk 2011-05-27 06:56:07

+0

你說的是mysql嗎? – Ibu 2011-05-27 06:56:18

+0

是的mysql,嗯..只是一個表與varchar,就是它,或者它不是好方法? ID和值 – gambozygame 2011-05-27 06:58:32

回答

3

你可以這樣來做

<select name="foo[]" multiple="multiple"> 
    <option value="dog">Dog</option> 
    <option value="cat">Cat</option> 
    <option value="fish">Fish</option> 
</select> 

<?php 

$pets = $_POST['foo']; 

//sanitize and verify the input here. Escape properly and what not 

$query = mysql_query("INSERT INTO `pets` (`pet1`, `pet2`, `pet3`) VALUES ('".$pets[0]."', '".$pets[1]."', '".$pets[2]."')"); 
?> 

但要說實話,這是一個可怕的方式去建立一個數據庫。做任何有意義的事情都會非常煩人或困難。

爲什麼不能有以下數據庫設置:

用戶:

id | name 
---------- 
1 | Tim 

寵物:

id | user_id | type 
------------------- 
1 | 1  | Fish 
2 | 1  | Cat 
3 | 4  | Kakapo 

然後你將有一個更容易得多搜索和可操作的數據庫,這是一致的。

2

我相信你應該得到選擇在$ _POST變量數組值這麼說你的選擇有一個名稱=「產品」

選擇將在$ _ POST [「產品」]假設你的價值觀通過POST提交表單。

然後你可以使用implode函數來生成一個字符串。例如:

$myProducts = implode("|", $_POST["products"]); //This will give you a pipeline delimeted string like : computer|laptop|monitor 

$myProducts = mysql_real_escape_string($myProducts); //Just to santize before inserting in DB 

然後只需將該字符串插入數據庫。

檢索數據時,你可以通過使用爆炸功能相反的過程:

$myProducts = explode("|" , [The value retrieved from the database]); //This will give you an array which you can iterate and thus accessing the values individually. 

希望這有助於:)

0

是什麼讓一個多選框的所有值的最佳方式,

既然是PHP。給選擇元素的名稱在[]結束,那麼你就可以訪問它們作爲$_POST['foo'][]

,然後我想在一排保存在數據庫中的值,然後從該行我想獲得單獨的每個值。

不這樣做。有兩列的第二張桌子。另一個表(您計劃存儲數據的位置)的行的id(作爲外鍵)和值本身。

1

如果我明白你的問題好...

$dataFromMultipleBox = array('data1', 'data2', 'data3'); 
$data = implode("||", $dataFromMultipleBox); 

/* 
After that, 
write $data into database 

fetch from the database again 
*/ 

$pieces = explode("||", $rowFromDatabase); 

foreach($pieces as $value) { 
    echo $value; 
    echo '<br>'; 
} 
相關問題