我有四个名为['institution','Department','Country','City']
的输入字段。每个输入字段重复10次。
我想:
<input type='text' value='' name='institution[]' class='form-control'>
<input type='text' value='' name='department[]' class='form-control'>
<input type='text' value='' name='city[]' class='form-control'>
<select class='form-control' name='country[]' id='setwidth'>
<option value='Dubai'></option>
<option value='Dubai'></option>
<option value='Dubai'></option>
</select>
答案 0 :(得分:0)
接下来是一个如何操作的小例子,首先是在几个字段中使用相同名称捕获数据的HTML表单,其次是将数据作为数组获取的PHP:
<强>的test.html 强>
<html>
<head>
</head>
<body>
<form method="post" action="test.php">
<input type='text' value='aaa' name='institution[]'/>
<br/>
<input type='text' name='institution[]'/>
<br/>
<input type='text' value='555' name='institution[]'/>
<br/>
<input type='submit' value='Submit'/>
</form>
</body>
</html>
<强> test.php的强>
<?php
$my_array = $_POST[ "institution" ];
for ( $i = 0; $i < count( $my_array ); $i++ )
if ( $my_array[ $i ] == "" )
echo "Index $i is unset.<br/>";
else echo "Index $i = " . $my_array[ $i ] . "<br/>";
?>
答案 1 :(得分:0)
对于HTML部分,已经提到过,将数组附加到要作为集合获取的字段的名称,我假设字段为departments
:
<input type='text' name='departments[]' />
但对于服务器端,我的意思是PHP和MySQL: 你有两种方法可以做到:
1-您应该看看是否要将数据聚合到一个记录中,例如,您有10个Department
个实例,并且您希望将所有这些实例放在一个单行/字段中。在这种方法中,您只需执行以下操作:
SQL查询:
insert into table_name (department) values(:department)";
PHP: $ departments = serialize(get_input($ _ POST ['department']));
当然,您已经验证了您的表格,这主要不是我们的主题。此外,get_input()
是您应编写的函数,用于过滤$_REQUEST
条目。在这篇文章的最后有一个函数的样本。
2-每个多值字段都有一个单独的表。例如,您有一个名为user_to_departments
的表,其中包含以下键:
id | user_id | department
然后在您的查询中,您必须为查询的每个条目插入一条记录,例如:
$departments = get_input($_POST['departments']);
foreach($departments as $dep)
{
db_query("insert into user_to_departments ($user_id, $dep)");
}
上面的行直接将值放入查询中,这不是一个好习惯,你应该总是使用在MySQLi和PDO中大力支持的预准备语句。
更多关于准备好的声明: http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
此外,为了从方案更标准的数据库中选择查询,您应该依赖JOIN语句。有关MySQL JOIN语句的更多信息: http://www.tutorialspoint.com/mysql/mysql-using-joins.htm
以下是get_input()
的一个非常简单的示例函数:
function get_input($value)
{
if(is_array($value))
{
foreach($value as $key => $val)
{
$value[$key] = htmlentities(strip_tags($val)); // it allows only html entities and tag-free values
}
}
else
{
$value = htmlentities(strip_tags($value));
}
return $value;
}