$serialize_me = array(
array(
'Name' => 'English',
'Apprev' => 'en',
'default' => true,
),
array(
'Name' => 'عربي',
'Apprev' => 'ar',
'default' => false,
),
);
$serialized = serialize($serialize_me);
使用这个数组,我能够序列化数据并将其插入数据库。但是如何使用表单构建这样的数组呢? 我正在尝试构建一个允许我序列化数据并将其插入数据库的表单。
答案 0 :(得分:3)
(称为whatever.php):
<form action="action.php" method="post">
<?php
$num_languages = 2; // Set this to the number of languages you want.
for($x = 0; $x < $num_languages; $x++) {
?>
<input type="text" name="name[<?php echo $x; ?>]" />
<input type="text" name="apprev[<?php echo $x; ?>]" />
<input type="checkbox" name="default[<?php echo $x; ?>]" />
<?php } ?>
</form>
然后在PHP端(在本例中是一个名为action.php的文件):
<?php
$array_serialize = array();
foreach ($_POST['name'] as $key => $value) {
$array_serialize[$key]['Name'] = $value;
$array_serialize[$key]['Apprev'] = $_POST['apprev'][$key];
$array_serialize[$key]['default'] = ($_POST['default'][$key] == 'on')?true:false;
}
$serialized = serialize($array_serialize);
?>
答案 1 :(得分:1)
将name属性设置为数组。像这样:
<?php
if($_POST)
{
var_dump($_POST);
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form method="post">
<input name="in[0][name]" value="English" />
<input name="in[0][apprev]" value="en" />
<input name="in[0][default]" value="true" />
<input name="in[1][name]" value="Other" />
<input name="in[1][apprev]" value="ar" />
<input name="in[1][default]" value="false" />
<input type="submit" />
</form>
</body>
</html>
答案 2 :(得分:0)
当您发送表单时,您可以使用数组$_POST
或$_GET
中的所有已发送字段,具体取决于您使用的方法。
您可以序列化该数组并将其存储在数据库中,但我绝对不会建议这样做,因为它会使数据检索和操作变得不必要。
查看您的示例我将拥有一个包含(至少...)3个字段的数据库表,Name
,Apprev
和default
,您的示例将添加两行表
答案 3 :(得分:0)
此代码在PHP代码中提供更多可移植性,您可以动态设置数据名称而无需更改PHP代码。
<!doctype html>
<html>
<head>
<title>My Form</title>
</head>
<body>
<?php
if (isset($_POST['submit'])) {
$name = $_POST['name'];
for ($i=0; $i<count($name); $i++) {
foreach ($name[$i] as $k => $v) {
$serialize[$i][$k] = (($v=="1") ? TRUE : (($v=="0") ? FALSE : $v));
}
}
$serialized = serialize($serialize);
}
?>
<form name="myform" method="POST">
<!-- English Language -->
<?php
$max = 2;
for ($i=0; $i<$max; $i++) {
?>
<input type="text" name="name[<?php echo $i; ?>][Name]" value="English">
<input type="text" name="name[<?php echo $i; ?>][Apprev]" value="en">
<input type="text" name="name[<?php echo $i; ?>][default]" value="0">
<?php
}
?>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>