html 为什么我的PHP函数只在第一次点击时递减按钮?

roqulrg3  于 2023-05-27  发布在  PHP
关注(0)|答案(3)|浏览(149)

当我点击我的按钮时,它会从$decr中删除1,但如果我再次点击,它不会删除任何东西:

<?php

function myFunction() {
    global $decr;
    $decr--;
}

if (isset($_GET['name']) && $_GET['name'] === 'true') {
    $decr--;
    $_GET['name'] = 'false';
}

?>

<a href='test.php?name=true' class="button-56"><?php echo $decr; ?></a>

我做了一个按钮,我让我的php函数递减1,但当我点击第二次,它不删除任何东西。

9jyewag0

9jyewag01#

正如每个人在评论中提到的,默认情况下,网页不会在请求之间持久化数据。为了持久化数据,我们使用会话,cookie,数据库等技术。来存储数据。
我们还可以在表单中使用 * 隐藏字段 * 将数据传递给服务器。下面的代码演示了它。

<?php
// test.php

// at first check for a POST request
if ($_POST) {
    $decr = $_POST['decr'];// read the current value from POST data
    $decr--; // decrement it
} else {
    $decr = 10; // if not a post request, initialize $decr with 10.
}
?>
<form action="test.php" method="post">
    <!-- input the $decr value in a hidden field -->
    <input type="hidden" name="decr" value="<?php echo $decr;?>">
    <input type="button" value="<?php echo $decr;?>" onclick="submit()">
</form>
brc7rcf0

brc7rcf02#

PHP本身并不在请求之间持久化数据。global只对一个响应起作用,然后在下一个请求中再次使用初始值重新创建变量。您所需要的只是使用一些存储(cookie、会话、数据库等)

iih3973s

iih3973s3#

试试这个,这是一个很好的开始,你正在努力做什么。如果希望在页加载之间保持值的活动性,请使用会话。

<?php
// this has to be the first thing that php sees on the page
session_start();

// make sure you create the variable the first time or you will get a php error
if (!isset($_SESSION['decr'])) { 
    $_SESSION['decr'] = '0';
}

if (isset($_GET['name']) && $_GET['name'] === 'true') {
    $_SESSION['decr']--;
    $_GET['name'] = 'false';
}
?>
<a href='test.php?name=true' class="button-56">Num: <?php echo $_SESSION['decr']; ?></a>

相关问题