[英]dynamic select list in php with mysql
在MySQL中使用选择列表创建了一个列表。 我有一个c_code,表中心的mysql数据,并且有数据1. id,2。 名称3。 码。 我想在数据列表中选择名称后从mysql数据中选择名称,但要显示与该名称对应的代码,而不使用选择下拉列表中的任何提交按钮,并且代码显示在标签或输入文本框中。
这是我的完整代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title
</head>
<body>
<form id="form1" name="form1" action="" , method="post" >
<div>
<label for="list">Center</label>
<select name="list">
<option value=''>-----SELECT-----</option>
<?php
$conn = mysqli_connect('localhost', 'root', '');
$result = mysqli_query($conn, 'SELECT id,name,code FROM center');
while ($row = mysqli_fetch_assoc($result)) {
echo "<option value='$row[id]'>$row[name]</option>";
}
?>
</select>
</div>
</form>
</body>
</html>
首先,让我们整理一下代码...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>
</head>
<body>
<form id="form1" name="form1" action="" method="post">
<div>
<label for="list">Center</label>
<select name="list">
<option value=''>-----SELECT-----</option>
<?php
$conn=mysqli_connect('localhost','root','');
$result=mysqli_query($conn,'SELECT id,name,code FROM center');
while($row=mysqli_fetch_assoc($result)) {
echo "<option value='$row[id]'>$row[name]</option>";
}
?>
</select>
</div>
</form>
</body>
</html>
其次,PHP无法在HTML中动态地执行任何操作,PHP是服务器端脚本,在用户操作后如果不刷新页面便无法回传数据。
您正在寻找$ .ajax(); 解。 我建议您在http://api.jquery.com/jQuery.ajax/上进行调查
祝好运!
您应该写出表单之外的选择标签,因为在提交表单之前不会填充此列表
希望它是您所需要的。 您可以在ID和名称上选择下拉菜单。 选择元素后,将提交表单,并执行新的sql查询将返回代码。 还有其他几种返回代码的方法,这只是一种简单的方法
注意,我没有使用准备好的语句! 因为我现在头上没有正确的synatx,所以您应该考虑准备好的语句的一般实现。
<form id="form1" name="form1" action="" method="post" >
<div>
<label for="list">Center</label>
<select name="list" onchange="this.form.submit()">
<option value=''>-----SELECT-----</option>
<?php
$conn = mysqli_connect('localhost', 'root', '');
$result = mysqli_query($conn, 'SELECT id,name FROM center');
while ($row = mysqli_fetch_assoc($result))
{
$selected = (isset($_POST['list']) && $_POST['list'] == $row['id']) ? 'selected' : '';
echo "<option value='$row[id]' $selected >$row[name]</option>";
}
?>
</select>
</div>
<div>
<?php
if (isset($_POST['list']))
{
$result = mysqli_query($conn, 'SELECT code FROM center WHERE id=' . $_POST['list']);
while ($row = mysqli_fetch_assoc($result))
{
echo $row['code'];
}
}
?>
</div>
</form>
尝试通过串联分别回显$row
变量。 所以换这行
echo "<option value='$row[id]'>$row[name]</option>"
至
echo "<option value=". $row[id] .">".$row[name]."</option>"
或者你可以这样使用转义字符
echo "<option value={$row[id]}>{$row[name]}</option>"
我认为现在您的选择选项将起作用。
如果我理解正确,那么您正在尝试做与发现此解决方案之前相同的事情...
我正在创建一个下拉菜单,用于选择每页显示多少个结果。 总共6个选项,我将它们存储在一个数组中...
$page_sizes = array(10, 25, 50, 100, 200, 500);
接下来,我使用“ foreach”构建选项列表...以及一条if语句,仅当该选项与当前页面大小匹配时才显示该选项(页面大小是在脚本中使用$ page_size变量在前面确定的)。 ..
foreach($page_sizes as $pagesize_opt){
($pagesize_opt == $page_size) ? $pagesize_options .= '<option selected="selected" value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>':
$pagesize_options .= '<option value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>';
}
然后,我将我的选择插入下拉菜单中...
$page_size_select = '<strong>Results Per Page </strong><select id="analytics_page_size_select">'.$pagesize_options.'</select>';
您可以使用“ while”迭代器进行相同的操作。 只要检查一下数组元素是否与您选择的元素匹配即可。
或者,如果您想花哨并使用关联数组,该数组通过键而不是通过值选择选项,则可以使用“ key()”函数获取键并测试其是否与所选键匹配。 。
http://php.net/manual/zh/function.key.php
所以整个代码看起来像这样...
$page_sizes = array(10, 25, 50, 100, 200, 500);
foreach($page_sizes as $pagesize_opt){($pagesize_opt == $page_size) ? $pagesize_options .= '<option selected="selected" value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>':
$pagesize_options .= '<option value="'.$pagesize_opt.'">'.$pagesize_opt.'</option>';
}
$page_size_select = 'Results Per Page '.$pagesize_options.'';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.