PHP运行整个代码,不等待输入

问题描述 投票:1回答:4

我遇到了PHP的基本问题。我想通过从表单请求输入许多数据:

do{
        if (isset($_POST['x'])&&($_POST['y'])){
            $x = $_POST['x'];
            $y = $_POST['y'];
            //núclero de processamento
            if ($x > 0 && $y > 0){
                echo "$x    $y  primeiro quadrante";
            } elseif ($x > 0 && $y < 0){
                echo "$x    $y  segundo quadrante";
            } elseif ($x < 0 && $y < 0){
                echo "$x    $y  terceiro quadrante";
            } elseif ($x < 0 && $y > 0){
                echo "$x    $y  quarto quadrante";
            } 
        }
    } while($x && $y != 0);

在这种情况下,我必须使用循环,但这是交易,我必须在表单上输入不定的坐标,每当我输入0时,它应该打破循环并处理数据打印出每个数据的结果。但它处理单个表单,重新加载页面并永远循环。我错过了什么?

php post
4个回答
1
投票

Web和HTTP无法正常工作,您无法连续输入数据,等待一段时间再输入更多数据。相反它就像htis:

  1. 当您在浏览器中单击“提交”时,浏览器将组装“包”或请求,并将其发送到表单指定的站点。
  2. 接收端的Web服务器软件接收该请求。请求的一部分是应该处理浏览器发送的表单数据的文件/代码的路径。
  3. 该代码现在由Web服务器运行/加载。如果是.php文件,Web服务器会向PHP解释器寻求帮助。
  4. Web服务器将您的请求附带的表单数据传递给PHP解释器。现在运行PHP代码,Web服务器收集输出(echo,var_dump等)。
  5. 然后,该输出将从Web服务器发送回您的浏览器。

正如上面所示,在这个过程中没有互动的时刻。对Web服务器的请求由一个时间点组成。否则,您稍后会对服务器上的同一段代码发出新的/单独的/不同的请求。但是代码不记得上次运行的任何事情(除非你专门添加代码来保存关于每个请求的信息,但那是另一个球赛......)。

你需要的互动性是其中之一

  • 将JavaScript添加到网页(在输入时检查数字)
  • 重写PHP代码,使其从控制台运行(即本地,不涉及Web服务器/浏览器)(一个循环,请求一对XY,然后输出象限)
  • 重写代码,使其支持接收无限数量的坐标对(可能是请求中的两个数组,一个用于X坐标,一个用于Y坐标)

1
投票

如果你执行一个PHP脚本是一次性的,所有代码将被执行,用户没有停止或交互。在你的情况下,你的循环永远不会停止,因为你想在执行后改变它(这是不可能的)。如果你想用shell在shell上创建一个交互式应用程序,这里是官方文档http://php.net/manual/en/features.commandline.interactive.php

希望能帮助到你。


0
投票

如果您想使用网站完成此操作,您需要一个表单,用户可以在其中输入值,然后用户必须在插入数据时提交此表单。现在您可以检查输入(例如,使用它进行工作或检查,如果插入了0)。现在,您可以显示结果数据和表单以输入下一个数据。如果您希望在用户提交下一个表单时使用您刚刚使用过的数据,则需要将这些值存储在服务器上(例如在数据库中)或网站内部(例如使用隐藏的html字段)。


0
投票

将if语句放在循环之外

if (isset($_POST['x']) && isset($_POST['y'])){
    $x = $_POST['x'];
    $y = $_POST['y'];
    do{ 
            
        //núclero de processamento
        if ($x > 0 && $y > 0){
            echo "$x    $y  primeiro quadrante";
        } elseif ($x > 0 && $y < 0){
            echo "$x    $y  segundo quadrante";
        } elseif ($x < 0 && $y < 0){
            echo "$x    $y  terceiro quadrante";
        } elseif ($x < 0 && $y > 0){
            echo "$x    $y  quarto quadrante";
        }  
    } while($x && $y != 0);
 }
© www.soinside.com 2019 - 2024. All rights reserved.