2014-02-12 6 views
0

사용자가 업데이트하려고 할 때 먼저 선택한 값을 양식에 표시해야합니다. 이러한 변형의선택한 값을 먼저 에코합니다.

<select name="up_opt"> 
    <option value="1" <?php if ($_GET['1'] == 'option1') { echo 'selected'; } ?>>Opt1</option> 
    <option value="2" <?php if ($_GET['2'] == 'option2') { echo 'selected'; } ?>>Opt2</option> 
    <option value="3" <?php if ($_GET['3'] == 'option3') { echo 'selected'; } ?>>Opt3</option> 
</select> 

없음 먼저 확인 값을 에코하지

1)

<?php 
    $opt= array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3') ; 
    echo '<select name="up_opt" >' ; 

    foreach ($opt as $i => $value) { 
    echo "<option value=\"$i\""; 
    if ($_REQUEST['up_opt'] == $i) 
    { 
     echo "selected" ; 
    } 
    echo ">$opt[$i]</option>" ; 
    } 
    echo '</select>' ; 
?> 

2)

<?php $opt= array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3') ; 
    $edu = $_REQUEST['edu']; 
    <select name="up_opt">  
    <?php foreach ($opt as $i=>$opt) : ?>  
     <option value="<?php echo $i?>" <?php echo $i == $edu ? 'selected' : ''?>><?php echo $opt ?></option> 
    <?php endforeach; ?> 
    </select> 

3) : 나는 몇 가지 변종을 시도했다. 누군가가 나를 도울 수 있고, 무엇이 잘못 되었는가를 말하거나 나에게 또 다른 변종을 줄 수 있습니까?

+2

모든 예제에서 선택하기 전에 공간이 필요합니다. – ElefantPhace

+0

각 예제에 여러가지 문제가 있습니다. – ElefantPhace

답변

1

변형 3은 괜찮습니다 (하드 코딩 된 옵션 대신 루프를 사용하고 싶습니다). 실수가 '1', '2', '3'일 때 'option1', 'option2'등을 비교하는 실수는 실수입니다. 또한 @ ElefantPhace가 말했듯이 이 선택된을 선택하기 전에 공백을 잊지 마십시오. 그렇지 않으면 잘못된 html이 표시됩니다. 그래서이 될 것입니다 : 루프와

<select name="up_opt"> 
    <option value="1" <?php if ($_GET['up_opt'] == 1) { echo ' selected="selected"'; } ?>>Opt1</option> 
    <option value="2" <?php if ($_GET['up_opt'] == 2) { echo ' selected="selected"'; } ?>>Opt2</option> 
    <option value="3" <?php if ($_GET['up_opt'] == 3) { echo ' selected="selected"'; } ?>>Opt3</option> 
</select> 

:

여기
<?php 

$options = array(
    1 => 'Opt1', 
    2 => 'Opt2', 
    3 => 'Opt3', 
); 

?> 

<select name="up_opt"> 
<?php foreach ($options as $value => $label): ?> 
    <option value="<?php echo $value; ?>" <?php if ($_GET['up_opt'] == 1) { echo ' selected="selected"'; } ?>><?php echo $label; ?></option> 
<?php endforeach ?> 
</select> 
+0

여전히 틀리면, $ _GET 1,2 또는 3이 없습니다. up_opt이어야합니다. – ElefantPhace

+0

@ElefantPhace 예, 죄송합니다. 추가하지 마십시오. – Hast

+0

첫 번째 방법은 여전히 ​​가장 깨끗한 방법입니다. – ElefantPhace

0

이 변형, 테스트하고 예상대로 작동의 세 가지입니다. 그들은 당신은 잘못된 변수 이름을 사용하고, 예로부터 예를


1)

<?php 
    $opt= array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3') ; 
    echo '<select name="up_opt">'; 
    foreach ($opt as $i => $value) { 
     echo "<option value=\"$i\""; 
     if ($_POST['up_opt'] == $i){ 
      echo " selected"; 
     } 
     echo ">$value</option>"; 
    } 
    echo '</select>'; 
?> 

2)에 다른 사람은

$edu = $_POST['up_opt']; 
echo '<select name="up_opt">'; 
foreach ($opt as $i => $value){  
    echo "<option value=\"$i\"", ($i == $edu) ? ' selected' : ''; 
    echo ">$value</option>"; 
} 
echo "</select>"; 
상기와 같은 배열을 사용하여, 기본적으로 모두 동일

3)

echo '<select name="up_opt">'; 
echo '<option value="1"', ($_POST['up_opt'] == '1') ? 'selected':'' ,'>Opt1</option>'; 
echo '<option value="2"', ($_POST['up_opt'] == '2') ? 'selected':'' ,'>Opt2</option>'; 
echo '<option value="3"', ($_POST['up_opt'] == '3') ? 'selected':'' ,'>Opt3</option>'; 
echo '</select>'; 
관련 문제