使用 AJAX 如何根据数据库中的可用记录为下拉菜单生成选择?

Posted

技术标签:

【中文标题】使用 AJAX 如何根据数据库中的可用记录为下拉菜单生成选择?【英文标题】:Using AJAX How can I generate selections for a dropdown menu based on records available in a database? 【发布时间】:2015-03-04 17:40:08 【问题描述】:

使用 AJAX 如何根据数据库中的可用记录为下拉菜单生成选择项?

然后如何使用这些选择来在表单中预填充来自数据库的记录/行数据?

这是我创建的我正在尝试做的模型:

http://oi58.tinypic.com/2urb2ae.jpg

php FILE: contact_form.php
-----------------------------------------------------------
<?php

define('DB_NAME', 'xxx');
define('DB_USER', 'xxx');
define('DB_PASSWORD', 'xxx');
define('DB_HOST', 'xxx');

$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);

if(!$connection)
die('Database connection failed: ' . mysqli_connect_error());


$db_selected = mysqli_select_db($connection, DB_NAME);

if(!$db_selected)
die('Can\'t use ' .DB_NAME . ' : ' . mysqli_connect_error());


echo 'Connected successfully';

if (isset($_POST['itemname']))
$itm = $_POST['itemname'];

else 
$itm = '';




if($_POST['mile'])
$mi = $_POST['mile'];
else
echo "Miles not received";
exit;




if($_POST['email'])
$email = $_POST['email'];
else
echo "email not received";
exit;





$sql = "INSERT INTO seguin_orders (itemname, mile, email)
VALUES ('$itm', '$mi', '$email')";

if (!mysqli_query($connection, $sql))
die('Error: ' . mysqli_connect_error($connection));





CONACT FORM: formz.php
------------------------------------------------------------------------------
<html>
<header>



</header>

<body>

<form action="/demoform/contact_form.php" class="well" id="contactForm" method="post" name="sendMsg" novalidate="">

<big>LOAD PAST ORDERS:</big>
<select id="extrafield1" name="extrafield1">
<option value="">Please select...</option>
<?php
$email = $_POST['email'];
$query="select * from tablename WHERE email=$_POST['email']";
$res=mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($res))

?>
<option value="<?php echo $row['fieldname']; ?>"><?php echo $row['fieldname']; ?></option>
<?php

?>
</select>

</br>

<input type="text" required id="mile" name="mile" placeholder="Miles"/>

</br>

<input id="email" name="email" placeholder="Email" required="" type="text" value="demo@gmail.com" readonly="readonly"/>

</br>

<input id="name" name="itemname" placeholder="ITEM NAME 1" required="" type="text" />

</br>

<input type="reset" value="Reset" />


<button type="submit" value="Submit">Submit</button>


</form>


</body>


</html>

【问题讨论】:

您打印选项的循环,将其放在每个下拉列表的不同页面中,使用 Ajax 调用页面,然后使用 javascript 将输出粘贴到命名的 div 中。 感谢您的帮助,但我的编程技能恐怕不是最好的 【参考方案1】:

举个例子,假设您要根据“性别”选择时选择的选项填写“姓名”选择:

<select name="gender" id="gender">
    <option value="m">Male</select>
    <option value="f">Female</select>
</select>

当尚未选择任何内容时,“名称”选择为空:

<select name="name" id="name">
    <option value="NULL">Please select a gender first</option>
</select>

所以,你要做的是:当性别选择得到一些选择时,你用基于性别选择选项的值填充名称选择。

$(document).ready(function() 
    $('select#gender').change(function()
        $('select#name').load('LOAD_NAMES_BASED_ON_GENDER.php?gender='+$(this).val());
    );
);

您负责加载基于性别的名称的 PHP 文件应如下所示:

$gender = $_GET['gender'];
$list = // the way you retrieve your list of names from your DB

然后你将这个 $list 循环到一个选项列表中,例如:

foreach($list as $key=>$value)
    echo '<option value="$key">$value</option>';

就这么简单。 PS:load() 函数是 $.ajax 请求的一种别名,因为这里的唯一目的是检索数据。

【讨论】:

以上是关于使用 AJAX 如何根据数据库中的可用记录为下拉菜单生成选择?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net webforms ajax 更新gridview

如何根据使用 jQuery/AJAX 和 PHP/MySQL 选择的第一个下拉列表填充第二个下拉列表?

如何将模型数据加载到在 Yii 中使用 Ajax 过滤的 Select2 下拉列表

根据 DJango/Ajax 中的第一个选定下拉菜单创建下拉选择

根据下拉值自动填充文本框

如何使用 JSON 数据填充下拉列表作为 jQuery 中的 ajax 响应