2016-03-07 4 views
0

У меня есть форма, которая вставляет данные цикла. проблема в том, что даже я не вставляю новые данные в свою форму, моя база данных все еще добавляет новую. Я могу добавить больше одной информации в одни и те же данные, но когда создаю новые данные после первого, получай мне дважды данные с пустым значением. вот мой кодmake looping insert database from codeigniter

Контроллер

$doc_number = $_POST['doc_number']; 
    $closedby = $_POST['closedby']; 
    $reasonclose = $_POST['reasonclose']; 
    $description = $_POST['description']; 


for($i=0;$i<count($closedby);$i++) { 

     $solved = array(   
      'DOC_NUMBER' => $doc_number, 
      'LOB'   => $closedby, 
      'REASON'  => $reasonclose, 
      'DESCRIPTION' => $description, 
      'CREATE_DATE' => $dateop, 
      'ID_SOLVED'  => ++$num 
     ); 
     $this->db->insert('NEWS_EVENT_SOLVED_TAB',$solved); 
     var_dump($solved); 
    } 

VIEW

<div class="controls" style="margin-left: 70px;"> 
<input id="idf" type="hidden" value="<?php echo $num;?>" /> 
<input id="idf" type="hidden" value="1" />   
<div id="divSolved"></div> 
<button type="button" onclick="addLob(); return false;">Add LOB</button> 
</div> 

JAVASCRIPT

function addLob() { 
    var idf = $("#idf").val(); 
    var stre = "<p id='srow" + idf +"'>"+ 
      "<select id='closedby_"+idf+"' name='closedby[]' class='form-control span3'>"+ 
       "<option value=''>Choose One LOB</option>"+ 
       "<option value='alkes'>Alkes</option>"+ 
       "<option value='bd'>BD</option>"+ 
       "<option value='cosmetic'>Cosmetic</option>"+ 
       "<option value='feed'>Feed</option>"+ 
       "<option value='food'>Food</option>"+ 
       "<option value='import'>Import</option>"+ 
       "<option value='logistic'>Logistic</option>"+ 
       "<option value='pharma'>Pharma</option>"+ 
       "<option value='purchasing'>Purchasing</option>"+ 
       "<option value='qa'>QA</option>"+ 
      "</select>"+ 
      "<select id='reasonclose_"+idf+"' name='reasonclose' class='form-control span3'>"+ 
       "<option value=''>Choose One Reason</option>"+ 
       "<option value='Claim Insurance'>Claim Insurance</option>"+ 
       "<option value='Claim Principal'>Claim Principal</option>"+ 
       "<option value='Claim Transporter'>Claim Transporter</option>"+ 
       "<option value='Sample'>Sample</option>"+ 
       "<option value='Sold To Customer'>Sold To Customer</option>"+ 
      "</select>"+ 
      "<textarea rows='2' id='description_"+idf+"' name='description' placeholder='Keterangan'/>"+ 
      "<a href='#' style='color:#3399FD;' onclick='hapusElemen(\"#srow" + idf + "\"); return false;'><img alt='' src='<?php echo themeUrl(); ?>images/delete.png'></a>"+ 
     "</p>"; 

    $("#divSolved").append(stre); 
    idf++; 
    $("#idf").val(idf); 
    } 
    function hapusElemen(idf) { 
    $(idf).remove(); 
    } 

function confirm(){ 
var isi = '<div align="" class="text-">Please wait while processing...<br /><img alt="" src="<?php echo themeUrl(); ?>img/ajax_loader.gif" align=""></div>'; 
$('.modal-body').html(isi); 
var modalWidth = 300; 
var left = (screen.availWidth - (modalWidth * 2)); 
$('button.close').hide(); 
$('#myModal').css({'width':modalWidth+'px','left':left+'px'}).modal({backdrop:'static',keyboard:false,show:true}); 

var hotdata = $('#productclose').handsontable('getInstance'); 
hstable = JSON.stringify({'data':hotdata.getData()}); 

//alert(lob); 
for(var i=1; i<$('#idf').val(); i++) { 
    $.post('<?php echo base_url('report/news_event/confirmed'); ?>',{ 
     doc_number  : $('#id_number').val(), 
     closedby  : $('#closedby_'+i).val(), 
     reasonclose  : $('#reasonclose_'+i).val(), 
     description  : $('#description_'+i).val(), 
     itemdata  : hstable 
     //datenumber : $('#reminder_date').val() 
    },function() { 
        //alert($('#closedby').val()); 
        //location.reload(); 
      }); 
} 

}

ответ

0

Проблема заключается в том, что когда вы отправляете, даже если ничего не добавлено, все равно будет одна запись $_POST['closedby'], но значение может быть пустым.

В цикле for вы должны проверить, является ли $_POST['closedby'] пустым/пустым или, как правило, по умолчанию для параметров. Если это так, не делайте вставки. Что-то вроде:

if (!empty($_POST['closedby'][$i]) 
{ 
    // insert code 
} 

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

+0

Я попробую, но все же добавлю данные в свою базу данных. –