获取一个多选框的所有值的最佳方法是什么,然后我想将这些值保存在数据库的一行中,然后从该行我希望将每个值分开。做这种事的最好方法是什么?我的目标是保存值,然后将每个值分开。
答案 0 :(得分:4)
你可以这样做
<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
然后你会有一个更容易搜索和可操作的数据库,这是一致的。
答案 1 :(得分:2)
我相信你应该在$ _POST变量中收到选择作为数组的值,所以说你的select有一个名字=“products”
假设您通过POST提交表单,所选的值将在$ _POST [“products”]中。
然后你可以使用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
然后只需将该字符串插入数据库。
检索数据时,您可以使用explode函数反转该过程:
$myProducts = explode("|" , [The value retrieved from the database]); //This will give you an array which you can iterate and thus accessing the values individually.
希望这会有所帮助:)
答案 2 :(得分: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>';
}
答案 3 :(得分:0)
获取一个多重选择框的所有值的最佳方法是什么,
因为它是PHP。为select元素指定一个以[]
结尾的名称,然后您可以将其作为$_POST['foo'][]
然后我想将这些值保存在数据库的一行中,然后从该行我希望将每个值分开。
不要那样做。有第二个表有两列。另一个表(您计划存储数据的位置)中的行的id(作为外键)和值本身。