Mysql根据另一个下拉选项填充下拉列表

时间:2014-03-07 09:24:08

标签: javascript php jquery mysql wordpress

我一直在测试很多代码,但是我无法让它工作。 我想根据另一个下拉列表的值填充下拉列表。 编辑: 我的表名是zipcode,我有CITY,STATE,Zipcode,FULLSTATE和zipID STATE是FULLSTATE的缩写

我有: 邮政编码:PHP

<?php
/* Template Name: Zipcode Help */
?>
<?php get_header(); ?>
<?php
global $wpdb;
$query = "SELECT * FROM zipcode group by FULLSTATE";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
$dd .= "<option value='".$row['STATE']."'>".$row['FULLSTATE']."</option>";
} 
?>
<select name="dropdown1" id="dropdown1" onchange="populatelist">
<option value="empty" selected>--Select State--</option>
<?php echo $dd; ?>
</select>
<select id="city" name="city">
<option value="empty">&nbsp;</option>
</select>
<!--content of the page-->
<div class="container-wrapper clearfix" id="main-content-container">
<div class="container">
<?php if (have_posts()) : while (have_posts()) : the_post();?>
<?php the_content(); ?>
<?php endwhile; endif; ?>
</div>
</div> 

<?php get_footer(); ?>

Jquery的:

function populatelist()
{
var qry=document.getelementbyid('dropdown1').value;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
});
}
}
xmlhttp.open("POST", "help.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("qry="+qry);
}

参考页面:(help.php)

<?php 
/* Template Name: Help */
?>
<?php get_header(); ?>
<?php
global $wpdb;
$value=$_POST['qry'];
$query = "SELECT * FROM zipcode where STATE like '$value'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
$ee .= "<option value='".$row['CITY']."'>".$row['CITY']."</option>";
}     
echo $ee;
mysql_close();
?>
<?php get_footer(); ?>

问题:如果我使用wordpress,我应该把我的help.php放在哪里? 我创建了一个名为“help”的自定义模板,然后在仪表板中创建了一个页面并分配了该模板。它是否正确?我将它上传到主题目录。也把它放在js文件夹中。我不知道我以前从未尝试过jquery:S

我该如何调用jquery? 我把它放在标题上:

<?php wp_enqueue_script('jquery'); ?>
    <?php wp_head() ?>
<script type="text/javascript" src="<?php bloginfo("template_directory"); ?>/js/zipcode.js"></script>
</head>

我已经这样做了3天了,我已经筋疲力尽了。我真的不知道把参考页放在哪里

1 个答案:

答案 0 :(得分:0)

zipcode.php文件中使用以下代码。

<?php
/* Template Name: Zipcode Help */
?>
<?php get_header(); ?>
<?php
global $wpdb;
$query = "SELECT * FROM zipcode group by FULLSTATE";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
  $dd .= "<option value='".$row['STATE']."'>".$row['FULLSTATE']."</option>";
} 
?>
<select name="dropdown1" id="dropdown1">
  <option value="empty" selected>--Select State--</option>
<?php echo $dd; ?>
</select>

<select id="city" name="city">
  <option value="">&nbsp;</option>
</select>

<!--content of the page-->
<div class="container-wrapper clearfix" id="main-content-container">
<div class="container">
<?php if (have_posts()) : while (have_posts()) : the_post();?>
<?php the_content(); ?>
<?php endwhile; endif; ?>
</div>
</div> 

<script type="text/javascript">

$(function () { 

    $('#dropdown1').change(function () {

        var value = $(this).val();

        if (value == "") {

            $("#city").html("<option value=''>Select</option>");

        } else {
            $.ajax({
                type: "POST",
                url: "<?php bloginfo('template_directory'); ?>helper/help.php",
                data: "value=" + value,
                success: function (server_response) {

                    $("#city").html(server_response);

                }

            }); //$.ajax ends here

        } //if else     
        return false
    });

}); // function ends here
</script>

<?php get_footer(); ?>

在你的wordpress主题文件夹中创建一个名为helper的文件夹,并将你的helper.php文件放在那里。

在help.php文件中使用以下代码;

<?php

$value = $_POST['value'];

global $wpdb;
$value= a_href;
$query = "SELECT * FROM zipcode where STATE like '$value'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
    $ee .= "<option value='".$row['CITY']."'>".$row['CITY']."</option>";
}       
echo $ee ;      

?>

我没有测试代码,但我认为它应该可行。如果您有任何疑问,请告诉我。

**确保正确加载Jquery

非常重要:从PHP 5.5.0开始,不推荐使用mysql_query。您应该使用PDO或mysqli扩展。选中此项:http://cz1.php.net/mysql_query