[英]PHP - value not displayed in edit form
即使我将php代码放在表单中以从数据库中检索值,它也没有在下拉列表和文本框中显示该值。 该代码可以正常工作,并且可以更新值,但是刷新页面后它没有显示该值。 看起来不错,但似乎找不到我犯的错误。
<?php
require("config.php");
$id = $_GET['id'];
$sql = "SELECT * FROM contracts WHERE id= '$id'";
$result = $con->query($sql);
while ($row = $result->fetch_assoc())
{
$client_type = $row['client_type'];
?>
<html>
<head>
<title> Submit a Contract </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
ID: <?php echo $id; ?><br>
<input type="hidden" name="id" value="<?php echo $id; ?>" />
Division:
<select name="client_details" />
<option value="Choose" <?php $row['client_details'] == 'Choose' ? print "selected" : ""; ?> />Choose Division...</option>
<option value="Distribution" <?php $row['client_details'] == 'Distribution' ? print "selected" : ""; ?> />Distribution</option>
<option value="Transmission" <?php $row['client_details'] == 'Transmission' ? print "selected" : ""; ?> />Transmission</option>
<option value="Generation" <?php $row['client_details'] == 'Generation' ? print "selected" : ""; ?> />Generation</option>
<option value="Procument" <?php $row['client_details'] == 'Procument' ? print "selected" : ""; ?> />Procument</option>
<option value="Other" <?php $row['client_details'] == 'Other' ? print "selected" : ""; ?> />Others</option>
</select>
<br><br>
Others:
<input type="text" name="client_details" value="<?php $row['client_details']; ?>">
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
<?php
}
if(isset($_POST['submit']))
{
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;
if($client_details == 'Other'){
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;
}
$query = "UPDATE contracts set `client_details` = '$client_details' WHERE `id` = '$id'";
if ($con->query($query) === TRUE)
{
echo "<br><br> Updated successfully <br>";
echo $query;
}
else {
echo "Error: " . $query . "<br>" . $con->error;
}
$con->close();
}
?>
<option value="Choose" <?php echo $row['client_details'] == 'Choose' ? print "selected" : ""; ?> />Choose Division...</option>
您的代码很好,只需添加echo即可
您直接关闭选择元素;
<select ... />
注意/
。 与html规范中一样,它将认为<option>
标记不属于<select>
。
正如@ParthGoswami所说; 别忘了echo
显值
这是固定的,干净的代码。
未来的一些建议:如果您从数据库中仅获得一条记录,请始终尝试遵循最佳实践,例如不要使用while / loop。 不要在while循环内使用,在与DB交互以及如何解决它,遵循代码格式化模式等时始终牢记SQL注入。
<?php
require("config.php");
$id = filter_input(INPUT_GET, 'id');
?>
<html>
<head>
<title> Submit a Contract </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
ID: <?php echo $id; ?><br>
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<?php
$sql = "SELECT * FROM contracts WHERE id = $id";
$result = $con->query($sql);
$row = $result->fetch_assoc();
$client_type = $row['client_type'];
?>
Division:
<select name="client_details">
<option value="Choose" <?php $row['client_details'] == 'Choose' ? echo "selected" : ""; ?> />Choose Division...</option>
<option value="Distribution" <?php $row['client_details'] == 'Distribution' ? echo "selected" : ""; ?> />Distribution</option>
<option value="Transmission" <?php $row['client_details'] == 'Transmission' ? echo "selected" : ""; ?> />Transmission</option>
<option value="Generation" <?php $row['client_details'] == 'Generation' ? echo "selected" : ""; ?> />Generation</option>
<option value="Procument" <?php $row['client_details'] == 'Procument' ? echo "selected" : ""; ?> />Procument</option>
<option value="Other" <?php $row['client_details'] == 'Other' ? echo "selected" : ""; ?> />Others</option>
</select>
<br><br>
Others:<input type="text" name="client_details" value="<?php $row['client_details']; ?>">
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
<?php
if(isset($_POST['submit'])) {
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;
if($client_details == 'Other') {
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;
}
$query = "UPDATE contracts set `client_details` = '$client_details' WHERE `id` = '$id'";
if ($con->query($query) === TRUE) {
echo "<br><br> Updated successfully <br>";
echo $query;
} else {
echo "Error: " . $query . "<br>" . $con->error;
}
$con->close();
}
?>
并使用echo,因为据w3schools所述,echo比打印要快一些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.