邮政编码列在PHP / JSON / MySQL中

时间:2015-07-08 13:26:35

标签: php mysql json

我有一个约980万邮政编码的数据库,以及一个用户可以输入邮政编码,城市,州和/或国家的表格。我最终想创建一个脚本,根据另一个字段的结果自动填充其他字段,但在我到达那里之前,我很好奇将这些数据量解析为选择框的最佳方式是什么表格。这甚至不是合适的方式吗?到目前为止,我有代码,只是寻找一些伪代码或想法。

数据库看起来像这样 enter image description here

1 个答案:

答案 0 :(得分:0)

所以我从Sakamaki Izayoi接受了推荐,并找到了我修改过的脚本来处理我的应用程序。一旦达到3个字符,它就会在我的数据库中搜索~980k邮政编码并立即返回结果。

让我知道你们这些人的想法。

表格

<input type="text" id="quote_shipper_postalcode" name="quote_shipper_postalcode" class="form-control" maxlength="5">

JAVASCRPIT

$(document).ready(function(){
var ac_config = {
    source: "ajax/ajax_postal_codes.php",
    select: function(event, ui){
        $("#quote_shipper_city").val(ui.item.city);
        $("#quote_shipper_state").val(ui.item.state);
        $("#quote_shipper_postalcode").val(ui.item.zip);
        $("#quote_shipper_country").val(ui.item.country);
    },
    minLength:3
};
$("#quote_shipper_postalcode").autocomplete(ac_config);

});

ajax脚本

<?php
include_once('../config/config.php'); 


// Cleaning up the term
    $term = trim(strip_tags($_GET['term']));

//search the database for only the first three digits to make it not such a huge query
    $zip_3 = $term;

// Rudimentary search
    $matches = array();

    foreach(list_postal_codes($db_pdo,$zip_3) as $zip){
        if(stripos($zip['zip'], $term) == false){
            $zip['value'] = $zip['zip'];
            $zip['label'] = "{$zip['zip']}, {$zip['city']} {$zip['state']} {$zip['country']}";
            $matches[] = $zip;
        } 
    } 

    if ($matches == false) { $matches[] = $zip_3 . " not found"; }


            $matches = array_slice($matches, 0, 15);
            print json_encode($matches);

数据库查询

    function list_postal_codes($db_pdo,$zip_3) {

    //zip 3 is only the first 3 digits of the zip

    return $db_pdo->query("SELECT `postal_code_city` AS `city`,`postal_code_state` AS `state`,`postal_code_ctry` AS `country`, `postal_code_code` AS `zip` FROM `postal_codes` WHERE `postal_code_code` LIKE '" . $zip_3 . "%'");

}   
  

块引用