【问题标题】:PHP - populate a multidimensional associative array using values from input formPHP - 使用输入表单中的值填充多维关联数组
【发布时间】:2018-02-10 18:56:44
【问题描述】:

如上所述,我正在尝试从 html 输入表单中填充一个数组,但我有点困惑

A:我认为我已经正确地声明了数组,但是我应该在哪里声明它以便每次提交表单时都会创建一个新记录而不是声明一个新数组? B:如何正确引用子数组来填充else语句下的学生详细信息?

我的代码在下面

<body>
    <?php
        //Create variables from user input
        $name=$_POST['name'];
        $id=$_POST['id'];
        $address=$_POST['address'];
        $major=$_POST['major'];
        $email=$_POST['email'];
        $phone=$_POST['phone'];

        //Create associative array
        $students = array('name'=> array(''), 
                          'id' => array(''),
                          'address' => array(''),
                          'major' => array(''),
                          'email' => array(''),
                          'phone' => array('')
                          );

        //Error checking
        if(!$name || !$id || !$address || !$major || !$email || !$phone){
             echo '<p align="center">
                    At least one input entry is missing, <br/>
                    please go back and try again.
                </p>';
             echo '<p align="center"><a href="task1.html">Back to Selection</a></p>';
        }//end if
        else{
            //populate students array with values entered
            $students['name'] = $name;
            $students['id'] = $id;
            $students['address'] = $address;
            $students['major'] = $major;
            $students['email'] = $email;
            $students['phone'] = $phone;

谢谢

【问题讨论】:

    标签: php arrays multidimensional-array associative-array


    【解决方案1】:

    我怀疑您是否可以在每次以您现在尝试的方式发送表单时向$students 添加一个新数据集。 问题:如果你提交表单,会调用一个全新的页面,而之前页面的数据基本没有了。你需要以某种方式解决这个问题。

    这里有一些选项,从最愚蠢的开始。

    选项 1 使用 JS。在提交时,不会调用新页面,而是 JS 脚本收集数据并将其存储到数组中。缺点:需要JS,页面重载后数据会丢失。

    选项 2 使用像$SESSION$SERVER 这样的服务器端变量。这些是可以存储数据的数组。它们不存在于用户的设备上,而是存在于您的 Web 服务器上。这样,数据可以保存在多个调用的网页上。通常,只要您自己删除它或在用户关闭浏览器时删除它。每次提交表单时,您都可以为他们创建一个新记录。缺点:一旦变量被重置,数据就会消失(但是会发生这种情况)。

    选项 3(推荐) 使用数据库。我不知道您的阵列的用途,但通常您希望将这些信息保存得比浏览器关闭时更长。表单提交通过$_POST 将数据传递到一个新的 PHP 文件,该文件创建与服务器上数据库的连接并填写数据。稍后,当需要时,您可以从这个数据库中以数组的形式获取数据。

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2016-11-08
      • 1970-01-01
      • 2012-11-20
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多