【问题标题】:how to do $id + 1 with every form submit?每次提交表单时如何做 $id + 1?
【发布时间】:2015-01-26 15:14:08
【问题描述】:

我想添加动态会话变量。所以我从 id=0 开始,但是在我提交表单后,id 必须设置为 1,下一个设置为 2 等等。下面是我尝试过的。我试图在 if 提交函数中做一个 $id++,但这不起作用。

        <?php
        $id = 0; 
        if (isset($_POST['submit'])) {

            $_SESSION['person'][$id] = array(   
                                                'id' =>  $id,
                                                'voornaam' => $_POST['firstname'], 
                                                'achternaam' => $_POST['lastname'], 
                                                'leeftijd' => $_POST['age'], 
                                                'rol' => $_POST['role'],
                                                'omschrijving' => $_POST['description'],
                                            );
            $id++;
            header('Location: mysite');
        }
    ?>

【问题讨论】:

  • 你也可以这样做:$_SESSION['person'][] = array()
  • $id 仅在脚本执行期间存在,并且无论如何您都会不断地将其重置为 0。在您执行$id++ 并且脚本退出后,该变量被销毁,并重新初始化为0

标签: php forms session form-submit


【解决方案1】:
$id = count($_SESSION['person']);

(假设您已在别处将$_SESSION['person'] 定义为数组。)

完整的 sn-p 如下所示:

if (!is_array($_SESSION['person']))
{
    $_SESSION['person'] = array();
}

if (isset($_POST['submit']))
{
    $id                      = count($_SESSION['person']);
    $_SESSION['person'][$id] = array(
        'id'           => $id,
        'voornaam'     => $_POST['firstname'],
        'achternaam'   => $_POST['lastname'],
        'leeftijd'     => $_POST['age'],
        'rol'          => $_POST['role'],
        'omschrijving' => $_POST['description'],
    );
    header('Location: mysite');
}

【讨论】:

    【解决方案2】:

    您实际上并没有在任何地方保留该值。所以每次都会重置为0。

    您每次都在创造价值:

    $id = 0;
    

    然后你增加它:

    $id++;
    

    但你不会把它放在任何地方。如果该值应该遵循用户的会话,请将其保留在会话中。比如:

    // get the id from session, or create a new one
    $id = 0;
    if (isset($_SESSION['id'])) {
        $id = $_SESSION['id'];
    }
    
    // use the id value in your code
    
    // increment the id and store it back in the session
    $_SESSION['id'] = $id + 1;
    

    【讨论】:

      【解决方案3】:

      没听懂你的意思,但这可能会有所帮助

      <?php
          $id = 0; 
          if (isset($_POST['submit'])) {
              $currID = $_SESSION['person']['id'];
              $_SESSION['person'] = array(   
                                          'id' =>  $currID++,
                                          'voornaam' => $_POST['firstname'], 
                                          'achternaam' => $_POST['lastname'], 
                                          'leeftijd' => $_POST['age'], 
                                          'rol' => $_POST['role'],
                                          'omschrijving' => $_POST['description'],
                                      );
              header('Location: mysite');
          }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2017-01-24
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 2021-08-27
        • 1970-01-01
        • 2016-11-05
        • 2022-01-16
        • 1970-01-01
        相关资源
        最近更新 更多