【问题标题】:auto-increment php variable within POSTPOST中的自动增量php变量
【发布时间】:2014-09-23 19:19:24
【问题描述】:

我很难准确理解这段代码出了什么问题。如果有人可以帮助向我解释我做错了什么,我会很高兴。在底部,有一个带有“下一步”按钮的表格。每次有人单击此按钮时,我都想增加两个值。第一个 $nextLimit 很好 - 每次我按“下一步”时它都会增加 10,但第二个 $pageNumber 不起作用。我希望每次点击“下一步”时它都会增加 1,但它只是停留在 0,我不知道为什么。

<?php
if (isset($_POST['next'])) {
    $postedLimit = (isset($_POST['next']) ? (int) $_POST['next'] : 0);
    $nextLimit = $postedLimit + 10;

// Begin code that isn't working....
    session_start();
      if (isset($_SESSION['page'])) { /* If there is already a value set */
      $_SESSION['page']++; /* Increment by 1 */
      }
      else { /* If there is no value set, ie the user is clicking the button for the first time */
        $_SESSION['page'] = 1; /* Set to 1 */
      }
    $_SESSION['page'] =  $pageNumber;
// End code that isn't working....
    echo $pageNumber ; 
    echo "<br>" ; 
    echo $nextLimit ;


    $result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB <> 0.000 ORDER BY RegNSB DESC Limit $nextLimit,$LimitItems");
}
?>

然后,链接回此 $_POST['next'] 的 HTML

<table id="box-table-a" stlye="widgth:20%">
<form method="POST" action="">
<div class="container">
<div class="right">Page <?= $pageNumber ?> of <?= $totalPages ?> 
<input type="submit" name="previous" value="prev">  
<input type="submit" name="next" value="next" onclick="this.value=<?php echo $nextLimit; ?>">

</div>
</form>
</div>
</table>

我假设当我按下“下一步”时,代码会转到

if (isset($_POST['next']))

行,然后在那里执行代码。会话应该初始化,并且 $pageNumber 应该每次增加 1,但事实并非如此。我做错了什么?

【问题讨论】:

  • 完成了任何基本的调试,比如var_dump($_POST) 看看有什么到达服务器?例如如果 JS 不起作用,那么您将发送 next=next(int)next -> 0
  • 是的 - 无论我做什么,我都会将 var_dump($pageNumber)** 设为 **NULL**。我的 **var_dump($_POST)array(1) { ["next"]=> string(4) "next" }。不知道这意味着什么......。
  • 为什么要增加会话变量,然后立即用$pageNumber 覆盖它?你在哪里设置$pageNumber
  • 我试图获取 $_SESSION['page'] 中的任何值并将其分配给 $pageNumber,因此我可以稍后在代码中使用 $pageNumber 而不是 $_SESSION['page' ]。基本上 - 我试图“重命名”那个变量。
  • 如果我把它拿出来 - 我的 $_SESSION['page'] var_dump 是 int(1) (而不是 NULL)。但无论我按多少次“下一步”,它都会保持在该值。

标签: php


【解决方案1】:

替换此代码:

if (isset($_SESSION['page'])) { /* If there is already a value set */
    $_SESSION['page']++; /* Increment by 1 */
}
else { /* If there is no value set, ie the user is clicking the button for the first time */
    $_SESSION['page'] = 1; /* Set to 1 */
}
$_SESSION['page'] =  $pageNumber;

$_SESSION['page'] = (int) $nextLimit / 10;

【讨论】:

  • 我不敢相信我没有想到这一点.......它非常有意义并且有效:)谢谢你:)
猜你喜欢
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多