2012-01-16 37 views
7

Tôi tự hỏi liệu có ai đó có thể giúp tôi không. Tôi có một form_dropdown mà tôi đang làm đầy với các tùy chọn từ cơ sở dữ liệu. Tôi muốn thêm giá trị "Vui lòng chọn" mặc định ở đầu danh sách, nhưng không thể tìm ra cách thực hiện mà không thêm giá trị đó vào cơ sở dữ liệu.CodeIgniter - Thêm giá trị mặc định vào form_dropdown

Mã của tôi là như sau:

Trả lời

11

Một cách khác để viết nó sẽ là:

function populatedropdown() 
{ 
    $query = $this->db->query('SELECT * FROM '.$this->table_name.' WHERE active=1 ORDER BY brand'); 

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

     $dropDownList[''] = 'Please Select'; // default selection item 
     foreach($dropdowns as $dropdown) { 
      $dropDownList[$dropdown->brand] = $dropdown->brand; 
     } 

     return $dropDownList; 
    } else { 
     return false;  // return false if no items for dropdown 
    } 
} 
+2

Bạn cần sử dụng '''' làm khóa hoặc '0' sẽ được chuyển trong giá trị biểu mẫu. tức là '$ dropDownList [''] = 'Vui lòng chọn'; 'Trừ khi bạn muốn điều đó ..? –

+0

@Madmartigan, cảm ơn, đã hoàn thành, cũng đã cập nhật câu trả lời của tôi để bao gồm kiểm tra số hàng. – Jakub

+0

Bạn không cần điều đó vì 'result()' luôn trả về một mảng. Nó là vô nghĩa. Trả về false có lẽ không phải là ý tưởng hay đối với một hàm trả về mảng, một mảng trống có thể thích hợp hơn. Vì vậy, +1 và -1: / –

7

Chỉ cần thêm nó vào mảng trước khi bạn trả lại nó.

function populatedropdown() 
{ 
    $query = $this->db->query('SELECT * FROM '.$this->table_name.' WHERE active=1 ORDER BY brand'); 
    $dropdowns = $query->result(); 

    foreach($dropdowns as $dropdown) { 
     $dropDownList[$dropdown->brand] = $dropdown->brand; 
    } 
    $finalDropDown = array_merge(array('' => 'Please Select'), $dropDownList); 

    return $finalDropDown; 
} 
+0

+1 cách tốt nhất và dễ nhất để làm điều đó – Jakub

+1

Tốt hơn, hãy xác định '$ dropDownList = array ('' => 'Vui lòng chọn'); 'đầu tiên trong trường hợp không có kết quả DB. Cộng với sự thúc đẩy nhỏ xíu của việc không gọi một chức năng. –

+0

+1 - ngoài ra, chỉ cần sử dụng xác thực để giữ kết quả trống ra khỏi cơ sở dữ liệu và buộc một lựa chọn (nếu cần). – swatkins

0

Ngoài ra còn có khả năng thay đổi form_helper.php và để thêm một cái gì đó như:

$form .= '<option value =0 >...</option>'; 

đến func form_dropdown . Tuy nhiên, tôi không nhận được nó được chọn làm mặc định nhưng mục nhập thứ hai trong biểu mẫu.

Nhưng vấn đề là bạn thay đổi các tệp cốt lõi mà không nên nói chung.

Các vấn đề liên quan