简体   繁体   English

PHP-值未以编辑形式显示

[英]PHP - value not displayed in edit form

Even though I put the the php code in the the form to retrieve the value from the database, it didn't display the value in the dropdown list and the textbox. 即使我将php代码放在表单中以从数据库中检索值,它也没有在下拉列表和文本框中显示该值。 The code works fine and can update the value but it didn't display the value after I refreshed the page. 该代码可以正常工作,并且可以更新值,但是刷新页面后它没有显示该值。 It looks fine but can't seem to find the mistake I made. 看起来不错,但似乎找不到我犯的错误。

<?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即可

You directly close your select element; 您直接关闭选择元素;

<select ... />

Note the / . 注意/ As in html specs it will consider the <option> tags as not being part of the <select> . 与html规范中一样,它将认为<option>标记不属于<select>

And as @ParthGoswami said; 正如@ParthGoswami所说; don't forget to echo the values 别忘了echo显值

Here is fixed, clean code. 这是固定的,干净的代码。

Few suggestions for future: Always try to follow best practices like don't use while/loop if you are getting only one record from database. 未来的一些建议:如果您从数据库中仅获得一条记录,请始终尝试遵循最佳实践,例如不要使用while / loop。 Don't use inside while loop, always keep SQL injection in mind when interacting with DB and how to tackle it, follow Code Formatting Pattern etc etc. 不要在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();                                 
}
?>

And use echo because according to w3schools, echo is marginally faster than print. 并使用echo,因为据w3schools所述,echo比打印要快一些。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM