无法使用PHP使流在HTML表单中工作


Cannot Get Flow to Work in HTML Form using PHP

我试图使用HTML在一个页面中从用户那里获取一个数字,在PHP文档中执行基于该数字的函数,并在第三个页面上显示该函数的结果。代码按时间顺序显示如下。

index.php

 <h3>A bit about your company, please.</h3>
 <p>What was your net operating income for Q4 of 2014?</p>
 <form action="calc.php">
 <input type="text" name="noi">
 <input type="submit" value="Submit">
 </form>

calc.php

 $profit = $_POST['noi'];
 function makeProfit () {
 if ($profit >='0') {
    echo "Your company is making a profit.";
    }
 }
 header("Location: viewpage.php");

viewpage.php

 include'calc.php';
 makeProfit();

当我在HTML表单中键入一个数字并单击提交时,在viewpage.php上收到的错误消息是"This page has a redirect loop",完全跳过了calc.php。如有任何帮助,我们将不胜感激。我试着从小处着手保持简单,但我显然错过了一些可能很明显的东西,距离我上次编写PHP已经有一段时间了。

这里有一些问题。

首先,index.php中的表单缺少POST方法。

当省略该方法时,Forms默认为GET,并且您在calc.php中使用$_POST['noi'],因此这将以静默方式失败。

然后在calc.php 中使用>='0'比较和检查字符串而不是整数

当输入一个整数时,它将始终计算为FALSE,因此需要为>=0

关于你的标题:删除它们。你陷入了无尽的循环。

您得到了一个重定向循环,因为calc.php包含一个指向viewpage.php的头,然后您将calc.php包括在viewpage.php文件中。

我建议你做以下事情:

index.php将包含:

<h3>A bit about your company, please.</h3>
 <p>What was your net operating income for Q4 of 2014?</p>
 <form action="calc.php" method="post">
 <input type="text" name="noi">
 <input type="submit" value="Submit">
 </form>

calc.php和"echo"函数,同时检查是否确实使用了数字,而不是使用is_numeric()的字符串。

<?php 
if(is_numeric($_POST['noi'])){
// use int if you want to use integers
// $profit = (int)$_POST['noi'];
 $profit = $_POST['noi'];
}
else{
echo "Enter a number only.";
exit;
}
 function makeProfit () {
 if ($profit >= 0) {
    echo "Your company is making a profit.";
    }
else{
echo "No profit was made.";
}
 }
 include 'viewpage.php';

你需要包括"viewpage.php",而不是它的标题。否则你会得到以下错误:

致命错误:调用未定义的函数makeProfit()。。。

viewpage.php-旁注:您需要回显函数。

<?php 
echo makeProfit();

关于"calc.php"的旁注:

我建议你用下面的来代替,因为盈利意味着零以上。

CCD_ 5已更改为CCD_ 6。

因此,输入"0"将始终是一笔利润;我不认为这是你想要的,从商业角度来看,这是没有意义的。

以下也将接受以下内容:0.1、.1、1.25等

<?php 
 function makeProfit () {
    if(is_numeric($_POST['noi'])){
     $profit = $_POST['noi'];
    }
    else{
    echo "Enter a number only.";
    exit;
    }
 if ($profit > 0) {
    echo "Your company is making a profit.";
    }
    else{
    echo "No profit";
    }
 }
 include 'viewpage.php';

在当前设置中,不需要viewpage.php。您应该删除那个header()重定向。

编辑:所以现在你正在提交你的表单,它已经到达页面,但它并没有运行你的功能。要么只使用makeProfit()运行函数,要么不要将代码保存在函数中。你的东西还有一些其他问题,但我不想为你重写。