我试图使用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()运行函数,要么不要将代码保存在函数中。你的东西还有一些其他问题,但我不想为你重写。