0
$serialize_me = array(
    array(
      'Name' => 'English',
      'Apprev' => 'en',
      'default' => true,
    ),
    array(
      'Name' => 'عربي',
      'Apprev' => 'ar',
      'default' => false,
    ),
); 
$serialized = serialize($serialize_me); 

使用这个数组,我可以序列化数据并将其插入数据库。但是如何使用表单构建这样的数组呢?我正在尝试构建一个允许我序列化数据并将其插入数据库的表单。

4

4 回答 4

3

在 HTML 端(例如调用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); 
?>
于 2012-05-04T20:17:47.897 回答
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>
于 2012-05-04T20:11:14.607 回答
0

当您发送表单时,您可以在数组中使用所有已发送的字段,$_POST或者$_GET取决于您使用的方法。

您可以序列化该数组并将其存储在数据库中,但我绝对不建议这样做,因为它使数据检索和操作变得不必要。

查看您的示例,我将有一个包含(至少...)3 个字段的数据库表NameApprev并且default您的示例将向该表添加两行。

于 2012-05-04T20:13:50.693 回答
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>
于 2012-05-04T21:15:40.607 回答