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つのフィールドを持つデータベーステーブルがありName、あなたの例ではそのテーブルに2つの行が追加されます。Apprevdefault

于 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 に答える