2012-08-31 186 views
0

我在第二種情況下處理來自一個條件的變量的問題。我有類似的東西:在兩種情況下處理變量

<form name="exampleForm" method="post"> 
... 
<input type="submit" name="firstSubmit" value="Send"> 
<input type="submit" name="secondSubmit" value="Show"> 
</form> 

<?php 
if(isset($_POST['firstSubmit'])) { 

function a() { 
    $a = 5; 
    $b = 6; 
    $c = $a + $b; 
    echo "The result is $c"; 
    return $c; 
} 

$functionOutput = a(); 
} 

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

echo $functionOutput; 
} 
?> 

當我需要從第一條件可變$functionOutput工作,我總是得到一個錯誤信息(未定義的變量)。我如何解決這個問題?

回答

1
<?php 
$functionOutput = ""; 

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

function a() { 
    $a = 5; 
    $b = 6; 
    $c = $a + $b; 
    echo "The result is $c"; 
    return $c; 
} 

$functionOutput = a(); 
} 

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

echo $functionOutput; 
} 
?> 

應該修復它。這是因爲你在第一個IF語句中聲明瞭$ functionOutput。

+0

謝謝,但這種解決方案並不好。 – Mato

2

我不確定你想要做什麼,但是當你按下第二個按鈕時,變量$functionOutput沒有被定義爲第一個條件是false,因此整個部分被跳過。

請注意,一旦腳本結束,變量就會丟失。你可以看看sessions並使用會話變量來解決這個問題,但是這取決於你想要做什麼。

要使用會話,你有你的整個PHP塊移動到之前,你開始輸出HTML和做類似:

<?php 
session_start(); 

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

function a() { 
    $a = 5; 
    $b = 6; 
    $c = $a + $b; 
    return $c; 
} 

$_SESSION['output'] = a(); 
} 


// start html output 
?> 
<doctype ..... 
<html .... 

// and where you want to echo 
if(isset($_POST['firstSubmit'])) { 
    echo "The result is {$_SESSION['output']}"; 
} 

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

echo $_SESSION['output']; 
} 
+0

感謝您的回答。我還有一個問題。安全使用會話嗎? – Mato

+0

@Mato當然,所有的信息都存儲在服務器端。還有一點,你可以添加會話和表單變量來避免會話劫持,但是你必須查看更多細節。 – jeroen

1

由於$functionOutput尚未初始化當你調用if(isset($_POST['secondSubmit']))

<?php 
if(isset($_POST['firstSubmit'])) { 

function a() { 
    $a = 5; 
    $b = 6; 
    $c = $a + $b; 
    echo "The result is $c"; 
    return $c; 
} 

$functionOutput = a(); 
} 
$functionOutput='12';//intialize 
if(isset($_POST['secondSubmit'])) { 

echo $functionOutput; 
} 
?> 

     **OR** 

<?php 
if(isset($_POST['firstSubmit'])) { 

function a() { 
    $a = 5; 
    $b = 6; 
    $c = $a + $b; 
    echo "The result is $c"; 
    return $c; 
} 

$functionOutput = a(); 
} 

if(isset($_POST['secondSubmit'])) { 
function a() { 
    $a = 5; 
    $b = 6; 
    $c = $a - $b; 
    echo "The result is $c"; 
    return $c; 
} 

$functionOutput = a(); 
echo $functionOutput; 
} 
?>