2012-07-23 4 views
1

2 개의 테이블이 있습니다. 기업 및 주소 목록이있는 사람 다른 하나는 우편 번호 목록과 경도 및 위도입니다. 반지름을 확인할 수있는 우편 번호와 마일 수를 입력하는 양식이 있습니다.using array_intersect

모든 반경 항목은 온라인에서 찾은 스크립트에서 작동합니다. 내가 필요한 것은 반경 내에있는 사업체의 내용을 반향시키는 것입니다.

지금까지 2 개의 쿼리가 있습니다. 하나는 모든 엔트리를 db 안에 넣습니다. 다른 하나는 범위 내에서 모든 우편 번호를 얻습니다.

나는 일치하는 것을 찾기 위해 array_intersect를 사용하고 있습니다. 내 문제는 발견 된 첫 번째 항목 만 반환한다는 것입니다. 나는 확실히 이것을 할 수있는 while 루프가 필요하지만 어떻게 해야할지 모른다.

코드 :

 $insideRadius = array_intersect($data, $zipArray); 

는 $ 데이터가 모든 우편 번호 비즈니스 테이블입니다. $ zip 배열은 범위 내의 모든 우편 번호입니다.

+0

어떻게 당신이 뭔가를 누락 될 수 있지만, 당신은 단지 우편 번호에 대한 좌표 (아닌 기업과 주소)이있는 경우 어떤 것들이 x 마일 이내인지 알기 위해서 ... 어디서나 – Vatev

+0

위도와 위도가 긴 테이블에도 우편 번호가 있습니다. 죄송합니다. 내가 그 –

+0

을 말하지 않았다면, 당신은 근본적으로 우편 번호에'JOIN '하고 싶습니까? – Vatev

답변

2

$ zipArray에 우편 번호가 나열된 업체를 선택할 수 없습니까?

PHP에서

"SELECT * FROM business WHERE zipcode IN (" . implode(",", $zipArray) . ")"

당신은 다음과 같이 실행할 수 있습니다 :

$result = mysql_query("SELECT * FROM business WHERE zipcode IN (" . implode(",", $zipArray) . ")"); 
while ($row = mysql_fetch_assoc($result)) 
{ 
    echo $row["name"] . "<br />"; 
    echo $row["zipcode"] . "<br />"; 
} 
+0

네가 성공했으나 나에게 1 개의 엔트리 만 돌려 주었다. 내 테이블에 2 개의 엔트리가있다. 서로 5 마일 이내에 있으며 쿼리와 일치하는 첫 번째 쿼리 코드 만 표시됩니다. –

+0

이 쿼리를 실행하면 결과를 반복해야합니다. 각 반복에서 하나의 행만 가져올 수 있습니다. 이 쿼리를 시도해 볼 수 있습니까? 작동하지 않는 경우 쿼리를 실행하고 결과를 조사하는 PHP 코드를 게시하십시오. –

+0

일부 MySQL 클라이언트 (예 :'SELECT * FROM business WHERE zipcode IN (100,200,300)')에서 수동으로 실행하여 문제가 쿼리 또는 PHP 코드의 어딘가에 있는지 확인하십시오. – Vatev