2012-11-08 3 views
1

그룹의 위치를 ​​코딩 중이므로 사용자가 위치를 기준으로 검색하여 가장 가까운 그룹을 찾을 수 있습니다. 필드는 country, state, city, neighborhood입니다. 미국에 10 개의 그룹이 있다고 가정 해 봅시다. 나는 옵션 10 번을 열거하고 싶지 않습니다. strpos에 추가하여 한 번만 나열 할 것이지만 오류가 발생합니다. 그것은 다음과 같은 오류를 출력양식에 strpos 오류가 있습니다.

<?php 
$myQuery = "select country, state, city, neighborhood from groups WHERE group_status = 'open to new members'"; 

$rs = mysql_query($myQuery); 

$country_options = $state_options = $city_options = $neighborhood_options = ''; 

while($get_row = mysql_fetch_assoc($rs)){ 

$pos_country = strpos($get_row['country'], $country_options); 

if($pos_country === false) { 
echo $country_options .= "<option value='" . $get_row['country'] . "'>" . $get_row['country'] . "</option>";} 

$pos_state = strpos($get_row['state'], $state_options); 
if($pos_state === false) { 
echo $state_options .= "<option value='" . $get_row['state'] . "'>" . $get_row['state'] . "</option>";} 

$pos_city = strpos($get_row['city'], $city_options); 
if($pos_city === false) { 
echo $city_options .= "<option value='" . $get_row['city'] . "'>" . $get_row['city'] . "</option>";} 

$pos_neighborhood = strpos($get_row['neighborhood'], $neighborhood_options); 
if($pos_neighborhood === false) { 
echo $neighborhood_options .= "<option value='" . $get_row['neighborhood'] . "'>" . $get_row['neighborhood'] . "</option>";} 

} 
?> 

:

다음은 PHP 코드의 국가, 주, 도시, 지역 : 올바른 필드가있는 좋은 형태를 가지고 오류 밑에

Warning: strpos(): Empty delimiter in sidebar.php on line 66

Warning: strpos(): Empty delimiter in sidebar.php on line 70

Warning: strpos(): Empty delimiter in sidebar.php on line 73

Warning: strpos(): Empty delimiter in sidebar.php on line 76

. 같은 국가를 여러 번 나열하는 것입니다.

답변

3

strpos()delimiter는 전달 된 두 번째 매개 변수 당신의 코드에서

, 당신은 밖으로 시작합니다.

$country_options = $state_options = $city_options = $neighborhood_options = ''; 

이 각은 구분 기호로 사용하는 값이며, 그들은 모두 비어 있습니다 - 따라서 귀하의 오류. 다음에 주어진 키를 사용하여 strpos() 수표를 수행하면 다음에으로 설정합니다. 예를 들어 :

$pos_country = strpos($get_row['country'], $country_options); 
if($pos_country === false) { 
    echo $country_options .= "<option value='" . $get_row['country'] . "'>" . $get_row['country'] . "</option>"; 
} 

난 당신이 $country_options으로 검색하는 것을 문자 모르겠지만, 즉시 (하나 개 정말 긴 구분되는) 그것에 <option></option> 태그를 추가합니다. 아마도 당신이 찾고있는 문자로 잘못된 변수를 사용하고 있습니까?

편집 질문을 다시 읽은 후, 나는 당신이 (내가 생각하는) 달성하려는 목표를 이해
. 동일한 국가, 주, 도시 또는 지역을 한 번 이상 표시하고 싶지는 않습니다.

이렇게하려면 "봤어"값의 배열을 유지하고 각 루프에서 해당 배열을 확인하는 것이 더 쉬울 수도 있습니다. 다음과 같이 시도하십시오 :

$countries = array(); 
$states = array(); 
$cities = array(); 
$neighborhoods = array(); 

while($get_row = mysql_fetch_assoc($rs)) { 
    if (!in_array($get_row['country'], $countries)) { 
     $country_options .= '<option value="' . $get_row['country'] . '">' . $get_row['country'] . '</option>'; 
     $countries[] = $get_row['country']; 
    } 

    if (!in_array($get_row['state'], $states)) { 
     $state_options .= '<option value="' . $get_row['state'] . '">' . $get_row['state'] . '</option>'; 
     $states[] = $get_row['state']; 
    } 

    if (!in_array($get_row['city'], $cities)) { 
     $city_options .= '<option value="' . $get_row['city'] . '">' . $get_row['city'] . '</option>'; 
     $cities[] = $get_row['city']; 
    } 

    if (!in_array($get_row['neighborhood'], $neighborhoods)) { 
     $neighborhood_options .= '<option value="' . $get_row['neighborhood'] . '">' . $get_row['neighborhood'] . '</option>'; 
     $neighborhoods[] = $get_row['neighborhood']; 
    } 
} 
+0

나는 대신에 배열을 사용하여 편집을 보았습니다. +1 – Aknosis

+0

좋습니다. 우리는 어딘가에있다. 감사! 이제는 한 번만 국가 옵션을 보여줍니다. 주의 사항 : 지금이 오류를 받고 있어요 정의되지 않은 변수를 : country_options을 sidebar.phpon 라인에 87 공지 사항 : 정의되지 않은 변수 : sidebar.phpon 라인 state_options 92 공지 사항 : 정의되지 않은 변수 : sidebar.phpon에 city_options line 97 알림 : 정의되지 않은 변수 : sidebar.phon 라인의 neighborhood_options 102 – user1810546

+0

해결했습니다. 이제 효과가 있습니다. 정말 고마워요! – user1810546

관련 문제