单击提交按钮时如何保留数组中的值

时间:2014-07-13 12:29:54

标签: php html

php新手在这里。单击“提交”按钮时如何保留数组的值?那么这个程序是如何运作的。用户将输入名称和座位号(1-25之间),当用户单击“提交”按钮时,该名称将添加到阵列上并显示在表格中。它适用于第一个输入,但当我输入另一个名称和座位号时,第一个输入被删除。请帮忙。

     //this is where the user will input...
     Student Name: <input type="text" name="name" id="name"><br>
     Seat Number: &nbsp;<input type="text" name="seat" id="seat"><br>
    <input type="submit" name="assign" value="Assign"> <?php echo $warning; ?>

    //and this is my php code.
    <?php
        $students = array_fill(0, 25, NULL);//this is to make an empty array with the size of 25.
        if(isset($_POST['assign'])){
            $student = $_POST['name'];
            $seat = $_POST['seat'];

            if($seat > 25 || $seat < 1){
                $warning = 'Seat number does not exist.';
            }
            else{
                $warning = '';
                $students[$seat-1] = $student;
            }
        }
    ?>

    //This code here is just a part of the HTML code for the table.  this is where the name will display.
    <td id="box"><?php echo $students[0]; ?></td>
    <td id="box"><?php echo $students[1]; ?></td>
    <td id="box"><?php echo $students[2]; ?></td>
    <td id="box"><?php echo $students[3]; ?></td>
    <td id="box"><?php echo $students[4]; ?></td>

2 个答案:

答案 0 :(得分:0)

因为每次单击“提交”按钮时,$ students数组都会一次又一次地创建,因此您将丢失$ students所持有的先前值。因此,在第一次提交表单时,只创建一次数组。登记/> 编辑:替代方案:使用php SESSION(只是众多替代方案中的一个)
在PHP会话中存储用户信息之前,必须先启动会话。

<?php session_start(); ?>

<html>
<body>

</body> 
</html>

然后你可以通过在php.So中操作$ _SESSION数组来存储或检索会话中的任何内容,而不是将座位号存储在普通的php变量中,你可以使用$ _SESSION.Just保持一切相同(即方法= “post”等等)而不是$学生使用$ _SESSION [“学生],其中学生将成为$ _SESSION中的数组(并且它将保留在那里直到你的会话到期,即直到用户注销或关闭你的页面案例)

有关更多示例,请参阅此处:http://www.w3schools.com/php/php_sessions.asp

答案 1 :(得分:0)

使用这样的会话:

<?php
session_start(); // To start the session, must be called before trying to manipulate any session variables. Preferably the first php-line on each page who will use sessions.

$_SESSION['students'] = array_fill(0, 25, NULL); // Sets an array of 25 indexes to session variable 'students'
?>

每次用户点击提交时都不应调用上面的代码块 - 只应调用一次。

<?php

session_start();

if(isset($_POST['assign'])){
   $student = $_POST['name'];
   $seat = $_POST['seat'];

        if($seat > 25 || $seat < 1){
            $warning = 'Seat number does not exist.';
        }
        else{
            $warning = '';
            $_SESSION['students'][$seat-1] = $student; // Sets index [$seat-1] of array to $student
        }
    }
?>

会话变量临时存储在服务器上,只要您记得在每个页面上启动会话,就可以访问整个网站(如代码所示)。

正如Anmol之前所说,请在此处详细了解会话:http://www.w3schools.com/php/php_sessions.asp

修改

<?php
session_start(); // To start the session, must be called before trying to manipulate any session variables. Preferably the first php-line on each page who will use sessions.

if(!isset($_SESSION['students'])){
    $_SESSION['students'] = array_fill(0, 25, NULL); // Sets an array of 25 indexes to session variable 'students'
}
?>