PHP表单,将输入字段转换为下拉列表

时间:2016-09-26 14:40:26

标签: php html

以下代码是一个简单的表单,用于发送输入到本地数据库的数据。

<html>
    <head>
        <title>!!!!!!!!!!!!!!</title>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>

    <body>
        <div id="main">
            <h1>Insert data into database using mysqli</h1>
            <div id="login">
                <h2>Student's Form</h2>
                <hr/>
                <form action="" method="post">
                    <label>Student Name  :</label>
                    <input type="text" name="stu_name" id="name" required="required" placeholder="Please Enter Name"/><br /><br />
                    <label>Student Email  :</label>
                    <input type="email" name="stu_email" id="email" required="required" placeholder="john123@gmail.com"/><br/><br />
                    <label>Student City  :</label>
                    <input type="text" name="stu_city" id="school"   required="required" placeholder="Please Enter Your City"/><br/><br />
                    <input type="submit" value=" Submit " name="submit"/><br />
                </form>
            </div>

        <!-- Right side div -->

        </div>

        <?php
        if(isset($_POST["submit"])){
            $servername = "localhost";
            $username = "root";
            $password = "";
            $dbname = "Student";

            // Create connection
            $conn = new mysqli($servername, $username, $password, $dbname);

            // Check connection
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            } 

            $sql = "INSERT INTO students (student_name, student_email, student_school)
            VALUES ('".$_POST["stu_name"]."','".$_POST["stu_email"]."','".$_POST["stu_city"]."')";

            if ($conn->query($sql) === TRUE) {
                echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>";
            } else {
            echo "<script type= 'text/javascript'>alert('Error: " . $sql . "<br>" . $conn->error."');</script>";
            }
            $conn->close();
        }
        ?>
    </body>
</html>

我发现的问题是我正在尝试将学生城输入字段更改为从数据库中检索值的下拉列表,并将其放入下拉列表中供新用户选择。

有人可以建议你需要做些什么。

我正在尝试使用以下代码并将以下列表发送到我的数据库。

       <option value="US">United States</option>
        <option value="UK">United Kingdom</option>
        <option value="France">France</option>
        <option value="Mexico">Mexico</option>

但我发现很难用上面的代码将这些值发送到数据库以及放置此代码的位置。

4 个答案:

答案 0 :(得分:1)

作为如何使用数据库中的数据构建下拉菜单的粗略示例,这可能会给您一般的想法。

/* store formatted menu options in temp array */
$html=array();

/* query db to find schools/cities */
$sql='select distinct `student_school` from `students` order by `student_school`';
$res=$mysqli_query( $conn, $sql );

/* process recordset and store options */
if( $res ){
    while( $rs=mysqli_fetch_object( $res ) ){
        $html[]="<option value='{$rs->student_school}'>{$rs->student_school}";
    }
}

/* render menu */
echo "<select name='stu_city'>", implode( PHP_EOL, $html ), "</select>";

答案 1 :(得分:0)

你需要通过在html上面移动if(isset($ _ POST))来重构你的代码:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Student";

// Create connection
$conn = new mysqli ( $servername, $username, $password, $dbname );
// Check connection
if ($conn->connect_error) {
    die ( "Connection failed: " . $conn->connect_error );
}


$sql = "SELECT city_name FROM cities" ;
if ($conn->query ( $sql ) === TRUE) {
    $cities = ... // build the cities from the query result 
} else {
    $cities = '<option value="none">No cities found</option>' ;
}


if (isset ( $_POST ["submit"] )) {
    $sql = "INSERT INTO students (student_name, student_email, student_school)
VALUES ('" . $_POST ["stu_name"] . "','" . $_POST ["stu_email"] . "','" . $_POST ["stu_city"] . "')";

    if ($conn->query ( $sql ) === TRUE) {
        echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>";
    } else {
        echo "<script type= 'text/javascript'>alert('Error: " . $sql . "<br>" . $conn->error . "');</script>";
    }

    $conn->close ();
}
?>


<html>
<head>
<title>!!!!!!!!!!!!!!</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

    <div id="main">
        <h1>Insert data into database using mysqli</h1>
        <div id="login">
            <h2>Student's Form</h2>
            <hr />
            <form action="" method="post">
                <label>Student Name :</label> <input type="text" name="stu_name"
                    id="name" required="required" placeholder="Please Enter Name" /><br />
                <br /> <label>Student Email :</label> <input type="email"
                    name="stu_email" id="email" required="required"
                    placeholder="john123@gmail.com" /><br />
                <br /> <label>Student City :</label> <select name="stu_city" multiple><?php echo $cities; ?>
                </select>><br />
                <br /> <input type="submit" value=" Submit " name="submit" /><br />
            </form>
        </div>
        <!-- Right side div -->


    </div>
</body>
</html>

答案 2 :(得分:0)

使用Select标签:假设你在数据库中有一个列有Student City,就像这样,假设数据库字段叫做city

  1. 城市1
  2. City 2
  3. City 3
  4. 步骤1:查询数据库并获取所有城市

        $sql = "SELECT city FROM table_name";
        $result = $conn->query($sql);
    

    然后你来到你的下拉列表:

        <select name="stu_city" id="..." required>
          <?php
          while($cities = $conn->fetch_array($result){
            extract($cities);
            echo "<option value='...'>$city</option>";
          }
          ?>
        </select>
    

答案 3 :(得分:0)

你需要通过在html上面移动if(isset($ _ POST))来重构你的代码:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Student";

// Create connection
$conn = new mysqli ( $servername, $username, $password, $dbname );
// Check connection
if ($conn->connect_error) {
    die ( "Connection failed: " . $conn->connect_error );
}


$sql = "SELECT city_name FROM cities" ;
$result = $conn->query ( $sql );


if (isset ( $_POST ["submit"] )) {
    $sql = "INSERT INTO students (student_name, student_email, student_school)
VALUES ('" . $_POST ["stu_name"] . "','" . $_POST ["stu_email"] . "','" . $_POST ["stu_city"] . "')";

    if ($conn->query ( $sql ) === TRUE) {
        echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>";
    } else {
        echo "<script type= 'text/javascript'>alert('Error: " . $sql . "<br>" . $conn->error . "');</script>";
    }

    $conn->close ();
}
?>


<html>
<head>
<title>!!!!!!!!!!!!!!</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

    <div id="main">
        <h1>Insert data into database using mysqli</h1>
        <div id="login">
            <h2>Student's Form</h2>
            <hr />
            <form action="" method="post">
                <label>Student Name :</label> <input type="text" name="stu_name"
                    id="name" required="required" placeholder="Please Enter Name" /><br />
                <br /> <label>Student Email :</label> <input type="email"
                    name="stu_email" id="email" required="required"
                    placeholder="john123@gmail.com" /><br />
                <br /> <label>Student City :</label> <select name="stu_city" multiple> 
<?php
if ($result == TRUE) {
    while($cities = $conn->fetch_array($result)){
      extract($cities);
      echo "<option value=''>$city_name</option>";
 } 
}
else {
    echo "<option value='none'>No cities found</option>";
}

?>
                </select>><br />
                <br /> <input type="submit" value=" Submit " name="submit" /><br />
            </form>
        </div>
        <!-- Right side div -->


    </div>
</body>
</html>