2014-03-07 283 views
0

我已經測試了很多代碼,但我無法讓它工作。 我想根據另一個下拉列表的值來填充下拉菜單。 編輯: 我的表名是郵政編碼和我有市,州,郵政編碼,FULLSTATE和zipID 狀態的FULLSTATEMysql根據另一個下拉選項填充下拉列表

縮寫我: 郵政編碼: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天,我很疲憊。我真的不知道把參考頁放在哪裏

+0

您不需要第二個查詢。 GROUP BY可能會給您帶來意想不到的結果。 – Strawberry

回答

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.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

+0

所以腳本將被添加到zipcode.php其中也包含我的HTML表單?留下我只有2個文件(zipcode.php - 表格+腳本)和(help.php - 放在幫助文件夾中) – user3391847

+0

也應該刪除dropchange1 onchange?如果不是的話,我應該在$(function()中添加populatelist嗎?) 仍然無法正常工作我已經在<?php get_header();?>部分添加了zipcode.php中的js部分 也增加了關閉腳本 – user3391847

+0

是的JS腳本應該添加到'zipcode.php'文件中,你的表單和php代碼應該在helper.php中,你必須去掉onchange =「populatelist」'從你的表單和js函數。檢查我上面的更新代碼 –

相關問題