2015-02-17 65 views
-2

我正在處理三個PHP文件。兩個用作網頁,另一個用於外部服務器端腳本。服務器端腳本包含在兩個網頁文件中,我想要做的是在第一頁上有一些按鈕,並根據所點擊的是哪一個按鈕,用數據填充第二頁然後重定向到它。爲什麼PHP varible仍未定義?

使用下面的代碼,想法是拿起按鈕單擊,找出哪個按鈕被點擊,然後調用該函數來運行正確的查詢並設置所需的變量。我不明白爲什麼變量沒有被設置。

感謝任何人看着這個!

第一頁的按鈕(的index.php):

<input type="submit" id='details' name='details' value='Submit'/> 

二頁面,當頁面加載變量未定義:

<h4><?php echo $selected_button; ?></h4> 

外部腳本:

function detailBuilder(){ 

    $selected_button = "Option One"; 
    //header('Location: details.php'); if this is here, the page still redirects but the variable doe not get set 
    //More will happen here once it works 

} 

if(isset($_POST['details'])){ 

    detailBuilder(); 
    header('Location: details.php'); 

} 
+2

這是你接下來閱讀什麼:http://php.net/manual/en/tutorial.forms。 php - 教程中的第一個鏈接... – 2015-02-17 22:03:12

+1

你知道當一個頁面發生變化(標題位置)時,所有腳本都會終止,並開始一個新的過程,對嗎?您需要將其作爲get var,cookie或其他臨時存儲來傳遞。 location:details.php?selected_button = option-one ...或者其他一些 – 2015-02-17 22:03:16

+2

這段代碼沒有意義,所以它不清楚你打算做什麼。 – developerwjk 2015-02-17 22:03:18

回答

1

由於幾個以前有人指出,你重定向到另一個文件。此時,所有本地定義的變量都消失了 - 您不再有權訪問它們。

調查PHP會話in PHP's documentation。會話將允許您將這些變量從請求傳輸到請求。但是,如果您正在運行某種形式的Web服務器,會話將僅適用。

更新:另外需要注意的是,正如其他人(再一次)指出的那樣,$ selected_button =「Option One」僅適用於detailBuilder函數的「範圍」內。所以調用detailBuilder()在函數內創建一個名爲$ selected_button的變量,然後立即丟棄它。

UPDATE 2.0:很抱歉有這麼多的更新。下面是設置一個會話的例子:第一微小

第一件事更新的代碼:

更新3.0。確保你開始會話。

session_start(); 

你將不得不在任何PHP腳本的開始呼籲session_start()!這意味着每次執行的第一個文件的頂部應該有session_start()。

外部腳本:

$_SESSION["selected_option"] = "Option One"; 

腳本,它最初是不確定的:

$selected_details = $_SESSION["selected_option"]; 
?> 
<h4><?=$selected_details?></h4> 
+0

你可能想更新以包含'session_start()' - 這可能確實是他的第一個牛仔競技場。 – 2015-02-17 22:31:30

+0

我想知道我應該走多遠,但我至少可以包括那個。好主意,謝謝。 – 2015-02-18 16:08:15