您好我有这个代码将从数据库中提取客户端名称和地址。
它将每个条目的客户端名称回显到下拉列表(<option value="<?php echo "$client" ?>"><?php echo "$client" ?></option>
),这是在while循环中完成的。
然后我有一个Javascript,当你在下拉列表中选择一个选项时,它将改变名为'content'的DIV的innerHTML - 这是基于从数据库中提取的内容而言是唯一的。 - 这是我无法工作的地方..以下是我的代码,非常感谢任何帮助。
<div id="selectBox">
<div class="ui-widget">
<form>
<label>Select a Client:</label>
<select id="combobox" >
<option value="">Select...</option>
<?php
include "db_conn.php";
callDB();
function callDB(){
$sql = 'SELECT * FROM clientlist';
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
$ID= $row['id'];
$client= $row["client"];
$postal_add= $row["postal_add"];
?>
<option value="<?php echo "$client" ?>"><?php echo "$client" ?></option>
<?php
}} ?>
</select>
</form>
</div>
</div>
<br>
<div id="content">
</div>
</div>
<script type="text/javascript">
// Script for changing Div
function change()
{
switch (document.getElementById("combobox").value)
{
case "<?php echo $client ?>":
document.getElementById("content").innerHTML = "<h2><?php echo $client ?></h2><b>Postal Address:</b> <?php echo $postal_add ?>"
break;
}
}
</script>
答案 0 :(得分:1)
您在<?php echo "$client" ?>
字样中缺少分号。它应该是<?php echo "$client"; ?>
。编辑:这实际上是不需要的,结尾?&gt;自动关闭声明。
要添加更多内容,因为@Witty表示您没有将$ client变量存储在循环之外,因此您无法访问它!改变它!
答案 1 :(得分:1)
您创建了填充div元素的函数。但是,此时,只定义了该函数,它永远不会被执行。
你需要为选择框设置一个onchange处理程序来调用你的javascript函数。
此外,正在输出到您的javascript中的php不在您的while循环中。
答案 2 :(得分:0)
当执行Javascript(客户端)时,PHP已经完成(服务器)。您需要在While-Loop中从PHP构建Javascript,然后在页面中将其发送到浏览器:
// in while
$javascript .= "case $client:
document.getElementById('content').innerHTML = '<h2>$client</h2>
<b>Postal Address:</b>$postal_add'
break;"
// later in page
switch (document.getElementById("combobox").value)
{
<?php echo $javascript; ?>
}
答案 3 :(得分:0)
使用ajax根据下拉列表中选定的选项更新您的div
$('#dropdown').change(function() {
var id = $("#option").val();
var url = ajax action from where u will get the data for the selected option
var data = {OptionID:id};
$.ajax({
type: 'POST',
url: url,
data: data,
success: function(data)
{
append the values in div here using div.innerhtml
});
});