2010-02-01 4 views
2

그래서 선택 항목에 드롭 다운의 "예"또는 "아니오"를 자동으로 채 웁니다. 데이터베이스 쿼리의 반환 값은 어떤 드롭 다운이 선택 될지 평가하는 데 사용됩니다.데이터베이스 항목을 기반으로 한 드롭 다운 선택

2 개의 조건문을 작성하는 것은 참/거짓 자동 채우기이므로 생각해 보았습니다.하지만 올바른 선택을 자동으로 채울 코드를 작성하는 것이 더 좋을 것이라고 생각했습니다. 드롭 다운, 데이터베이스의 결과를 기반으로.

내가 쓰려고하는 코드의 기본은 모든 선택 항목에 대해 변수를 검사 한 다음보기에서 해당 드롭 다운을 선택할 문자열을 추가하는 것입니다.

제 질문은 가능한 드롭 다운 값마다 조건을 작성하는 대신이 작업을 수행하는 간단한 방법일까요? CodeIgniter의 PHP에 서면 요청에 의해

코드,이 같은

$this->db->select('row'); 
$result = $this->db->get('table'); 

// This just selects and returns the values. This code does work, I'm just looking for a better way to do this task that someone might know, because I'm going to have drop downs with hundreds of possibilities, of which, I want the predefined one to be selected. 

// Assume $result->row = "Yes" 

if ($result = "Yes") { 
    #Code for echo'ing radio button with "Yes" selected 
     } 

else { 
    #Code for echo'ing radio button with "No" selected 
     } 
+2

질문을 좀 더 자세하게 설명 할 수 있습니까? 일부 코드를 보여줄 수 있습니까? –

+1

지저분한 코드를 보여 주면 더 잘 할 수있는 방법을 보여 드리겠습니다. – Flavius

답변

3

CI에서 Form Helper을 확인 했습니까? 무선 선택 : 당신은 form_radio을 사용하고 세 번째 매개 변수로 선택하려는 값을 제공 할 수

form_radio('field_name', 'Yes', $result == 'Yes'); 
form_radio('field_name', 'No', $result == 'No'); 

첫 번째 매개 변수는 필드 이름, 두 번째 매개 변수는 필드의 값이며, 세 번째 매개 변수는 부울입니다 (TRUE를 FALSE : 선택되지 않음). 이것은 라디오이므로 필드 이름은 동일해야합니다.

+1

$ 결과가 행 배열이므로, $ result = $ this-> db-> get ('table') -> row() -> whateverthefieldnameis; –

0

뭔가가 작동합니다. 귀하의 요구 사항과 데이터가 무엇인지에 관해 많은 가정을합니다.

// The selected value 
$selectedValue = 'foo'; 

// Database results, assuming a structure like so 
$results = array(
    array(
    'id' => 1, 
    'value' => 'foo' 
), 
    array(
    'id' => 2, 
    'value' => 'bar' 
) 
); 

echo '<select name="selectField">'; 

foreach ($results as $result) { 
    echo '<option value="'.$result['id'].'"'; 

    // Here we see if this result is the selected value. 
    // If so, we spit out the HTML so the user's browser renders it as such. 
    if ($result['value'] == $selectedValue) { 
    echo ' selected="selected"'; 
    } 

    echo '>'.$result['value'].'</option>'; 
} 

echo '</select>'; 
+0

그건 CodeIgniter에서 실제로하는 방법이 아닙니다. –

+0

그러나 코드 이그니 터에 쉽게 적용될 수 있으므로이 대답에는 아무런 문제가 없습니다.이 메소드를 잘못 작성하는 코드 이그니 저는하지 않습니다. 사실, Code Igniter는 더 나쁜 것을 장려하며 권장하지 않습니다. 다른 곳에 투표를하십시오. – erisco

0

귀하의 질문이 약간 혼란스러워 보입니다. 코드에서 라디오 버튼을 언급하지만 드롭 다운에 대한 질문을합니다.

$data = array(
    'yes' => array('option1', 'option2', 'option2', 'etc'), 
    'no' => array('option1', 'option2', 'option2', 'etc'), 
    'somethingelse' => array('option1', 'option2', 'option2', 'etc') 
); 

을 그리고 다음과 같이 사용 : 당신이 라디오 버튼 또는 주어진 값에 따라 드롭 다운 옵션 세트를 표시해야하는 경우

, 당신은 배열로 선택을 정의 할 수 있습니다

$query = $this->db->select('row')->get(); 

if ($query->num_rows() > 0) { 
    $result = $query->row(); 

    if (array_key_exists(strtolower($result->row), $data)) { 
     foreach ($data[$result->row] as $row) { 
      // Use $row as you need 
     } 
    } 
} 

재사용을 위해이 코드를 함수로 묶을 수도 있습니다.

0

감사합니다. Erisco, 방금 게시물로 뭔가를 도와주었습니다.

내 버전은 키 => 값 쌍을 참조하지 않고 더 기본적이고 신경 쓸 수 있습니다. 이전 드롭 다운 메뉴의 모든 옵션을 포함하는 배열을 설정하고 [드롭 다운 메뉴를 채우는대로] 배열을 선택하고 사용자가 이전에 선택한 항목과 일치하는 경우 'selected'로 설정합니다. 데이터베이스에 저장 됨 :

<?php   
$naybpopulate = array('Bernal Heights', 'Castro', 'Chinatown', 'Cole Valley', 'Fishermans Wharf', 'Forest Hill', 'Haight-Ashbury', 'Hayes Valley', 'Inner Richmond', 'Inner Sunset', 'Japantown', 'Marina', 'Mission', 'Mission Bay', 'Nob Hill', 'Noe Valley', 'North Beach', 'Outer Richmond', 'Outer Sunset', 'Pacific Heights', 'Potrero Hill', 'Presidio', 'Russian Hill', 'SoMa', 'South Beach', 'Telegraph Hill', 'Tenderloin', 'Union Square', 'Western Addition', 'West Portal'); 

     echo '<select name="neighborhood" id="neighborhood">'; 

foreach ($naybpopulate as $nayb) { 
echo '<option value="'.$nayb.'"'; 

// Here we see if this result is the selected value. 
// If so, we spit out the HTML so the user's browser renders it as such. 
if ($nayb == $neighborhood) { 
echo ' selected="selected"'; 
} 

echo '>'.$nayb.'</option>'; 
} 

echo '</select>'; 
?> 

스택 오버플로가 가장 좋습니다. 당신들은 바위 :).

관련 문제