2015-09-19 3 views
1

Привет Я использую codeigniter. Мне нужно иметь встроенный внутри javascript form_dropdown. У меня есть таблица с кнопкой add row. Когда я нажимаю кнопку «Добавить», я повторяю одну и ту же строку выше. На моей странице просмотра у меня есть javascript для добавления динамической строки таблицы. Теперь у меня не было раскрывающегося списка. У меня есть файл контроллера, в котором я передаю данные, которые должны отображаться в виде раскрывающегося списка. Моя функция контроллера:Можем ли мы иметь функцию form_dropdown, встроенную в javascript?

class Admin_billing extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 

     $this->load->model('billing_model'); 

     if(!$this->session->userdata('is_logged_in')){ 
      redirect('admin/login'); 
     } 
    } 

    public function ticket($id) 
    { 
    $this->load->library('session'); 
      $this->session->unset_userdata('client_detail'); 
     $id=$this->uri->segment(4); 

     $data['id']=$this->uri->segment(4); 

     $data['employee']=$this->billing_model->emp_name(); 

     $data['main_content'] = 'admin/billing/ticket_page'; 
     $this->load->view('includes/template', $data); 
    } 
} 

Моя модель функция:

<?php 
class billing_model extends CI_Model { 
    public function __construct() 
    { 
     $this->load->database(); 

    } 
public function emp_name() 
    { 

     $this->db->select('employee.first_name'); 
    $this->db->from('employee'); 
    $this->db->group_by('employee.id'); 
    $query = $this->db->get(); 

     return $query->result_array(); 
    } 


} 
?> 

Здесь у меня есть функция emp_name, чтобы получить имя сотрудника из моей базы данных. моего взгляда страница:

<script> 
function displayResult() { 
    var row = document.getElementById("test").insertRow(-1); 
    row.innerHTML = '<td>form_dropdown('employee', $options_employee, set_value('employee[]'), 'class="span2"')</td><td><input type="text" name="start_time[]" value="" style="width:35px;"/></td><td><input type="text" name="pid[]" style="width:35px;"/></td><td><input type="text" name="description[]" class="description" value="" style="width:145px;"/></td><td><input type="text" class="type" value="" style="width:45px;"/></td><td><input type="text" class="qty_prch" value="" style="width:45px;"/></td><td><input type="text" class="qty_used" value="" style="width:45px;"/></td><td><input type="text" value="" style="width:70px;"/></td><td><input type="text" value="" style="width:70px;"/></td><td><input type="text" value="" style="width:70px;"/></td><td><input type="text" value="" style="width:70px;"/></td>'; 
} 

</script> 
<?php 

     $attributes = array('class' => 'form-horizontal', 'id' => ''); 
     $options_employee = array('' => "Select"); 
     foreach ($employee as $row) 
     { 
     $options_employee[$row['name']] = $row['name']; 
     } 

     ?> 
<table id="test"> 
      <thead> 
      <tr> 
      <td style="width:80px;">Employee</td> 
      <td style="width:35px;">Start time</td> 
      <td style="width:35px;">Id</td> 
      <td style="width:145px;">Description</td> 
      <td style="width:45px;">Type></td> 
      <td style="width:45px;">qty prch></td> 
      <td style="width:45px;">qty used</td> 
      <td style="width:70px;">Price</td> 
      <td style="width:70px;">discount></td> 
      <td style="width:70px;">Tax></td> 
      <td style="width:70px;">Total</td> 
      </tr> 
      </thead> 
      <tbody> 
      <tr> 
      <td><?php echo form_dropdown('employee', $options_employee, set_value('employee[]'), 'class="span2"');?></td> 
      <td><input type="text" name="start_time[]" value="" style="width:35px;"/></td> 
      <td><input type="text" name="pid[]" value="" style="width:35px;"/></td> 
      <td><input type="text" name="description[]" class="description" value="" style="width:145px;"/></td> 
      <td><input type="text" name="type[]" class="type" style="width:45px;"/></td> 
      <td><input type="text" name="qty_prch[]" class="qty_prch" style="width:45px;"/></td> 
      <td><input type="text" name="qty_used[]" class="qty_used" style="width:45px;"/></td> 
      <td><input type="text" name="price[]" class="price" style="width:70px;"/></td> 
      <td><input type="text" name="discount[]" class="discount" style="width:70px;"/></td> 
      <td><input type="text" name="tax[]" class="tax" style="width:70px;"/></td> 
      <td><input type="text" name="total[]" class="total" style="width:70px;"/></td> 

      </tr> 
      </tbody> 

      </table> 

      <div id="add_row"> 
     <button onClick="displayResult()" class="add_r"></button> 
       </div> 

Это моя страница вида в таблице выше Мое первое поле код выпадающего PHP. Это работает для статической строки в моей таблице. Когда я использую javascript для добавления новой строки, я не мог получить раскрывающееся меню. Как справиться с этим? Может ли кто-нибудь помочь мне создать код?

ответ

0

Во-первых, PHP является языком на стороне сервера. Если вы добавляете в html свою строку только в javascript, то не выполняется php.

Для этого вам необходимо использовать ajax. Решение с помощью jQuery:

  1. На стороне сервера (php) вам необходимо подготовить url (function) для обслуживания новой строки, отрезанной данными.
  2. On buton onClick event trigger jQuery ajax http://api.jquery.com/jquery.ajax. Параметр Url указывает на подготовленный URL.
  3. После выполнения запроса ajax вы устанавливаете данные ответа как новую строку в таблицу.

$.ajax({ 
 
    url: "DOMAIN/newRow", 
 
    }) 
 
    .done(function(data) { 
 
     $('table#test tbody').append(data); 
 
    } 
 
    });

PHP (в админ контроллера биллинг)

Я не Верри знаком с CakePHP, так просто. Вам нужно написать функцию, которая возвращает сгенерированную строку html.

public function newRow() 
{ 
    $options_employee = 'prepare this variable here'; 
    $dropdown = form_dropdown('employee', $options_employee, set_value('employee[]'), 'class="span2"'); 

    // Send data to browser (return is only for demonstration) 
    return '<tr><td>' . $dropdown . '</td><td><input type="text" name="start_time[]" value="" style="width:35px;"/></td><td><input type="text" name="pid[]" style="width:35px;"/></td><td><input type="text" name="description[]" class="description" value="" style="width:145px;"/></td><td><input type="text" class="type" value="" style="width:45px;"/></td><td><input type="text" class="qty_prch" value="" style="width:45px;"/></td><td><input type="text" class="qty_used" value="" style="width:45px;"/></td><td><input type="text" value="" style="width:70px;"/></td><td><input type="text" value="" style="width:70px;"/></td><td><input type="text" value="" style="width:70px;"/></td><td><input type="text" value="" style="width:70px;"/></td></tr>'; 
} 
+0

У меня есть меньше представления о AJAX вы можете помочь мне с каким-то кодом? @Samuel Келемена – Anu

+0

Ok я попробую с этим. :) – Anu

+0

Можем ли мы вернуть его? – Anu

Смежные вопросы