2017-08-25 18 views
-1

我使用国家下拉菜单选择国家和一个国家下拉选择状态。我想要做的是,当用户选择国家选定国家的国家填充状态下降。

问题是,当使用国家名称它不起作用,但如果我使用一个数字,然后它做它应该做的。我在下面列出了所有的代码。

我的PHP代码

<?php 
    include('connection/config.php'); 
    $country = $_GET['country']; 
    $qqry = "SELECT state FROM tbl_cc_formate WHERE country LIKE '%$country%'"; 
    $r = mysql_query($qqry); 
    $resultState = array(); 
    while ($row = mysql_fetch_array($r)) { 
     $resultState[] = $row[0]; 
    } 
    $encodState = json_encode($resultState); 
    echo $encodState; 
    ?> 

我的jQuery代码

function loadState(country) 
     { 
      $.ajax({ 
        url:'cardstate.php', 
        type: 'get', 
        data:{'country':country}, 
        dataType: 'json', 
        contentType: 'application/json; charset=utf-8', 
        success: function(data) 
        { 
         $.each(data, function (index, item) { 
         $('#state').append(
         $('<option></option>').val(item).html(item)); 
         }); 
        } 
       }); 
     } 

我的HTML代码

<select id="country" name="country" onchange="loadState(this.value)"> 
    <option selected value="">- ALL -</option> 
    <option value="Pakistan">Pakistan</option> 
</select> 
Select State:      
<select id="state" name="state"> 
<option selected value="">- Select Country -</option> 
</select> 
+1

停止使用'mysyql_ *'它已被弃用切换到'mysqli_ *'或'PDO'并且您的代码可能会被使用SQL注入攻击,因此请在_prepares语句_上阅读。我不认为你需要使用'LIKE'部分作为'%$ country%',只要去掉'%'即可。 – Sand

+0

因为你使用GET方法,你可以将数据附加到你的URL像'cardstate.php?country = england' – heysulo

+0

是亲爱的谢谢你的建议,它的工作时,我从MySQL选择*数据,但是当我使用where子句与$ _POST ['country']不起作用。 –

回答

2

什么错误,如果有的话,你收到了吗?您是否在jQuery代码中安装了data?你测试如果php的echo $encodState输出任何东西?也可能存在连接问题。所以我们需要知道你遇到了什么错误。

+0

亲爱的莲,我测试我的查询其工作没有where子句,但是当我使用where子句与常量值其工作正常,但是当我使用$ _POST ['国家']它不工作。 –

+0

在这种情况下,您只需确保$ country不为空。试试这个:'$ country =(isset($ _ GET ['country'])AND!empty($ _ GET ['country']))? $ _GET ['country']:“”;'然后,'if(empty($ country))$ country = $ _POST ['country'];'。你可能也想清理你的代码。 – Lian

相关问题