2012-08-26 4 views
0

사용자 프로필에 대한 편집 페이지가 있습니다. 하나의 옵션은 '국가'이며 모든 국가는 php 파일에 나열되어 있습니다 (국가는 데이터베이스에서로드되지 않습니다). 사용자 프로파일 편집 페이지에서 현재 저장된 옵션 값을 목록에서 선택할 수 있기를 원합니다.저장된 mysql 값을 기반으로 선택 옵션 선택

나는이 작업을 수행 할 수 있습니다 :

<option value="Afghanistan" <?php if ($results['country'] == 'Afghanistan') echo 'selected';?> >Afghanistan</option> 
<option value="Albania" <?php if ($results['country'] == 'Albania') echo 'selected';?> >Albania</option> 
<option value="Algeria" <?php if ($results['country'] == 'Algeria') echo 'selected';?> >Algeria</option> 
<option value="American Samoa" <?php if ($results['country'] == 'American Samoa') echo 'selected';?> >American Samoa</option> 
// The rest of the countries here :(.. 

DB를에 모든 국가를주지 않고이 작업을 수행 할 수있는 더 나은 (청소기) 방법이 있나요?

답변

1

루프는 foreach 루프를 사용하여 $countries 배열을 반복하고 옵션을 생성하고 국가 값과 일치하여 선택한 것을 찾습니다.

예 : ($results["country"] = "Albania"에 대한)

$countries = array("Afghanistan", "Albania", "Algeria", "American Samoa"); 

foreach ($countries as $country) { 
    echo "<option value='$country'"; 
    if ($country == $results["country"]) { 
     echo " selected"; 
    } 
    echo ">$country</option>\n"; 
} 

출력 :

당신이 바로 원하는 것을 이해한다면, 나는 foreach 루프를 사용하는 것이 좋습니다
<option value='Afghanistan'>Afghanistan</option> 
<option value='Albania' selected>Albania</option> 
<option value='Algeria'>Algeria</option> 
<option value='American Samoa'>American Samoa</option> 
+0

@Virendra :이 예제를 직접 작성했으며 완벽하게 작동하는지 확인했습니다. 의견을 게시하기 전에 직접 확인하십시오. 이 예제의 출력을 추가했습니다. –

+0

정답은 고맙습니다. 다른 대답도 맞지만 가장 먼저 대답했습니다! 도움에 감사드립니다. – cantaffordretail

+0

당신의 솔루션은 작동 하나 올바르지 않아'selected = "selected"가되어야합니다. –

2

:

$countries = array(
    "Afghanistan", 
    "Albania", 
    "Algeria", 
    "American Samoa" 
    // ... 
); 

foreach($countries as $country) { 
    echo '<option value="'.$country.'"'; 
    if($country == $results['country']) { 
     echo ' selected="selected"'; 
    } 
    echo '>'.$country.'</option>'; 
} 
+1

첫 번째 에코가 끝날 때 '가 없습니다. – Virendra

+0

@Virendra 대단히 고맙습니다. 나는 코드 하이라이트를보고 뭔가 잘못되었다고 생각했지만 무엇을 볼 수 없었습니다. :) –

+0

감사. 당신의 해결책은 '진실'과 같습니다.하지만 그는 먼저 대답했습니다. +1 – cantaffordretail

0

또한을 네가 생각할 수있는 DB에 국가를 저장할 수 없다면 다른 대답에 그들을 텍스트 파일에 저장하는 것. 그것을 읽고 반복하십시오. 이렇게하면 코드 변경없이 새로운 국가를 쉽게 추가 할 수 있습니다. 그냥 생각.

+0

나는 지금 당장 그 과정을 진행 중입니다! file() 함수를 사용할 계획입니다. 지금 바로 세부 사항을 찾으려고합니다. – cantaffordretail

+1

왜? 국가의'.php' 파일을 만들어 배열과 같이 저장하면, require_once ('path/to/countries.php');와 페이지를로드 할 때마다 과도한 구문 분석이 필요하지 않습니다. –

+0

Vlakarados, 그게 내 포인트 야. 프로그래밍 언어에 관계없이 일반화하려고 노력하고 있습니다. 포스터에 팁을 주면됩니다. – km1

관련 문제