Программа пропускает оператор if if my PHP - PullRequest
0 голосов
/ 24 сентября 2018

Вот мой php-код:

        <?php
            $amount = $_GET["startingAmount"];
            $whichWay = $_GET["whichWay"];
            $conversion = $_GET["conversion"];
            $step = $_GET["step"];
            if (is_numeric($conversion)) 
            {
                if ($whichWay === "1") 
                {
                    echo "<table>";
                        echo "<tr><th>USD</th><th>Canadian</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 "<table>";
                        echo "<tr><th>Canadian</th><th>USD</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>";
            }
        ?>

Вот HTML-форма, которая отправляет информацию:

<body>
        <h1>USD/Canadian Money Conversion Site</h1>
        <div>
            <form method="get" action="output.php">            
                Starting Amount: 
                    <select name="startingAmount" size="1">
                        <option name="1">1</option>
                        <option name="10">10</option>
                        <option name="20">20</option>
                    </select><br> 
                Conversion type:
                    <select name="whichWay" size="1">
                        <option name="1">USD to Canadian</option>
                        <option name="2">Canadian to USD</option>
                    </select><br>  
                Conversion Rate: <input type="text" name="conversion" required><br>
                Step:
                    <select name="step" size="1">
                        <option name="1">1</option>
                        <option name="2">2</option>
                        <option name="3">3</option>
                        <option name="4">4</option>
                    </select><br> 
                <input type="submit">
            </form>
        </div>
    </body>

По какой-то причине php не распознает значение whichWay, еслипользователь выбирает USD в канадский или наоборот и просто запускает оператор else.Все остальное работает отлично.Программа может запустить оператор else, а остальные переменные работают нормально.Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

У вас есть «имена» в HTML-коде, но нет «значений».

в «select», в каждой опции, вместо «name = '1'» вы должны иметь «value =«1» и т. Д.

0 голосов
/ 24 сентября 2018

Элементы параметров в 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>";
    }
?>
0 голосов
/ 24 сентября 2018

Измените <option name="1"> на <option value="1"> и сделайте то же самое для всех <option элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...