2013-04-05 76 views
0

所以這是一個基本的表單提交和處理,骨子裏。有三個腳本,表單腳本,處理器腳本和視圖頁面。下面是摘錄從每個:使用PHP處理表單數據

形式:

 <form action="processor.php" method="post"> 
     <h4>Question # 1</h4> 
     <p>What grade are you in?</p> 
     <label class="checkbox"><input type="checkbox" name="grade" value="1"> Freshmen</label> 
     <label class="checkbox"><input type="checkbox" name="grade" value="2"> Sophomore</label> 
     <label class="checkbox"><input type="checkbox" name="grade" value="3"> Junior</label> 
     <label class="checkbox"><input type="checkbox" name="grade" value="4"> Senior</label> 
     <div class="button"> 
     <button class="btn btn-primary" input type="submit" name="submit" href="processor.php">Submit</button> 
     </div> 
     </form> 

的處理器腳本:

<?php 

header("Location: viewpage.html"); 

$grade = $_POST['grade']; 

function Grades() { 
if ($grade =="1") { 
    echo "You're a freshmen"; 
} elseif ($grade == "2") { 
    echo "You're a sophomore"; 
} elseif ($grade == "3") { 
    echo "You're a junior."; 
} elseif ($grade == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

} 

?> 

查看頁面:

 <h4>Question # 1</h4> 
     <p><?php Grades(); 
     ?> 
     </p> 

本質上講,我試圖讓用戶填寫表格,處理它並吐出輸入。例如,他們表示他們是新生,他們點擊提交併被帶到查看頁面,在那裏它吐出「你是一名新生。」這是一段時間,因爲我編碼,這是一個非常簡單的問題,我似乎無法找到解決方案。任何幫助將不勝感激。謝謝。

因爲,當我到達視圖頁面時,它什麼也沒有顯示。

+1

問題是...?除了你的處理器基本上通過重定向到另一個頁面來中止處理?還有一些可變的範圍問題...還有一些不清楚的「這些腳本如何與對方相關」的問題...... – 2013-04-05 15:02:09

+0

我在原帖之後做了一個編輯。我創建了處理器頁面,以便可以在後端進行處理,並且可以將PHP和HTML分開。有沒有更高效的方法?我遇到的問題是,當它到達視圖頁面腳本時,函數什麼都沒有吐出。 – buttonitup 2013-04-05 15:07:09

+0

你能否澄清一下這些腳本如何相互關聯?你的意思是我如何將每一個連接到另一個? – buttonitup 2013-04-05 15:08:20

回答

1

它應該是這個樣子的是:

<?php 

function Grades() { 
$grade = $_POST['grade']; 
if ($grade =="1") { 
    echo "You're a freshmen"; 
} elseif ($grade == "2") { 
    echo "You're a sophomore"; 
} elseif ($grade == "3") { 
    echo "You're a junior."; 
} elseif ($grade == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

} 

include('viewpage.php'); 

?> 

請注意,您應該重命名viewpage.html到viewpage.php

+0

謝謝你,做到了。只是有點生疏。謝謝您的幫助。 – buttonitup 2013-04-05 15:23:49

0

你可以使用一些函數來重定向不同的輸入,如新鮮...爲此,您必須創建單獨的頁面並使用重定向(「Pagename」); 我認爲這可能是您的問題的解決方案

1

它看起來像我收到帖子,然後立即重定向到另一個頁面,而不發送任何剛剛收到的變量。因此,您需要將grade字段作爲GET參數發送。你需要在視圖文件中定義你的方法/變量。

處理器:

<?php 

    // If you're going to redirect, you MUST send along the grade 
    header("Location: viewpage.html?grade=" urlencode($_POST['grade')); 

?> 

查看:

<?php 

    // In your view you only have access to variables in your immediate request. 
    $grade = $_GET['grade']; 

    function Grades ($grade) { 
    if ($grade =="1") { 
     echo "You're a freshmen"; 
    } elseif ($grade == "2") { 
     echo "You're a sophomore"; 
    } elseif ($grade == "3") { 
     echo "You're a junior."; 
    } elseif ($grade == "4") { 
     echo "You're a senior."; 
    } else { 
     echo "Something is wrong."; 
    } 
    } 
?> 

<h4>Question # 1</h4> 
<p><?php Grades($grade); ?></p> 

,除非你真的需要的處理器將數據與保存:

<form action="viewpage.html" method="get"> 
    <h4>Question # 1</h4> 
    <p>What grade are you in?</p> 
    <label class="checkbox"><input type="checkbox" name="grade" value="1"> Freshmen</label> 
    <label class="checkbox"><input type="checkbox" name="grade" value="2"> Sophomore</label> 
    <label class="checkbox"><input type="checkbox" name="grade" value="3"> Junior</label> 
    <label class="checkbox"><input type="checkbox" name="grade" value="4"> Senior</label> 
    <div class="button"> 
    <button class="btn btn-primary" type="submit" name="submit">Submit</button> 
    </div> 
    </form> 
+0

我試過這種方式,但在視圖頁面上仍然沒有輸出。你提到假設我包含了處理腳本中的視圖。我認爲這是問題所在?你能否詳細說明一下? – buttonitup 2013-04-05 15:13:47

+0

@buttonitup哇,我甚至沒有看到重定向。那是你的問題! – 2013-04-05 15:17:48

0

您需要將POST變量傳遞爲參數給你的功能。

2

第一個問題是您在處理器腳本做的第一件事是發出標題重定向。之後腳本可能會生成輸出,但客戶端永遠不會看到它。第二個是你的程序結構全部關閉。理想情況下,您希望使用會話來存儲處理器和查看腳本之間的'等級'值,或者將它們合併爲一個。

<?php 
$grade = $_POST['grade']; 

function Grades ($input) { 
if ($input =="1") { 
    echo "You're a freshmen"; 
} elseif ($input == "2") { 
    echo "You're a sophomore"; 
} elseif ($input == "3") { 
    echo "You're a junior."; 
} elseif ($input == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

?><html> 
<head></head> 
<body> 
<h4>Question # 1</h4> 
<p><?php Grades($grade);?></p> 
</body> 
</html> 

,或者:

<?php 
session_start(); 
$_SESSION['grade'] = $_POST['grade']; 
header('Location: viewpage.php'); 

<?php 
session_start(); 
$grade = $_SESSION['grade']; 

function Grades ($input) { 
if ($input =="1") { 
    echo "You're a freshmen"; 
} elseif ($input == "2") { 
    echo "You're a sophomore"; 
} elseif ($input == "3") { 
    echo "You're a junior."; 
} elseif ($input == "4") { 
    echo "You're a senior."; 
} else { 
    echo "Something is wrong."; 
} 

?><html> 
<head></head> 
<body> 
<h4>Question # 1</h4> 
<p><?php Grades($grade);?></p> 
</body> 
</html> 

你還需要記住的是,除非你include()一個腳本到另一個每個腳本是完全無視其他人。他們不知道定義了什麼變量或函數,唯一的例外是會話變量。

+0

OR:代碼去哪裏? – buttonitup 2013-04-05 15:19:13

+0

你說過這個代碼,或者那個代碼。 – buttonitup 2013-04-05 15:27:00

+0

@buttonitup第一個塊將用一個腳本代替'processor'和'view'腳本。 'Or:'下方的另外兩個塊分別替換'processor'和'view'腳本。 – Sammitch 2013-04-05 15:28:34