2011-05-27 61 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>'; 
} 
相关问题