使用php插入drop select表单元素

时间:2018-04-13 17:24:47

标签: php html

我正在尝试使用php创建一个下拉框,从填充状态名称的数组中提取状态。我已经使用.php扩展名保存了我的文件,并添加了代码以尝试从我正在创建的数组中创建一个下拉菜单。由于某种原因,下拉菜单不起作用。

<!DOCTYPE html>
<html>

    <head>
        <style>
        </style>
        <script type="text/javascript">
            //create function to be called upon submission
            function verify(event) {
                var hasError = false;
                var check1=document.getElementById("saws").value;
                var check2=document.getElementById("pliers").value;
                var check3=document.getElementById("planers").value;
                var ok = [];
                ok[0] = check1.search(/^$|\d+/);
                ok[1] = check2.search(/^$|\d+/);
                ok[2] = check3.search(/^$|\d+/);
                for (i = 0; i < ok.length; i++) {
                    if (ok[i] !== 0) {
                        hasError = true;
                        alert("Invalid input.");
                        event.preventDefault();
                    }
                }
                if (hasError) return false;
                else return true;
            }
        </script>
        <title>l6p2</title>
        <meta charset="UTF-8" />
        <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
    </head>

    <body>
        <h1>Lab 6, part 2 </h1>
        <form action = "/formtest.php" method="post" onsubmit= "return verify(event)">
            <table>
                <thead>
                    <tr>
                        <th>Item</th>
                        <th>Price</th>
                        <th>Quantity</th>
                    </tr>
                </thead>
                <tbody id="tbody">
                    <tr>
                        <td>Saw</td>
                        <td>$15.99</td>
                        <td><input type="text" name="saws" id="saws" size="2" /></td>
                    </tr>
                    <tr>
                        <td>Pliers</td>
                        <td>$12.99</td>
                        <td><input type="text" name="pliers" id="pliers" size="2" /></td>
                    </tr>
                    <tr>
                        <td>Planer</td>
                        <td>$79.99</td>
                        <td><input type="text" name="planers" id="planers" size="2" /></td>
                    </tr>
                </tbody>
            </table>
            <p>
                <label> First Name:
                    <input type="text" name="fname" size ="30" />
                </label>
                <br />
                <br />
                <label> Last Name:
                    <input type="text" name="lname" size ="30" />
                </label>
                <br />
                <br />
                <label> Shipping Address:
                    <input type="text" name="address" size ="30" />
                </label>
                <br />
                <br />
                <label> City:
                    <input type="text" name="csz" size ="30" />
                </label>
                <br />
                <br />
                    <?php
                        $states = array('Alabama','Alaska','Arizona','California','Florida','Georgia');
                        echo '<label> State:';
                        echo '<select name="state">';
                        for ($i = 0; $i < count($states); $i++) {
                            echo '<option>' . $states[$i] . '</option>';
                        }
                        echo '</select>';
                        echo '</label>';
                    ?>

            </p>
            <h3>Payment Method</h3>
            <p>
                <label> 
                    <input type="radio" name="payment" value="visa" checked = "checked" />
                    Visa
                </label>
                <label>
                    <input type="radio" name="payment" value="mc" />
                    Master Card
                </label>
                <label>
                    <input type="radio" name="payment" value="amex" />
                    American Express
                </label>
                <br />
            </p>
            <p>
                <input type="Submit" value="Submit Order" />
            </p>
        </form>

        <h3>Links</h3>
        <a href="index.html">Home</a>
    </body>

</html>

这是无法正常工作的部分:

<?php
   $states = array('Alabama','Alaska','Arizona','California','Florida','Georgia');
    echo '<label> State:';
    echo '<select name="state">';
    for ($i = 0; $i < count($states); $i++) {
       echo '<option>' . $states[$i] . '</option>';
    }
       echo '</select>';
       echo '</label>';
?>

2 个答案:

答案 0 :(得分:1)

在这种情况下使用简单的foreach:

foreach ($states as $state) {

    echo '<option value="'.$state.'">' . $state . '</option>';
}

你的数组是基本的,并且不需要任何特殊的魔法来使它工作。

答案 1 :(得分:0)

我认为问题是循环计数,你需要知道数组长度,所以请尝试使用sizeof($ states)。

for ($i = 0; $i < sizeof($states); $i++) {

另一件事:你必须在“选项”上加上一些值才能在后端获得它。像这样:

echo '<option value="'.$states[$i].'">' . $states[$i] . '</option>';

最后一个:你不需要把“选择”放在“标签”里面。您可以使用标签上的“for”属性来引用选择ID。 这就是所有代码:

<?php
     $states = array('Alabama','Alaska','Arizona','California','Florida','Georgia');
     echo '<label for="state"> State: </label>';
     echo '<select name="state" id="state">';
     for ($i = 0; $i < sizeof($states); $i++) {
        echo '<option value="'.$states[$i].'">' . $states[$i] . 
        '</option>';
     }
     echo '</select>';
?>
祝你好运。 :)