[英]How do I store value in my database in a dynamic dropdown list?
这是PHP / mySQL中的动态下拉列表。 我想将名称存储在数据库服务器中,但是标签输出整数值。
如果我将代码从<option value="<?php echo $row["id"]; ?>">
更改为<option value="<?php echo $row["name"]; ?>">
显示my_sqli_fetch_array预期参数1错误。
我的目标是存储在下拉列表中显示的相应$ row [“ name”]而不是$ row [“ id”]。
<?php
$link = mysqli_connect("localhost","root", "");
mysqli_select_db($link,"loginsystem");
?>
<form name="form1" action="" method="post">
<table>
<tr>
<td>Select Assembly Line</td>
<td><select id ="assemblylinedd" onChange="change_assemblyline()">
<option>Select</option>
<?php
$i=1;
$res=mysqli_query($link, "SELECT * FROM assemblyline");
$count=mysqli_num_rows($res);
if ($count >0){
while($row=mysqli_fetch_array($res))
{
?>
<option value="<?php echo $row["id"]; ?>"><?php echo $row["name"]; ?></option>
}
<?php $i++;} }else{
echo "No record Found !";
} ?>
</select></td>
</tr>
脚本代码:
<script type="text/javascript">
function change_assemblyline()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","ajax.php?assemblyline="+document.getElementById("assemblylinedd").value, false);
xmlhttp.send(null);
alert(xmlhttp.responseText);
document.getElementById("devices").innerHTML=xmlhttp.responseText;
}
这是我的ajax.php
$link = mysqli_connect("localhost","root", "");
mysqli_select_db($link,"loginsystem");
$assemblyline = isset($_GET['assemblyline']) ? $_GET['assemblyline'] : '';
$devices = isset($_GET['devices']) ? $_GET['devices'] : '';
if($assemblyline!="")
{
$res=mysqli_query($link, "SELECT * FROM devices WHERE devices_id=$assemblyline");
echo "<select id='devicesdd' onchange='change_devices()'>";
while($row=mysqli_fetch_array($res))
{
echo "<option value='$row[id]'>";echo $row["name"]; echo "</option>";
}
echo "</select>";
}
请不要忽略onchange_devices(),因为在下一个连续的下拉列表中,它也一样。
虽然,这是您在DB中保存设备名称的要求,但建议保存数字ID。
原因:名称可能会更改,但是ID将保留。
如果说您的设备id:名称为99 : iPhone 6
并保存在DB: iPhone 6
,则名称将更改为iPhone6
。
在这种情况下,如果您搜索名称为iPhone6
记录,显然,上面的记录将不会显示。
如果保存数字ID,则无论名称更改如何,它都会显示。
回到您的问题:
我不能在这里写代码。 但是伪代码逻辑会有所帮助(希望如此):
采取隐藏字段device_name
。
更改下拉列表时,使用jQuery
将值分配给隐藏字段。
$("#assemblylinedd option:selected").text();
现在,提交后,您将在隐藏字段中获得device_name
。
$devices = isset($_GET['device_name']) ? $_GET['device_name'] : '';
将此保存到数据库。
$link = mysqli_connect("localhost","root", "");
mysqli_select_db($link, "loginsystem");
$assemblyline = isset($_GET['assemblyline']) ? $_GET['assemblyline'] : '';
$devices = isset($_GET['devices']) ? $_GET['devices'] : '';
if(!empty(trim($assemblyline)))
{
$res = mysqli_query($link, "SELECT * FROM devices WHERE devices_id = '$assemblyline'");
echo "<select id='devicesdd' onchange='change_devices()'>";
while($row = mysqli_fetch_array($res))
{
echo "<option value='" . $row["id"] . "'>" . $row["name"] . "</option>";
}
echo "</select>";
}
!= ""
,该支票以前并未阻止传递单个空格。 $row[id]
。 注意:最好返回一个带有ID和名称的JSON数组对象,而不是通过AJAX输出HTML,这将使您的代码库在将来更加整洁和适应。
阅读材料
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.