代码之家  ›  专栏  ›  技术社区  ›  Nicholas Macharia

通过每次重复提交表单来增加帖子的价值

  •  0
  • Nicholas Macharia  · 技术社区  · 8 年前

    我有一张表格 sender 将值6过帐到另一个表单 receiver 。我试图实现的是存储 发件人 变成一个 变量 在中 接受者 然后增加 变量 每次 发件人 帖子。然后打印更新的 变量

    $val= $_POST['val'];
    $limit = 6 + $val;
    echo $limit;
    

    我得到的结果是12。但我想要的是

    1. 第一次发布结果后=12

    2. 第二次发布结果后=18

    时时刻刻。。。

    NB:$_POST['val'] = 6;
    
    4 回复  |  直到 8 年前
        1
  •  0
  •   pedrouan    8 年前
    session_start();
    
    $limit = 6;
    
    if(!isset($_SESSION['lastLimit'])) {
        $_SESSION['lastLimit'] = 0;
    }     
    if(!empty($_POST)) {    
        $_SESSION['lastLimit'] = $_SESSION['lastLimit'] + $limit;
        $postedValue = $_POST['val'] + $_SESSION['lastLimit'];
        echo $postedValue;
    }
    
        2
  •  0
  •   RiggsFolly    8 年前

    因为web是无状态的,即脚本不记得上次执行页面/表单时发生的任何事情 receiver 脚本不会记住上次运行时的任何内容。

    接收器.php

    <?php
    // must be run at top of script, before any output is sent to the new form
    session_start();   
    
    // did the form get posted and is the variable present
    // or replace POST with GET if you are using an anchor to run the script
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['val']) {
    
        if ( isset($_SESSION['limit'] ){
            // increment the limit
            $_SESSION['limit'] += (int)$_POST['val'];
        } else {
            // initialize the limit
            $_SESSION['limit'] = (int)$_POST['val'];
        }
    
        echo 'Current value of limit is = ' $_SESSION['limit'];
    
    } else {
        // something is not right
        // direct this user to some basic page like the homepage or a login
        header('Location: index.php');
    }            
    
        3
  •  0
  •   Danyal Sandeelo    8 年前

    您需要一个中间层来存储值。 可用选项:

    1) 全局静态值

    2) 会话

    3) 文件

    4) 数据库

    我建议使用全局值或会话,因为您要存储的数据没有那么大,并且可以轻松满足要求。

    我不会写语法来将其存储在会话中,因为许多人已经提到过它。我只是想澄清问题的情况和可能的解决方案。

        4
  •  0
  •   G San    8 年前

    您可以将$limti存储到全局变量中。

    global $val;
    $val += $_POST['val'];
    $limit = 6 + $val;
    echo $limit;