我遇到了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时,它应该打破循环并处理数据打印出每个数据的结果。但它处理单个表单,重新加载页面并永远循环。我错过了什么?
Web和HTTP无法正常工作,您无法连续输入数据,等待一段时间再输入更多数据。相反它就像htis:
正如上面所示,在这个过程中没有互动的时刻。对Web服务器的请求由一个时间点组成。否则,您稍后会对服务器上的同一段代码发出新的/单独的/不同的请求。但是代码不记得上次运行的任何事情(除非你专门添加代码来保存关于每个请求的信息,但那是另一个球赛......)。
你需要的互动性是其中之一
如果你执行一个PHP脚本是一次性的,所有代码将被执行,用户没有停止或交互。在你的情况下,你的循环永远不会停止,因为你想在执行后改变它(这是不可能的)。如果你想用shell在shell上创建一个交互式应用程序,这里是官方文档http://php.net/manual/en/features.commandline.interactive.php。
希望能帮助到你。
如果您想使用网站完成此操作,您需要一个表单,用户可以在其中输入值,然后用户必须在插入数据时提交此表单。现在您可以检查输入(例如,使用它进行工作或检查,如果插入了0)。现在,您可以显示结果数据和表单以输入下一个数据。如果您希望在用户提交下一个表单时使用您刚刚使用过的数据,则需要将这些值存储在服务器上(例如在数据库中)或网站内部(例如使用隐藏的html字段)。
将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);
}