2016-03-07 29 views
0

我有一個插入循環數據的窗體。問題是即使我不在表單上插入新數據,我的數據庫仍然添加一個新數據。我可以在同一數據中添加更多的一個數據,但是在第一個數據創建新數據時,請向我提供兩次具有空值的數據。 這裏是我的代碼使循環插入來自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

我會嘗試,但仍然在我的數據庫中添加數據。 –