2016-03-26 72 views
1

幾周前開始使用.php進行遊戲,並在書中發現了這個問題。我有4個不同的按鈕可以分別調用不同的功能,但是當我點擊各個按鈕時,目前我所有的4個功能都被調用了?需要一點幫助理解這一點。除了通話以外,一切正常。每個按鈕提交一個不同的功能應該被調用。我有從PHP代碼分開的HTML。我正在看的是單擊一個按鈕並調用該函數。目前它正在同時調用所有函數。爲什麼所有4個.php函數都顯示並提交?

HTML:

<?php 
if (isset($_POST['Sequence1'])) { 
    echo Sequence1(); } 
    else if (isset($_POST['Sequence2'])) { 
     echo Sequence2(); } 
     else if (isset($_POST['Sequence3'])) { 
      echo Sequence3(); } 
      else if (isset($_POST['Sequence4'])) { 
       echo Sequence4(); } 
?> 
<!doctype html> 
<html> 
<head> 
<title>Sequence Test</title> 
<link rel="stylesheet" type="text/css" href="q2.css"> 
</head> 
<body> 
<form action="q2_process.php" method="post"> 
<div class="header"> 
<header><h1>Numeric Sequence Tester</h1></header> 
</div> 
<div class="prompt"> 
<h2>Click on a button below to see the sequence</h2> 
</div> 
<div class="button1"> 
    <p><button type="submit" formmethod="post" name="Sequence1" value="Sequence1" class= "buttons">Sequence 10 - 2n</button></p> 
    </div> 
    <div class="button2"> 
    <p><button type="submit" formmethod="post" name="Sequence2" value="Sequence2" class="buttons">Sequence 4n + 3</button></p> 
    </div> 
    <div class="button3"> 
    <p><button type="submit" formmethod="post" name="Sequence3" value="Sequence3" class="buttons">Sequence n*n - 2</button></p> 
    </div> 
    <div class="button4"> 
    <p><button type="submit" formmethod="post" name="Sequence4" value="Sequence4" class="buttons">Sequence ar^n; when a-4 r=3</button></p> 
</div> 

</form> 
</body> 
</html> 

PHP Functions: 

    <?php 
function Sequence1() { 
    $num = 0; 
    $result = 0; 
    for($i = 0; $i < 9; $i++) { 
     $num++; 
     $num1 = (2 * $num); 
     $result = 10 - $num1; 
     echo "When n=${num}; 10-2n = 10-2x $num1 = 10 - $num1 = $result <br>"; }} ?> 
<?php function Sequence2() { 
    $num = 0; 
    $result = 0; 
    for($i = 0; $i < 9; $i++) { 
     $num++; 
     $num1 = (4 * $num); 
     $result = $num1 + 3; 
     echo "When n=${num}; 4n+3 = 4 x $num + 3 = $num1 + 3 = $result <br>"; }}; ?> 

<?php function Sequence3() { 
    $num = 0; 
    $result = 0; 
    for($i = 0; $i < 9; $i++) { 
     $num++; 
     $num1 = ($num* $num); 
     $result = $num1 - 2; 
     echo "When n=${num}; n*n-2 = $num x $num - 2 = $num1 - 2 = $result <br>"; }}; ?> 

<?php function Sequence4() { 
    $num = 0; 
    $result = 0;  
    for($i = 0; $i < 9; $i++) { 
     $a = 3; 
     $r = 2; 
     $num++; 
     $num1 = $a * pow($r, $num -1); 
     $result = $num1 * 2; 
     echo "When n=${num}; $num1 x 2 = $result <br>"; }} ?> 

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Sequence Tester</title> 
<link rel="stylesheet" type="text/css" href="q2.css"> 
</head> 
<body> 
<div class="header"> 
<header><h1>Sequence Tester</h1></header> 
</div> 
<!--Create divs to hold each button click--> 
<div class="seq1"> 
<h3>You selected button 1</h3> 
<p><?php echo Sequence1(); ?></p> 
</div> 

<div class="seq2"> 
<h3>You selected button 2</h3> 
<p><?php echo Sequence2(); ?></p> 
</div> 

<div class="seq3"> 
<h3>You selected button 3</h3> 
<p><?php Sequence3(); ?></p> 
</div> 
<div class="seq4"> 
<h3>You selected button 4</h3> 
<p><?php Sequence4(); ?></p> 
</div> 

<div class="home"> 
<a href="q2_index.html">Back to Homepage</a> 
</div> 

</body> 
</html> 

回答

2

您在這裏呼籲各功能:

<div class="seq1"> 
<h3>You selected button 1</h3> 
<p><?php echo Sequence1(); ?></p> 
</div> 

<div class="seq2"> 
<h3>You selected button 2</h3> 
<p><?php echo Sequence2(); ?></p> 
</div> 

<div class="seq3"> 
<h3>You selected button 3</h3> 
<p><?php Sequence3(); ?></p> 
</div> 
<div class="seq4"> 
<h3>You selected button 4</h3> 
<p><?php Sequence4(); ?></p> 
</div> 

這就是爲什麼它似乎所有的按鈕提交。

編輯回答你的第二個問題,爲什麼功能是對DOM的頂部是輸出:

對DOM的頂部輸出來,因爲你在這裏呼喚你的PHP函數:

if (!empty($_POST['Sequence1'])) { 
    $v = "button 1"; 
    Sequence1(); } 
else if (isset($_POST['Sequence2'])) { 
    $v = "button 2"; 
    Sequence2(); } 
else if (isset($_POST['Sequence3'])) { 
    $v = "button 3"; 
    Sequence3(); } 
else if (isset($_POST['Sequence4'])) { 
    $v = "button 4"; 
    Sequence4(); ; } 

由於每個函數都是由'echo'結果定義的,而不是'返回'到一個變量中(參見函數描述),所以當你在if /否則循環上面。

編輯我對函數調用進行了一些更改,而不是將值返回,然後將它們顯示在正確的div中。試試這個:

<?php 
$v = ''; 
$j = ''; 
if (!empty($_POST['Sequence1'])) { 
    $v = "button 1"; 
    $j = Sequence1(); } 
else if (isset($_POST['Sequence2'])) { 
    $v = "button 2"; 
    $j = Sequence2(); } 
else if (isset($_POST['Sequence3'])) { 
    $v = "button 3"; 
    $j = Sequence3(); } 
else if (isset($_POST['Sequence4'])) { 
    $v = "button 4"; 
    $j = Sequence4(); } 
?> 
<!doctype html> 
<html> 
<head> 
    <title>Sequence Test</title> 
    <link rel="stylesheet" type="text/css" href="q2.css"> 
</head> 
<body> 
<form action="" method="post"> 
    <div class="header"> 
     <header><h1>Numeric Sequence Tester</h1></header> 
    </div> 
    <div class="prompt"> 
     <h2>Click on a button below to see the sequence</h2> 
    </div> 
    <div class="button1"> 
     <p><button type="submit" formmethod="post" name="Sequence1" value="Sequence1" class= "buttons">Sequence 10 - 2n</button></p> 
    </div> 
    <div class="button2"> 
     <p><button type="submit" formmethod="post" name="Sequence2" value="Sequence2" class="buttons">Sequence 4n + 3</button></p> 
    </div> 
    <div class="button3"> 
     <p><button type="submit" formmethod="post" name="Sequence3" value="Sequence3" class="buttons">Sequence n*n - 2</button></p> 
    </div> 
    <div class="button4"> 
     <p><button type="submit" formmethod="post" name="Sequence4" value="Sequence4" class="buttons">Sequence ar^n; when a-4 r=3</button></p> 
    </div> 

</form> 
</body> 
</html> 

PHP Functions: 

<?php 
function Sequence1() 
{ 
    $output = ""; 
    $num = 0; 
    $result = 0; 
    for ($i = 0; $i < 9; $i++) { 
     $num++; 
     $num1 = (2 * $num); 
     $result = 10 - $num1; 
     $output .= "When n=${num}; 10-2n = 10-2x $num1 = 10 - $num1 = $result <br>"; 
    } 
    return $output; 
} 

function Sequence2() 
{ 
    $output = ""; 
    $num = 0; 
    $result = 0; 
    for ($i = 0; $i < 9; $i++) { 
     $num++; 
     $num1 = (4 * $num); 
     $result = $num1 + 3; 
     $output .= "When n=${num}; 4n+3 = 4 x $num + 3 = $num1 + 3 = $result <br>"; 
    } 
    return $output; 
} 

function Sequence3() 
{ 
    $output = ""; 
    $num = 0; 
    $result = 0; 
    for ($i = 0; $i < 9; $i++) { 
     $num++; 
     $num1 = ($num * $num); 
     $result = $num1 - 2; 
     $output .= "When n=${num}; n*n-2 = $num x $num - 2 = $num1 - 2 = $result <br>"; 
    } 
    return $output; 
} 

function Sequence4() { 
    $output = ""; 
    $num = 0; 
    $result = 0; 
    for($i = 0; $i < 9; $i++) { 
     $a = 3; 
     $r = 2; 
     $num++; 
     $num1 = $a * pow($r, $num -1); 
     $result = $num1 * 2; 
     $output .= "When n=${num}; $num1 x 2 = $result <br>"; 
    } 
    return $output; 
} 

?> 

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Sequence Tester</title> 
    <link rel="stylesheet" type="text/css" href="q2.css"> 
</head> 
<body> 
<div class="header"> 
    <header><h1>Sequence Tester</h1></header> 
</div> 
<!--Create divs to hold each button click--> 
<div class="seq_result"> 
    <h3>You selected <?php echo $v; ?></h3> 
    <p><?php echo $j; ?></p> 
</div> 

<div class="home"> 
    <a href="q2_index.html">Back to Homepage</a> 
</div> 

</body> 
</html> 
+0

感謝您的幫助。它幾乎完美地工作。額外的「容器」必須被移除。每次點擊按鈕時只需要一個容器。最後一部分是弄清楚爲什麼輸出會推入DOM的頭部區域。 – allendks45

+0

@ allendks45函數在你的if/else循環中被調用。請看我更新的答案:) – Saan

+0

必須使用.css來輸出我想要的方式。你的解決方案是堅實的,偉大的工作和感謝! – allendks45

相關問題