邮编搜索并返回链接

Posted

技术标签:

【中文标题】邮编搜索并返回链接【英文标题】:Postcode search and return a link 【发布时间】:2015-08-10 11:14:42 【问题描述】:

提前感谢您的帮助。

我有一个运行 woocommerence 的 wordpress 网站,并将其设置为多网站。

基本上,我经营一家向客户提供麦当劳和肯德基的企业。每个区域都有自己的站点,这是我建立的多站点的一部分。

主站点的功能是为用户提供指向在其区域内提供的多站点的链接。

我需要在主站点上运行一个简单的代码,这样当用户输入他们的邮政编码或村庄时,它会将他们带到多站点的正确部分。

例如 www.foodtoyourdoor.co.uk 是主站点,当用户点击进入时,用户将输入他们的邮政编码或说村庄“Durham”,它会将他们直接带到 durham.foodtoyourdoor.co.uk。

我已经查看 yourtube 好几个星期了,但找不到任何可以帮助我的东西。

【问题讨论】:

你能把你试过的东西贴出来吗? 请与我们分享一些您已经尝试过的代码。此外,这个问题太宽泛,无法根据您提供的详细信息得出一个好的答案。例如,城市的名称是从哪里来的?它在数据库中,还是有什么可能?尽可能缩小您的问题范围,以获得高质量的答案。 我还没有尝试过任何东西。我没有设置数据库,但我确实有一个包含所有邮政编码的 excel 表,所以可以按照我的猜测导入这个 【参考方案1】:

您需要做的第一步是将站点的经度和纬度存储在数据库中。完成后,您还可以将客户发布的地址转换为经度和纬度:

function getLongitudeAndLatitude($address) 
    $url = 'http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&language=nl&address=' . str_replace(' ','+', $address);
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);  
    $obj = simplexml_load_string($response);

    $lat = null;
    $lon = null;

    if ($obj) 
        $obj = @$obj->result;
        $lat = (@$obj->geometry->location->lat.'');
        $lon = (@$obj->geometry->location->lng.'');
    
    return array( 'latitude' => $lat, 'longitude' => $lon,);

有了这些数据,您就可以计算出客户与站点之间的距离。为此,您可以在mysql 中创建一个例程

CREATE DEFINER=`user`@`localhost` FUNCTION `haversine`(`lat1` FLOAT, `lon1` FLOAT, `lat2` FLOAT, `lon2` FLOAT) RETURNS float
    NO SQL
    DETERMINISTIC
    COMMENT 'Returns the distance in degrees on the Earth             between two known points of latitude and longitude'
BEGIN
    RETURN 111.045*DEGREES(ACOS(
              COS(RADIANS(lat1)) *
              COS(RADIANS(lat2)) *
              COS(RADIANS(lon2) - RADIANS(lon1)) +
              SIN(RADIANS(lat1)) * SIN(RADIANS(lat2))
            ));
END

使用此例程,您可以创建返回最近站点的 SQL

$user_location = getLongitudeAndLatitude($_POST['txt_address']);
if (isset($user_location['latitude']) && isset($user_location['longitude'])) 
    $stmt = $pdo->prepare('SELECT *, haversine(:lat1, :lon1, site.latitude, site.longitude) as distance FROM site ORDER BY distance LIMIT 1');
    $stmt->execute([':lat1' => $user_location['latitude'], ':lon1' => $user_location['longitude']);
    $res = $stmt->fetch(PDO::FETCH_ASSOC);
    var_dump($res);

【讨论】:

谢谢 DarkBee,但我不知道你放了什么。我对这种编程不太满意。 这是***。我们在这里帮助您解决遇到的问题,而不是编写完整的项目/解决方案

以上是关于邮编搜索并返回链接的主要内容,如果未能解决你的问题,请参考以下文章

PHP 部分邮编匹配

php codeigniter 邮编搜索!

如何用漂亮的汤刮掉谷歌搜索的第一个链接

搜索插入位置

基于Python爬取百度返回搜索结果(标题超链接简介)代码

基于Python爬取百度返回搜索结果(标题超链接简介)代码