从选择倍数获取值并将它们存入数据库
问题描述:
获得一个多选框的所有值的最佳方法是什么,然后我想将这些值保存在数据库的一行中,然后从该行希望将每个值分开。做这样的事情最好的方法是什么?我的目标是保存这些值,然后将每个值分开。从选择倍数获取值并将它们存入数据库
答
你可以这样来做
<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
然后你将有一个更容易得多搜索和可操作的数据库,这是一致的。
答
我相信你应该得到选择在$ _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.
希望这有助于:)
答
是什么让一个多选框的所有值的最佳方式,
既然是PHP。给选择元素的名称在[]
结束,那么你就可以访问它们作为$_POST['foo'][]
,然后我想在一排保存在数据库中的值,然后从该行我想获得单独的每个值。
不这样做。有两列的第二张桌子。另一个表(您计划存储数据的位置)的行的id(作为外键)和值本身。
答
如果我明白你的问题好...
$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>';
}
难道他们提交的数据?另外,你想插入的表格看起来像什么? – babonk 2011-05-27 06:56:07
你说的是mysql吗? – Ibu 2011-05-27 06:56:18
是的mysql,嗯..只是一个表与varchar,就是它,或者它不是好方法? ID和值 – gambozygame 2011-05-27 06:58:32