【问题标题】:Pushing data from input tag into array-php将输入标签中的数据推送到 array-php
【发布时间】:2017-11-03 12:51:20
【问题描述】:

我正在创建一个表单并停留在一个点这是我在 index.php 中的代码

<?php

session_start();
if ( isset( $_POST['submit'] ) ) {
    if ( ! isset( $_SESSION['name'] ) ) {
        echo 'Please Enter  your name to make an entry into database';
        header ( 'location:index.php' );
        //$_SESSION['name'] = [];
        //array_push($_SESSION['name'], $_POST['name']);
    } else {
        array_push( $_SESSION['name'], $_POST['name'] );
        header( 'location:database.php' );
    }
}
?>


<form method="post">
    <label>Name:</label>
    <input type="text" name="name">
    <input type="submit" name="submit">
</form>

现在在 database.php 中我有以下代码

 <?php
      session_start();
      if(isset($_SESSION['name'])) {
        $a = $_SESSION['name'];
        print_r($a);
      }
 ?>

如果输入数据字段未设置(为空),我不想创建数组键,并通过消息将用户引导到相同的索引页面

【问题讨论】:

  • 您需要以某种方式保存它。您可以为此使用会话、cookie 或数据库。
  • 您在每次提交时都创建了新数组,那么您期望什么?
  • 考虑“数据库”而不是“数组”
  • @ArtOsi 我该如何克服这个问题
  • 如上所述——使用数据库或会话在请求之间持久化数据

标签: php arrays forms input


【解决方案1】:

关于您的代码,它将是:

session_start();
if(isset($_POST['submit'])){
    if (isset($_POST['name']) && $_POST['name'] != '') {
        if(!isset($_SESSION['name'])) {
            $_SESSION['name'] = [];
            array_push($_SESSION['name'], $_POST['name']);
        } else {
            array_push($_SESSION['name'], $_POST['name']);
        }
        header('location:session2.php'); 
    } else {
        $errors = 'Name cannot be empty';
    }

}
?>


<?php if (isset($errors)) : ?>
<span style="color:red"><?= $errors; ?></span>
<?php endif; ?>
<form method="post">
    <label>Name:</label>
    <input type="text" name="name">
    <input type="submit" name="submit">
</form>

还有database.php文件:

<?php
session_start();
if(isset($_SESSION['name'])) {
    $a = $_SESSION['name'];
    print_r($a);
}
?>

【讨论】:

  • 在上面的代码中,如果输入字段为空,那么也会产生一个空数组键。如果输入字段为空,我想直接到与用户输入任何名称的消息相同的页面(我已经更新了我的问题,现在检查它)
  • 所以基本上你只想检查输入是否为空??
  • 是的。如果输入为空,则不应创建数组键并使用消息直接进入同一登录页面以输入正确的详细信息
  • 所以首先检查是否设置了$_POST['name'],如果没有添加一些错误消息,如果设置了错误则显示它。检查更新的代码,类似这样。
  • 感谢您的帮助
【解决方案2】:

正如人们在 cmets 中提到的那样,您每次都有一个新数组。没有任何内容被覆盖,因为每次提交时,它都是一个新脚本。这就是关键:PHP 是一种脚本语言;它不是持久的。每次调用 PHP 脚本时,它都会运行并死掉。不保存数据;它不是有状态的。每次您点击提交时,都会对您的服务器进行全新调用,并且该脚本不知道该脚本之前的运行情况。因此,变量每次都是全新的。

这就是为什么每个人都提到使用某种持久形式的数据,无论是会话、cookie 还是数据库。这些方法存在于 PHP 之外,并允许您在脚本之间移动数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2012-07-22
    • 1970-01-01
    • 2017-10-07
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多