2016-03-26 5 views
1

数週間前に.phpで再生を開始し、書籍でこの問題が見つかりました。私はそれぞれ異なる機能を呼び出す4つの異なるボタンを持っていますが、私は個々のボタンをクリックすると、現在私の4つの機能すべてが呼び出されていますか?このことを理解するのに少し助けが必要です。コール以外はすべて正常に動作しています。各ボタンを送信すると、別の関数を呼び出す必要があります。私はPHPコードからHTMLを分離している。私が見ているのは、ボタンをクリックすることで、関数が呼び出されます。現在、すべての関数を同時に呼び出しています。4つの.php関数がすべてsubmitで表示されるのはなぜですか?

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の上に出力されている理由として、あなたの2番目の質問に答えるために:

:あなたがここにあなたのPHPの関数を呼び出しているので、DOMの上に

出力が来ています

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/else上記のループ。

編集代わりに値を '返す'関数呼び出しをいくつか変更し、正しい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

ありがとうございました。それは完璧に動作しました。追加の「容器」は取り除かなければならなかった。各ボタンをクリックするたびに1つのコンテナしか必要ありません。最後の部分は、出力がDOMのヘッダー領域にプッシュされている理由を理解することです。 – allendks45

+0

@ allendks45関数は、if/elseループ内で右上に呼び出されました。私の更新された答えを見てください:) – Saan

+0

私が望んでいた方法を出力するために.cssと遊ぶ必要がありました。あなたのソリューションは、堅実で素晴らしい仕事と感謝です! – allendks45

関連する問題