PHP选项值基于数据库表

My problem now: once I echo the value from the database its woking good. but when I submit the form I got an empty value of the selected option.

Can any one help. I tried to used {} in he value code but it did not work.

What I want : Set the the value of the selected option as it is on the database to insert it into another table.

<select class="form-control" name="CenterTO" id="CenterTO">
  <option value="" selected>--select-- </option>
<?php
require("inc/DB.php");
$query = "SELECT centerName FROM jeCenter";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if ($num_rows > 0) {
while($row = mysql_fetch_array($result)){                                                               
    echo '<option value="'.$row['centerName'].'">'.$row['centerName'].'</option>';

     }


} else {
    echo '<option>No data</option>';
}





mysql_close();

?> 

Try this

<select class="form-control" name="CenterTO" id="CenterTO">
    <option value="0" selected>--select--</option>
    <?php

        require("inc/DB.php");
        $query = "SELECT centerName FROM jeCenter";
        $result = mysql_query($query);
        $count = count($result);

        if (!empty($count)) {
            while($row = mysql_fetch_array($result))
            {              
                $name = $row['centerName'];                                                
                echo "<option value='$name'> $name </option>";
            }
        } else {
            echo '<option>No data</option>';
        }

        mysql_close();
    ?> 
</select>

You will have to "expand" your select query to include the ID of the row, and then instead of $row['centerName'] use $row['id'] (or what your ID column is named) in the value argument of the option element, and not the 'centerName'. If I understood correctly what you want, this should be it.

Edit: And do switch to mysqli_, mysql_ has been deprecated.

try to write like this:

echo '<option value="',$row["centerName"],'">',$row["centerName"],'</option>';

Warning:

Please don't use the mysql_ database extensions, they were deprecated in PHP 5.5.0 and were removed in PHP 7.0.0. Use mysqli or PDO extensions instead.

Solution

I recreated your issue and enhanced your code using mysqli extensions, and it's working fine. Take a look at the following code,

<?php

    if(isset($_POST['submit'])){
        // display submitted option
        echo $_POST['CenterTO'];
    }

?>

<html>
<head>
    <title>Page Title</title>
</head>

<body>

    <?php

        $host = "localhost";
        $username = "root";
        $password = "";
        $dbName = "stackoverflow";

        // Open a new connection to the MySQL server
        $connection = new mysqli($host, $username, $password, $dbName);

        // Check connection
        if($connection->connect_errno){
            // error
            die('Connect Error: ' . $connection->connect_error);
        }

        // Execute query
        $result_set = $connection->query("SELECT centerName FROM jeCenter");

    ?>

    <form action="form_page.php" method="POST">
    <select name="CenterTO">
        <option value="" selected>--select-- </option>
    <?php
        // Check if number of rows is greater than zero or not
        if($result_set->num_rows > 0){
            // Loop through each record
            while($row = $result_set->fetch_assoc()){
                ?>
                <option value="<?php echo $row['centerName']; ?>"><?php echo $row['centerName']; ?></option>
                <?php
            }
        }else{
            ?>
            <option value="none">No data</option>
            <?php
        }
    ?>
    </select>
    <input type="submit" name="submit" value="Submit" />
    </form>

</body>
</html>

<?php

    // Close connection
    $connection->close();

?>