【问题标题】:Php Previous Next ButtonsPHP 上一个 下一个按钮
【发布时间】:2018-03-20 12:01:33
【问题描述】:

我正在尝试制作一个增加和减少变量的脚本。之后,这将被发送到 mysql 查询。我的问题是以下代码即使有效,也有问题。当我按下箭头(按钮)来增加值时,可以说,到达值 4。现在我想减少,问题是它再次以值 0 开始,因此它将显示 -1,而不是从它保持的值 4 开始。 这是因为我在会话中设置。 $_SESSION['addnum'] = $_SESSION['subnum'] ;

我尝试了很多方法,但即使我确定它可以快速修复,也无法找到正确的方法。 代码如下(即使不上传按钮图像也必须工作)

<?php
   session_start();
   // Page was not reloaded via a button press
   if (!isset($_POST['sub'])) {
       $_SESSION['subnum'] = 0; // Reset counter
   }
   
   if (!isset($_POST['add'])) {
       $_SESSION['addnum'] = $_SESSION['subnum'] ; 
   }      
?>

<form method='post'>

<input type="image" name='sub' src="includes/arrow-left.png" alt="Submit" value='-' width="32" height="32">
<input type="image" name='add' src="includes/arrow-right.png" alt="Submit" value='+' width="32" height="32">

<?php 
$var = $_SESSION['subnum']-- ;  
$var = $_SESSION['addnum']++ ; ?> 
</form>

<h3><em>Substract & Add number :  </em></h3>
<?php
echo "var = ", $var ;
?>

提前致谢

【问题讨论】:

  • // 页面没有通过按下按钮重新加载。如果它没有被刷新,那么你的 $_SESSION 就不会被更新。你如何处理这些按钮?它们如何与服务器交互?
  • 您需要将您提出的问题用给出的解决方案标记为通过接受解决方案。

标签: php session button next


【解决方案1】:

您没有处理表单提交。

<?php
   session_start();
   // Page was not reloaded via a button press
   if (!isset($_POST['sub'])) {
       $_SESSION['subnum'] = 0; // Reset counter
   } else {
      $_SESSION['subnum']--;
   }

   if (!isset($_POST['add'])) {
       $_SESSION['addnum'] = $_SESSION['subnum'] ; 
   } else {
      $_SESSION['addnum']++;
   }     
?>

【讨论】:

    【解决方案2】:

    这里有 2 个变量。一个是加的时候改变的,一个是减的时候改变的。同时,每次加载页面时都会重置减去时更改的值。添加确实是巧合。

    为什么不简化?

    <?php
       session_start();
       // Page was not reloaded via a button press
       if (!isset($_POST['sub']) && !isset($_POST["add"])) {
           $_SESSION['num'] = 0; // Single variable to do both
       }
    ?>
    
    <form method='post'>
    
    <input type="image" name='sub' src="includes/arrow-left.png" alt="Submit" value='-' width="32">
    <input type="image" name='add' src="includes/arrow-right.png" alt="Submit" value='+' width="32">
    
    <?php 
    if (isset($_POST["add"])) {   
        $_SESSION["num"] ++;
    } else if (isset($_POST["sub"])) {  
        $_SESSION['num']-- ;  
    }
    $var = $_SESSION['num']; ?> 
    </form>
    
    <h3><em>Substract & Add number :  </em></h3>
    <?php
    echo "var = ", $var ;
    ?>
    

    编辑:我假设图像输入以某种方式触发提交

    【讨论】:

    • 这正是我想要的。您的代码运行良好。只是忘记在 (isset($_POST["add"])) 和 (isset($_POST["sub"])) 处关闭圆括号。我更正了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2011-09-23
    • 2013-12-14
    相关资源
    最近更新 更多