PHP,Javascript和SQL代码混淆了

时间:2012-08-29 12:24:28

标签: php javascript sql

您好我有这个代码将从数据库中提取客户端名称和地址。 它将每个条目的客户端名称回显到下拉列表(<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>

4 个答案:

答案 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
                    });
            });