1

ユーザーの入力と選択フィールドからの選択に基づいて、PHPで簡単な計算機を実行する必要があります。次のようなものです。

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
    echo "<option value='".$v."'>".$k."</option>";
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $b;

echo $total_volume;

echo "</form>";
?>

さて、今のところすべて正常に動作しますが、ユーザーがフォームを送信した後、入力フィールドに送信された金額と、ユーザーが実際に選択したオプションを選択してページがリロードされます...

最初のことは簡単です。value="a"入力フィールドに入力しただけですが、フィールドで選択したオプションを作成する方法がわかりません<select>???

私はこれから始めました:

foreach ($array as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

...しかし、これは明らかに期待どおりに機能していません...この簡単なもので私を助けてください:)

ありがとう!

4

3 に答える 3

2

のようなものをエコーする必要があります'selected="selected"'。コードの残りの部分は問題ないようです。

よく考えてみると、複数のオプションが同じ値を返し、フォームを送信した後に正しいオプションを選択できなくなるため、構造的に何か問題があります。

$kループ内の選択の値として送信する必要があり、$array[$b]代わりに使用する計算に使用する必要があり$bます。

<?php
$a = $_GET['a'];
$b = $_GET['b'];

$array = array( "option1" => 0.1,
                    "option2" => 0.15,
                    "option3" => 0.3,
                    "option4" => 3,
                    "option5" => 3,
                    "option6" => 16,
                    "option7" => 16,
                    "option8" => 16
                    );

echo "<form action='calc.php' method='get'>";
echo "<input type='text' name='a' value='".$a."'> of ";
echo "<select name='b'>";
foreach ($array as $k => $v) {
        echo "<option value='".$k."'";
        if ($b == $k) {
            echo ' selected="selected"';
        }
        echo ">".$k."</option>";     // or $v if you want to show the number
}
echo "</select> ";
echo "<input type='submit' value='='> ";

$total_volume = $a * $array[$b];

echo $total_volume;

echo "</form>";
?>
于 2010-06-02T22:12:46.777 に答える
2

これを試して:

foreach ($array as $k => $v) {
   $selected= ($b == $v) ? 'selected="selected"' : '';
   echo "<option value='$v' $selected>$k</option>\n";
}
于 2010-06-02T22:13:51.510 に答える
-1

$_GET でデータをキャッチする必要があります。試す

foreach ($_GET as $k => $v) {
        echo "<option value='".$v."'";
        if ($b == $v) {
            echo " selected ";
        }
        echo ">".$k."</option>";
    }

編集:

私のコンピューターでは、ここで機能したのはGETのダンプです

        <form action='' method='get'>
    <input type='text' name='a' value='121'> of <select name='b'>
<option value='0.1'>option1</option>
<option value='0.15'>option2</option>
<option value='0.3'>option3</option>
<option value='3'>option4</option>
<option value='3'>option5</option><option value='16'>option6</option><option value='16'>option7</option><option value='16'>option8</option></select> <input type='submit' value='='> 363
    </form> 

URL

http://localhost/test.php?a=121&b=3

そしてパラメータ

121 b 3 _

于 2010-06-02T22:15:06.550 に答える