【问题标题】:Mysql Populating dropdown based on another dropdown choice基于另一个下拉选项的 Mysql 填充下拉列表
【发布时间】:2014-04-10 08:45:59
【问题描述】:

我已经为此测试了很多代码,但我无法让它工作。 我想根据另一个下拉列表的值填充一个下拉列表。 编辑: 我的表名是 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 放在哪里? 我创建了一个名为“帮助”的自定义模板,然后在仪表板中创建了一个页面并分配了该模板。它是否正确?我把它上传到主题目录。也把它放在 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 天了,我已经筋疲力尽了。我真的不知道把参考页放在哪里

【问题讨论】:

  • 您不需要第二次查询。并且 GROUP BY 可能会给您带来意想不到的结果。

标签: javascript php jquery mysql wordpress


【解决方案1】:

在您的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 已正确加载

非常重要mysql_query 自 PHP 5.5.0 起已弃用。您应该使用 PDO 或 mysqli 扩展。检查这个:http://cz1.php.net/mysql_query

【讨论】:

  • 所以脚本将被添加到 zipcode.php 中,其中还包含我的 html 表单?只留下 2 个文件(zipcode.php - 表单 + 脚本)和(help.php - 放入帮助文件夹)
  • 另外,我应该删除 dropdown1 onchange 吗?如果不是,我是否应该在 $(function ()? /script> 关闭脚本
  • 是的,JS 脚本应该添加到您拥有表单的zipcode.php 文件中,并且 php 代码应该在 helper.php 中。您必须从表单以及 js 函数中删除 onchange="populatelist"。检查我上面的更新代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
相关资源
最近更新 更多