【发布时间】:2021-10-21 22:49:44
【问题描述】:
所以我可以使用数据库中的信息填充下拉列表,但是我需要做的是,当我单击下拉列表中的选项时,它应该在文本框中显示该选定选项的电子邮件。所以本质上,选择下拉菜单,选择公司,然后它从数据库中提取信息(电子邮件)并将其插入文本框
请帮忙?
PHP/HTML 页面
<div class="customerInfo">
<div class="blockSelect">
<div class="select" style="margin-right: 5px;">
<select name="cat" id="cat">
<option value="" disabled selected>Customer</option>
<?php
$records = mysqli_query($conn, "SELECT company FROM clients");
while($data = mysqli_fetch_array($records))
{
echo "<option value='". $data['company'] ."'>" .$data['company'] ."</option>"; // displaying data in option menu
}
?>
</select>
<?php mysqli_close($conn); // close connection ?>
</div>
</div>
<div class="blockSelect">
<input type="text" name="mail" id="mail" style="color: black; border-bottom: 1px solid;">
</div>
</div>
AJAX 代码
$('#cat').change(function(){
var package = $(this).val();
$.ajax({
type:'POST',
data:{package:package},
url:'get_details.php',
success:function(data){
$('#mail').val(data);
}
});
get_details.php
<?php
include("server.php");
if (isset($_POST['package'])) {
$qry = "SELECT * FROM clients WHERE company=" . $_POST['package'];
$rec = mysql_query($qry);
if (mysql_num_rows($rec) > 0) {
while ($res = mysql_fetch_array($rec)) {
echo $res['email'];
}
}
die();
}
?>
【问题讨论】:
-
您的代码可用于 sql 注入 how-can-i-prevent-sql-injection-in-php 并且您还使用
mysql和mysqli仅使用mysqli -
console.log 你
package变量。它是否显示正确的价值?在你的 PHP 中使用 xdebug 或者如果你不使用var_dump变量来查看你在哪里得到了什么。如果我查看您的代码,您会返回 1 个结果,因此请在查询中使用限制 1,您也只需要电子邮件,因此您可以仅将查询中的*替换为email,这样您获得的数据传输量就会减少您的数据库 -
谈谈代码格式...
-
@baracuda078,谢谢我根据需要进行了更改,但仍然遇到同样的问题。
-
给定的代码有什么问题? 究竟是什么不起作用?您尝试过什么来解决问题?