在 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 <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 <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 值后如何显示最后选择的下拉值?的主要内容,如果未能解决你的问题,请参考以下文章