【问题标题】:Add +7 to variable $i each time button is pressed, no page reload每次按下按钮时向变量 $i 添加 +7,不重新加载页面
【发布时间】:2023-03-19 14:54:01
【问题描述】:

我的问题:我不知道每次按下按钮时如何为变量 $i 添加 +7。我尝试使用 isset($_POST) 但你只能执行代码块以将 +7 添加到 $i 一旦我希望它是无限的。

下面的函数使用变量 $i 来确定你想要前进多少天,所以在我的例子中,当 $i = 7 时它会向前跳 7 天。这个功能很好用。

Timeschedule.php

// UPDATED: Used other function instead to show what desired results i want to achieve

public function getDate($i){
        date_default_timezone_set('Europe/Amsterdam');
        $datetime = new DateTime('today');
        $datetime->modify('+' . $i . 'day');
        $output = $datetime->format('d-m-Y');

        return $output;
}

Orderstep_1.php

// This file includes timeschedule.php
include timeschedule.php

<input name="testbutton" class="testbutton" id="testbutton" type="submit" value="=>" />

现在我将 isset 与 post 一起使用,但它只能在页面上执行一次代码,我需要 i 不受限制。

if(isset($_POST['testbutton'])){
   $i = $i + 7;
}

希望你们能把我送到正确的方向。

更新:

这段代码输出数据

$testObject = new TimeSchedule();
$date1 = $testObject->getDate(0); echo $date1;

输出结果

02-02-2015

点击按钮后我想要实现的输出

09-02-2015
16-02-2015 
23-02-2015
etc...

【问题讨论】:

    标签: php jquery ajax button


    【解决方案1】:

    您正在尝试使用 PHP 实现客户端逻辑。 PHP 在服务器端运行一次,然后将输出(页面)发送到客户端。之后,php中的变量就不存在了。

    对于客户端逻辑,您可能需要 javascript。与 PHP 不同,Javascript 在客户端运行。

    您需要在 javascript 中重写 getDay,为 i 使用上下文或一些全局变量,并在每次单击按钮时将 i 传递给 getDay

    另一种选择是将i 存储在javascript 中,但将getDay 保留为PHP 代码,然后每当i 更改时,向您要创建的调用getDay 的url 发送一个ajax 请求,例如getDay.php?i=0。 getDay 返回日期,然后您在 javascript 中更新您的日期。

    您的逻辑很简单,最好将其保留在客户端,但对于复杂的算法,您可能希望在服务器端运行您的方法,因为客户端代码是可见的。

    【讨论】:

    • 非常感谢您明确了我现在应该如何继续,但是我对 ajax 请求还不是很熟悉。你能给我一个例子,我可以如何保留我的 php 代码,但将 $i 存储在 javascript 中?我知道如何使用 javascript,但很想学习一些新东西 :)
    • 嗯,最原始的方法是全局存储它(在window 下)。我不建议直接存储变量。相反,我有一个类(或字典),将我所有的客户端变量/逻辑存储在窗口下。例如,window.myApp(或简称 myApp,因为全局变量被定义在window 下)将存储您的所有变量,包括您的i(我们将其命名为elapsedDay)。首先将elapsedDay 初始化为零。然后,每当按下按钮时,您都会更新 elapsedDay 并发送一个 ajax 请求。
    • 您可以直接在 javascript 中发送 ajax 请求,但使用像 jQuery 这样的已知框架会大大简化该过程。看看这个:api.jquery.com/jquery.ajax
    • 在一个完全不相关的主题上,您可以使用有助于在客户端实现 MVC 逻辑的框架。在这些中,您将把elapsedDay 存储在您的控制器中。以 angular.js 为例,它虽然很重,但却是 MVC 的一个很好的例子。正如我之前所说,这完全不相关,但可能会大大简化您的开发:)
    • 非常感谢您提供的所有其他信息,我一定会看看 angular.js 和 ajax 以及您提供给我的解决方案 :)
    猜你喜欢
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2010-12-26
    • 2023-03-03
    相关资源
    最近更新 更多