如何在php表单中创建选择下拉列表

时间:2016-07-09 21:41:12

标签: php records

我正在处理一个项目,并希望在更新记录时为用户提供每个确定的值。

到目前为止,这是我的代码。

 <?php 
 // if there are any errors, display them
 if ($error != '')
 {
 echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
 }
 ?> 

 <form action="" method="post">
 <input type="hidden" name="id" value="<?php echo $id; ?>"/>
 <div>
 <p><strong>ID:</strong> <?php echo $id; ?></p>
 <strong>School Name:</strong> <input type="text" name="Name" value="<?php echo $Name; ?>"/><br/><br>
 <strong>Status:</strong> <input type="text" name="Status" value="<?php echo $Status; ?>"/><br/><br>
 <strong>Comments:</strong> <input type="text" name="Comments" value="<?php echo $Comments; ?>"/><br/><br>
 <strong>Type:</strong> <input type="text" name="Type" value="<?php echo $Type; ?>"/><br/><br>
 <input type="submit" name="submit" value="Submit">
 </div>
 </form> 
 </body>
 </html> 
 <?php
 }



 // connect to the database
 include('connect-db.php');

 // check if the form has been submitted. If it has, process the form and save it to the database
 if (isset($_POST['submit']))
 { 
 // confirm that the 'id' value is a valid integer before getting the form data
 if (is_numeric($_POST['id']))
 {
 // get form data, making sure it is valid
 $id = $_POST['id'];
 $Name = mysql_real_escape_string(htmlspecialchars($_POST['Name']));
 $Status = mysql_real_escape_string(htmlspecialchars($_POST['Status']));
 $Comments = mysql_real_escape_string(htmlspecialchars($_POST['Comments']));
 $Type = mysql_real_escape_string(htmlspecialchars($_POST['Type']));

 // check that firstname/lastname fields are both filled in
 if ($Name == '' || $Type == '')
 {
 // generate error message
 $error = 'ERROR: Please fill in all required fields!';

 //error, display form
 renderForm($id, $Name, $Status, $Comments, $Type, $error);
 }
 else
 {
 // save the data to the database
 mysql_query("UPDATE Schools SET Name='$Name', Status='$Status', Comments='$Comments', Type='$Type' WHERE id='$id'")
 or die(mysql_error()); 

 // once saved, redirect back to the view page
 header("Location: view.php"); 
 }
 }
 else
 {
 // if the 'id' isn't valid, display an error
 echo 'Error!';
 }
 }
 else
 // if the form hasn't been submitted, get the data from the db and display the form
 {

 // get the 'id' value from the URL (if it exists), making sure that it is valid (checing that it is numeric/larger than 0)
 if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
 {
 // query db
 $id = $_GET['id'];
 $result = mysql_query("SELECT * FROM Schools WHERE id=$id")
 or die(mysql_error()); 
 $row = mysql_fetch_array($result);

 // check that the 'id' matches up with a row in the databse
 if($row)
 {

 // get data from db
 $Name = $row['Name'];
 $Status = $row['Status'];
 $Comments = $row['Comments'];
 $Type = $row['Type'];

 // show form
 renderForm($id, $Name, $Status, $Comments, $Type, '');
 }
 else
 // if no match, display result
 {
 echo "No results!";
 }
 }
 else
 // if the 'id' in the URL isn't valid, or if there is no 'id' value, display an error
 {
 echo 'Error!';
 }
 }
?>

我想用一个选项下拉列表替换状态文本。

3 个答案:

答案 0 :(得分:1)

<input替换为<select

<form action="" method="post">
 <input type="hidden" name="id" value="<?php echo $id; ?>"/>
 <div>
 <p><strong>ID:</strong> <?php echo $id; ?></p>
 <strong>School Name:</strong> <input type="text" name="Name" value="<?php echo $Name; ?>"/><br/><br>
<!-- <strong>Status:</strong> <input type="text" name="Status" value="<?php echo $Status; ?>"/><br/><br>-->
 <strong>Status:</strong> <select name="Status">
                            <option value="1">Status 1</option>
                            <option value="2">Status 2</option>
                          </select>
 <strong>Comments:</strong> <input type="text" name="Comments" value="<?php echo $Comments; ?>"/><br/><br>
 <strong>Type:</strong> <input type="text" name="Type" value="<?php echo $Type; ?>"/><br/><br>
 <input type="submit" name="submit" value="Submit">
 </div>
 </form> 

如果您的状态位于表格中,请使用查询填写<select>

<form action="" method="post">
 <input type="hidden" name="id" value="<?php echo $id; ?>"/>
 <div>
 <p><strong>ID:</strong> <?php echo $id; ?></p>
 <strong>School Name:</strong> <input type="text" name="Name" value="<?php echo $Name; ?>"/><br/><br>
<!-- <strong>Status:</strong> <input type="text" name="Status" value="<?php echo $Status; ?>"/><br/><br>-->
 <strong>Status:</strong> <select name="Status">
<?php
$result = mysql_query("SELECT * FROM tbl_status",$cnx);
while ( $row = mysql_fetch_array($result) )
  echo "<option value='" . $row["id"] . "'>" . $row["text"] . "</option>";
?>
                          </select>
 <strong>Comments:</strong> <input type="text" name="Comments" value="<?php echo $Comments; ?>"/><br/><br>
 <strong>Type:</strong> <input type="text" name="Type" value="<?php echo $Type; ?>"/><br/><br>
 <input type="submit" name="submit" value="Submit">
 </div>
 </form> 

答案 1 :(得分:0)

您可以使用html <datalist><select>标记。

我希望我能提供帮助。

答案 2 :(得分:0)

首先,你需要从mysql_ *切换到mysqli_ *,因为它将在php 7.0中删除我使用我创建的这个功能,它可能会帮助你 这是php代码

function GetOptions($request)
{
global $con;
$sql = "SELECT * FROM data GROUP BY $request ORDER BY $request";
$sql_result = mysqli_query($con, $sql) or die('request "Could not execute SQL query" ' . $sql);
while ($row = mysqli_fetch_assoc($sql_result)) {
echo "<option value='" . $row["$request"] . "'" . ($row["$request"] == $_REQUEST["$request"]  ? " selected" : "") . ">" . $row["$request"] . "$x</option>";
}
}

,html代码就像

<label>genre</label>
<select name="genre">
<option value="all">all</option>
<?php
GetOptions("genre");
?>
</select>