2015-06-08 7 views
1

У меня есть список записей из базы данных, см. Вложение. Как я могу вставить vat no для каждой записи, используя идентификатор студента (см. Самый левый столбец). Каждая запись имеет поле ввода (см. Самый правый столбец). enter image description hereОбновление нескольких строк с предложением where в codeigniter

Вот мое мнение:

<?php $attributes = array('id' => 'VATformAdd', 'name' => 

'VATformAdd', 'autocomplete' => 'off'); echo form_open('report/addVATno', $attributes);?> 
<fieldset> 
<legend>Income By Student Admission</legend> 
<table class=""> 
<thead> 
<tr> 
<th width="15%">Student ID</th> 
<th width="15%">Student Form No</th> 
<th width="15%">Course</th> 
<th width="20%">Student Name</th> 
<th width="15%">Admitted by</th> 
<th width="10%">Amount</th> 
<th width="10%">VAT Serial No</th> 
</tr> 
</thead> 

<tbody> 
<?php 
    if (isset($addmission_income)) { 
     foreach ($addmission_income as $addmissionincome) { 
?> 
<tr> 
    <td><?php echo $addmissionincome->student_id;?></td> 
    <td><?php echo $addmissionincome->student_form_no;?></td> 
    <td><?php echo $addmissionincome->course_name;?></td> 
    <td><?php echo $addmissionincome->student_full_name;?></td> 
    <td><?php echo user_profile_name($addmissionincome->student_added_by); ?></td> 
    <td><?php echo $addmissionincome->student_fee_paid;?></td> 
    <td><input type="text" name="vatno[<?php echo $addmissionincome->student_id;?>]" class="width-100"/></td> 
<?php  
     } 
?> 
</tr> 
<?php  
    } 
?> 
</tbody> 
</table> 

<p> 
<input id="submit" name="submit" type="submit" value="Add VAT Number" /> 
</p> 

</fieldset> 
<?php echo form_close();?> 

Вот мой контроллер:

function addVATno(){ 
     $studentid = $this->input->post('studentid'); 
     foreach($studentid as $a){ 
      if($val[$a]!=''){ 
       $this->report_mdl->addVATno($a); 
      } 
     } 
    } 

Вот Модель:

function addVATno($a){ 
     $val = $this->input->post('vatno'); 
     $updatevatsl = array( 
      'dupVATserial_no' => $val); 
     $this->db->where('student_id', $a); 
     $query = $this->db->update('data_student_master', $updatevatsl); 
     return $query; 
    } 
+0

не в состоянии понять вашу проблему. пожалуйста, немного более ясно ваша проблема – Saty

+0

объясните нам, что вам нужно сделать –

+0

@Saty, я изменил описание вопроса, пожалуйста, взгляните. –

ответ

1

сделать файл вида со скрытым student_id как:

<input type="hidden" name="student_id[]" value="<?php echo $addmissionincome->student_id;?>"/> 

и vatno Поле:

<input type="text" name="vatno[]" class="width-100"/> 

Добавление следующего к контроллеру будет делать все, что вам нужно (без необходимости ставить какой-либо код в вашей модели):

$student_id = $this->input->post('student_id'); 
    $vatno = $this->input->post('vatno'); 

    for ($i = 0; $i < count($student_id); $i++) { 
     $sm_data[] = array(
      'vatno' => $vatno[$i], 
      'student_id' => $student_id[$i] 
     ); 
    } 

$this->db->update_batch('data_student_master', $sm_data, 'student_id'); 

Примечание: Было бы лучше, чтобы переместить вызов дб для вашей модели придерживаться конвенций MVC ,

0

Ваш вопрос в том, что вы не тянет правильные значения из POST.

Вы не отправляете идентификатор студента самостоятельно в любом месте формы, поэтому я не вижу, как вы сможете получить к нему доступ из POST.

Вы также пытаетесь получить доступ к «vatno» из POST, чтобы вставить его в БД, но «ватно» в POST - это массив.

Поскольку вы используете идентификатор студента в качестве ключа массива в своей форме, вы можете получить доступ как к идентификатору студента, так и к номеру, который хотите обновить из того же массива. В контроллере, вы можете сделать:

function addVATno(){ 
    //vatnos is an array, the key is the student id 
    $vatnos = $this->input->post('vatno'); 
    foreach($vatnos as $key=>$vatno){ 
     $this->report_mdl->addVATno($key, $vatno); 
    } 
} 

Тогда в вашей модели, вам просто нужно:

function addVATno($studentid, $vatno){ 
    $updatevatsl = array( 
     'dupVATserial_no' => $vatno 
    ); 
    $this->db->where('student_id', $studentid); 
    $query = $this->db->update('data_student_master', $updatevatsl); 
    return $query; 
} 
Смежные вопросы