Элементы параметров в HTML не используют атрибут name
, они используют атрибут value
.
Ваш HTML должен быть изменен, чтобы отразить это;
<form method="get" action="output.php">
Starting Amount:
<select name="startingAmount" size="1">
<option value="1">1</option>
<option value="10">10</option>
<option value="20">20</option>
</select><br>
Conversion type:
<select name="whichWay" size="1">
<option value="1">USD to Canadian</option>
<option value="2">Canadian to USD</option>
</select><br>
Conversion Rate: <input type="text" name="conversion" required><br>
Step:
<select name="step" size="1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br>
<input type="submit">
</form>
Ваш PHP-код также может быть значительно улучшен, это эквивалентно вашему текущему коду, но, как вы можете видеть, НАМНОГО короче и уменьшает дублирование кода.Это также можно легко расширить, просто добавив новые типы в массив $types
.
<?php
$amount = $_GET["startingAmount"];
$whichWay = $_GET["whichWay"];
$conversion = $_GET["conversion"];
$step = $_GET["step"];
$types = [
["USD", "Canadian"],
["Canadian", "USD"]
];
if (is_numeric($conversion))
{
echo "<table>";
$type = $types[$whichWay - 1];
//$type will now == ["USD", "Canadian"] (if $whichWay is 1), so you can use array indexes to select the proper label
echo "<tr><th>{$type[0]}</th><th>{$type[1]}</th></tr>";
for ($i = 0; $i <= 10; $i++)
{
$outputValue = $amount * $conversion;
echo "<tr><td>$amount</td><td>$outputValue</td></tr>";
$amount = $amount+$step;
}
echo "</table>";
} else {
echo "<p>You did not input a numeric value for both the amount you wanted to convert and for the conversion rate.<br>Please go back and do it again</p>";
}
?>