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

时间:2019-03-04 12:16:34

标签: php post

我在使用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时,它都应该中断循环并处理数据,以打印出每个数据的结果。但是它只处理一个表单,重新加载页面并永远循环。我想念什么?

4 个答案:

答案 0 :(得分:1)

如果您执行一次php脚本是一次性的,那么所有代码​​都将被执行,用户将不会停止或互动。在您的情况下,循环永远不会停止,因为您要在执行后立即更改该值(这是不可能的)。如果您想使用php在shell上创建一个交互式应用程序,则这里是官方文档http://php.net/manual/en/features.commandline.interactive.php

希望有帮助。

答案 1 :(得分: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坐标)

答案 2 :(得分:0)

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

答案 3 :(得分: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);
 }