2015-02-23 42 views
1

我正嘗試使用HTML從一個頁面中的用戶獲取一個數字,在PHP文檔中執行基於該數字的函數並顯示該函數的結果第三頁。代碼按照時間順序顯示如下。無法使用PHP在HTML表單中工作流程

的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上,完全跳過calc.php。任何幫助將真誠感謝。我試着從小開始保持簡單,但我明顯錯過了一些可能非常明顯的事情,從我上次編碼PHP以來已經有一段時間了。

+3

您包括calc.php其重定向到viewpage.php包括calc.php其重定向到viewpage.php其包括calc.php,它重定向到viewpage.php,其中包括calc.php,它重定向到viewpage.php,其中包括calc.php,它將重定向到viewpage.php,其中包括calc.php,它將重定向到viewpage.php,其中包括calc.php,它將重定向到viewpage.php包含calc.php,它重定向到viewpage.php,其中包括calc.php,它將重定向到viewpage.php,其中包括calc.php,它將重定向到viewpage.php。得到它? – 2015-02-23 21:09:11

+1

* Oh by theyyyyyy ... *'

<=默認爲GET。 – 2015-02-23 21:16:23

+0

如果你想遍歷兩頁以上的頁面,如果你想使用純PHP,你將需要會話。另外,你說:*「根據這個數字執行一個功能」* - 我不完全確定你的意思,可能相當寬泛。比方說,如果用戶輸入數字10,應該有一個函數來執行它基於該號碼?你將需要更精確一點。 – 2015-02-23 23:26:54

回答

2

這裏有幾個問題。

首先,您在index.php中的表單缺少POST方法。

當方法被省略時,表單默認爲GET,並且您在calc.php中使用$_POST['noi'],因此這將失敗。

然後你比較覈對的字符串,而不是在calc.php使用>='0'整數

當輸入一個整數,它總是會評估爲FALSE,因此需要進行>=0

關於你的標題:刪除它們。你陷入無限循環。

你會得到一個重定向循環,因爲calc.php包含一個頭去viewpage.php,那麼你在calc.php中包含了calc.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和 「回聲」 的功能,如果確實使用了許多,而不是使用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」,而不是它的標題。否則,你會收到以下錯誤:

Fatal error: Call to undefined function makeProfit()...

viewpage.php - 旁註:你需要呼應的作用。

<?php 
echo makeProfit(); 

旁註約 「calc.php」:

我建議你改用以下,因爲獲得利潤是指大於零。

>= 0已更改爲> 0

因此輸入「0」將永遠是利潤;我不認爲這是你想要的,在事物的商業方面,沒有意義。

以下也將接受以下:0.1,0.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'; 
+0

謝謝。非常感激。 – 2015-02-28 20:38:22

+0

@MatthieuMcClintock不客氣Matthieu。如果您覺得回答/解決了這個問題,您可以接受並標記爲已解決。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然後回到答案,並在這裏做同樣的事情。 *乾杯* – 2015-02-28 20:41:32

+0

@MatthieuMcClintock那麼,這是否實際上解決它,或者這個問題仍然被認爲是公開的? – 2015-03-02 02:43:15

0

在當前設置中,不需要viewpage.php。你應該刪除該頭()重定向。

編輯: 所以現在你提交你的表單,它到達了頁面,但它沒有運行你的函數。要麼使用makeProfit()運行該函數,要麼不要將該代碼放在函數中。這裏還有其他一些問題,但我不想爲你重寫。

+0

好的。我刪除標題重定向並添加makeProfit();到calc.php,現在它只是徘徊在空白頁面上。 – 2015-02-24 01:46:34

+0

@MatthieuMcClintock看到我的編輯! – jdu 2015-02-24 14:00:26