在 Mysql 中插入 PHP 值后如何显示最后选择的下拉值?

Posted

技术标签:

【中文标题】在 Mysql 中插入 PHP 值后如何显示最后选择的下拉值?【英文标题】:How to show the last selected dropdown value after insert PHP values in Mysql? 【发布时间】:2018-10-09 13:45:42 【问题描述】:

我有很多作者和发布者的列表,它们要通过 php 插入到 mysql 中,但每次我都必须在 "Add Writer""Add Publisher" 之间进行选择strong> 在插入每个 作者/发布者 详细信息后手动进行。

我希望在 Mysql 中插入值时所选值不会自动更改,(直到它被用户更改)即,即使在插入值之后,所选选项保持不变(由用户选择),直到用户更改。

index.php

<?php
include "dbConfig.php"; 

/*Adding Writer*/
if(isset($_POST['addwrt']))

    $writerid=$_POST['writerid'];
    $wname=$_POST['wname'];
    $wcity=$_POST['wcity'];


    $resultw=mysqli_query($db,"insert into wdetails(writerid,wname,wdesg,salutation,wcity)values('$writerid','$wname','$wdesg','$salut','$wcity')");
    



/*Adding Publisher*/
else if(isset($_POST['addpubl']))

    $publisherid=$_POST['publisherid'];
    $pname=$_POST['pname'];
    $pcity=$_POST['pcity'];



    $resultp=mysqli_query($db,"insert into pdetails(publisherid,pname,pdesg,pcity)values('$publisherid','$pname','$pdesg','$pcity')");
    

?>
<body>
<select id="stf">
<option value="cf" selected="selected" />Select the Field
<option value="addwriter" />Add Writer
<option value="addpublisher" />Add Publisher
</select>

<form method="post" name="libraryAdd">
<div id="addwriter" style="display:none">
<table>

<tr>
<td>Writer ID<span style="color:red"><b>*</b></span></td>
<td>W&nbsp;<input type='text' name="writerid"></td>
</tr>

<tr>
<td>Writer Name<span style="color:red"><b>*</b></span></td>
<td><input type="text" name="wname" /></td>
</tr>

<tr>
<td>Writer City<span style="color:red"><b>*</b></span></td>
<td><input type="text" name="wcity" /></td>
<td><input name="addwrt" type="submit" value="ADD Data"></td>
</tr>

</table>
</div>

<div id="addpublisher" style="display:none">
<table>

<tr>
<td>Publisher ID<span style="color:red"><b>*</b></span></td>
<td>P&nbsp;<input type='text' name="publisherid"></td>
</tr>

<tr>
<td>Publisher Name<span style="color:red"><b>*</b></span></td>
<td><input type="text" name="pname" /></td>
</tr>

<tr>
<td>Publisher City<span style="color:red"><b>*</b></span></td>
<td><input type="text" name="pcity" /></td>
<td><input name="addpubl" type="submit" value="ADD Data"></td>
</tr>

</table>
</div>

</form>
</body>

.js 文件链接到 index.php

 $(document).ready(function() 
    $('#stf').change(function()
        var value=$(this).val();
        if(value === "addwriter")
       $("#addwriter").show('slow');
       $("#addpublisher").hide('slow');
       
       else if(value === "addpublisher")
       $("#addpublisher").show('slow');
       $("#addwriter").hide('slow');
       
        else 
         $("#addwriter").hide('slow');
         $("#addpublisher").hide('slow');
     
    );
 );

dbConfig.php

<?php
//Database credentials
$dbHost     = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName     = 'library';

//Connect and select the database
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

if ($db->connect_error) 
    die("Connection failed: " . $db->connect_error);

?>

【问题讨论】:

警告:使用mysqli 时,您应该使用parameterized queries 和bind_param 将用户数据添加到查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 【参考方案1】:

发生这种情况的原因是在您的选择中您有:

<option value="cf" selected="selected" />Select the Field

这意味着选择将始终以“选择字段”开始。

如果您希望最后选择的选项在表单提交后保持选中状态,您应该将选择代码更改为:

<option value="cf" <?php if (!isset($_POST['addwrt']) && !isset($_POST['addpubl'])) echo 'selected="selected"'; ?> >Select the Field
<option value="addwriter" <?php if (isset($_POST['addwrt'])) echo 'selected="selected"'; ?> >Add Writer
<option value="addpublisher" <?php if (isset($_POST['addpubl'])) echo 'selected="selected"'; ?> >Add Publisher

您还需要进行以下更改以确保出现适当的输入框。改变

<div id="addwriter" style="display:none">
<div id="addpublisher" style="display:none">

到:

<div id="addwriter" <?php if (!isset($_POST['addwrt'])) echo 'style="display:none"'; ?> >
<div id="addpublisher" <?php if (!isset($_POST['addpubl'])) echo 'style="display:none"'; ?> >

【讨论】:

谢谢,但第一次插入后,输入框不再显示以插入第二个作者详细信息。问题出在哪里?请帮助...

以上是关于在 Mysql 中插入 PHP 值后如何显示最后选择的下拉值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从下拉列表中获取值并插入 MySQL Workbench?

如何在 PHP 中获取 MySQL 表的最后插入 ID?

PHP形式的mysql插入语句

即使在分配值后显示 nil 的弱可选变量?

多选字段仅提交最后选择的选项

为啥我无法在 PHP 和 MySQL 中获取最后一个插入 ID?