使用php构建表单


Building a form with php

我正在构建一个小型库存系统,希望有一个下拉菜单供用户选择零件,然后输入零件的数量。我将用mySQL数据库中的元素填充下拉菜单。我熟悉mySQL,不太熟悉php和html,但我用java编程,所以我有一些编程经验。不管怎样,这是代码,我目前的问题是其他项目没有出现在下拉菜单中。

关于代码的任何其他建议都会很棒,谢谢!

代码:

    <html>
<body>

    <form action="index.php" method="post">
        <select> 
            <!-- php code to get all items -->
            <?php
                $conn = mysqli_connect("localhost", "root", "root", "inventory");
                if(mysqli_connect_errno($conn)) {
                    echo "ERROR: " . mysqli_connect_error();
                }
                $sql = "SELECT * FROM item_names";
                echo $sql;
                while($row = mysql_fetch_array($sql)) {
                    echo '<option value="$row[name]"> $row[name] </option>';
                }
            ?>
            <option value="laptop"> Laptop </option>
            <option value="ipad"> iPad </option> 
        </select>
        Amount: <input type="text" name="amount" size="5" />
        <input type="submit" value="Enter" />
    </form>

    <form action="new.php" method="post">
        Name: <input type="text" name="name" />
        <input type="submit" value="New..." />
    </form>
    <br><br><br><br><br>
    <h3> Inventory: </h3>
    <table border="1">
    <!-- php code to fill table -->
        <tr>
            <td>(0, 0)</td>
        <tr>
        <tr>
            <td>(1, 0)</td>
        <tr>
    </table>
</body>

  1. 混合mysqlmysqli功能
  2. 无需echo $sql
  3. 使用单引号构建的字符串不会被解析,并且不会发现该字符串中的变量。使用带有正确转义或串联的双引号
  4. 访问不带引号的数组键($row[name])是一种糟糕的做法
           <?php
            $conn = mysqli_connect("localhost", "root", "root", "inventory");
            if(mysqli_connect_errno($conn)) {
                echo "ERROR: " . mysqli_connect_error();
            }
            $sql = "SELECT * FROM item_names";
            $result=mysqli_query($sql); // not executing this
            while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
                $name=$row["name"];
                echo '<option value="'.$name.'">'. $name .'</option>';
            }
        ?>

实际上,您没有在sql上运行mysqli_query,并且尽量不混淆mysqlmysqli函数

如果你尝试一下,也许?

 echo '<option value="'.$row['name'].'">' .$row['name']. '</option>';

试试这个

    <form action="index.php" method="post">
        <select> 
            <!-- php code to get all items -->
            <?php
                $conn = mysqli_connect("localhost", "root", "root", "inventory");
                if(mysqli_connect_errno($conn)) {
                    echo "ERROR: " . mysqli_connect_error();
                }
                $sql = "SELECT * FROM item_names";
                $result = mysql_query($sql);
                while($row = mysql_fetch_array($result)) {
                    echo '<option value="$row[name]"> $row[name] </option>';
                }
            ?>
            <option value="laptop"> Laptop </option>
            <option value="ipad"> iPad </option> 
        </select>
        Amount: <input type="text" name="amount" size="5" />
        <input type="submit" value="Enter" />
    </form>

    <form action="new.php" method="post">
        Name: <input type="text" name="name" />
        <input type="submit" value="New..." />
    </form>
    <br><br><br><br><br>
    <h3> Inventory: </h3>
    <table border="1">
    <!-- php code to fill table -->
        <tr>
            <td>(0, 0)</td>
        <tr>
        <tr>
            <td>(1, 0)</td>
        <tr>
    </table>
</body>