2012-01-03 56 views
2

我有一個數據庫表從我得到的值並在視圖中顯示它page.Then管理員會點擊旁邊的複選框每一行中的每個複選框的table.On點擊了我會得到的是checkbox.the代碼(查看文件和js)的值,​​因爲這是這一個錯誤顯示值從一個數組

視圖文件:

<input type="checkbox" name="options" id="options" value="<?php echo $row->slNo?>"> 
<input type="checkbox" id="selectAll" name="selectAll" /> 

JS:

$('#selectAll').change(function(){ 
      if($(this).attr('checked')) 
     { 
     $('[name=options]').attr('checked',true); 
     function updateTextArea() 
     {   
       var allVals = $('#rrol :checked').map(function() 
      { 
        return $(this).val(); 
       }).get(); 
       $('#getrolevalues').val(allVals); 
     } 
     $(function() 
     { 
      $('#rrol input').click(updateTextArea); 
       updateTextArea(); 
      }); 
     } 
     else 
     { 
      $('[name=options]').attr('checked',false); 
      function updateTextArea() 
      {   
      var allVals = $('#rrol :checked').map(function() 
        { 
        return $(this).val(); 
       }).get(); 
       $('#getrolevalues').val(allVals); 
     } 
     $(function() 
     { 
      $('#rrol input').click(updateTextArea); 
      updateTextArea(); 
      }); 

      } 
}); 

我已保存的值我得到了在一個隱藏的文本框,並即時將其發送到controller.code(查看文件和JS),因爲它是低於

視圖文件:

<input type="hidden" id="getrolevalues"> 

JS:

$("#submit").click(function(){ 

      var js=$('#getrolevalues').val(); 
     $.post(url+"/roles/tabledata",{"gotoption":js},function(data){ 
      $('#roleschk').html(data.result); 

},"json"); 

到目前爲止一切發送我已經存儲在數組中即時得到在控制器中的error.ie我得到的數組值,然後我使用爆炸函數應用於每個value.then我使用用於環路分離,以這些值發送到值之後是工作fine.but模型並獲取值並顯示結果。代碼低於

控制器:

function tabledata() 
    { 
     echo $data=$this->input->post('gotoption'); 
     $pieces = explode(",", $data); 
     //echo $pieces[1]; 
     //echo $e=count($pieces); 
     $sql=array(); 
    for($i = 0; $i< count($pieces); $i++) 
    { 
     $piec= $pieces[$i]; 
     $sql[]=$this->rolesmodel->roleselect($piec); 
    } 
    $sql['dipl']=$sql; 

     $slr=$this->load->view('roleschecked',$sql,true); 
     $value=array(
      'result'=>$slr 
     ); 
     echo json_encode($value); 
} 

型號:

function roleselect($piec) 
    { 
     /*for($i = 0; $i< count($pieces); $i++) 
     { */ 
     echo $chkroles="SELECT * FROM dummyroles WHERE slNo='$piec'"; 

     $qry=$this->db->query($chkroles); 
//  } 

     return $qry; 
    } 

也是我顯示的結果roleschecked視圖文件:

<p>You Have selected the following persons</p> 
<table border=2> 
<tr> 
<th>Sl.No</th> 
<th>Name</th> 
<th>Roles</th> 
</tr> 
<?php foreach($dipl as $row) 
{?> 
<tr> 
<td><?php echo $row()->slNo[0]?></td> 
</tr> 
<?php }?> 
</table> 

現在的問題是,只有最後一個值,我得到當我使用像這樣在控制器

......... 
......... 
$sql['dipl']=$this->rolesmodel->roleselect($piec); 
......... 

,如果我使用這樣我得到一個錯誤

......... 
$sql[]=$this->rolesmodel->roleselect($piec); 
............. 
$sql['dipl']=$sql; 

請幫助我解決這個問題

+0

有什麼錯誤? – BartekR 2012-01-03 06:33:33

+0

所有選項都有相同的「選項」。這錯誤地錯誤(並且可能導致一些混亂)。你最好的選擇是從「選項」中刪除id(或者在它們之後添加一個計數器,甚至是值)。 – roselan 2012-01-03 06:57:07

+0

錯誤是 - >致命錯誤:調用第9行中的C:\ wamp \ www \ newatmindia \ application \ views \ roleschecked.php中的非對象上的成員函數result(),並顯示錯誤的視圖文件爲

選擇了以下的人

<表邊界= 2> Sl.No 名稱 角色 <?的PHP的foreach($ dipl->結果()作爲$行) { ?> ​​ slNo> ​​名稱> ​​角色> ? masterprogrammer 2012-01-03 07:01:52

回答

1

你爲什麼寫在一個隱藏字段逗號分隔的所有複選框?

您可以直張貼他們作爲一個數組:

<input type="checkbox" name="options[]" value="123" /> 
<input type="checkbox" name="options[]" value="543" /> 
在您的控制器

你得到的檢查框爲

$options = $this->input->post('options'); 

所以你tabledata()功能看起來就像這樣:

function tabledata(){ 

    $options = $this->input->post('options'); 
    $sql=array(); 
    foreach($options as $option){ 
     $sql[]=$this->rolesmodel->roleselect(intval($option)); 
    } 

    // I'm not sure why you are assigning this back into the same array?! 
    $sql['dipl']=$sql; 
    $slr=$this->load->view('roleschecked',$sql,true); 
    $value=array(
     'result'=>$slr 
    ); 
    echo json_encode($value); 
} 

請大家看看註釋行,在這裏您將所有SQL stateme回到sql數組中,這對我來說看起來很奇怪。

+0

的原因我寫在一個隱藏字段逗號分隔的所有複選框是因爲我從我從model.the視圖頁面了與模型頁低於 – masterprogrammer 2012-01-03 06:40:58

+0

視圖頁面的表格讓這些chkbox值:

result() as $row) { ?>
SL.NO NAME ROLES
slNo?>. name?> role?>
masterprogrammer 2012-01-03 06:44:15

+0

和該模型是功能selectroles() \t { \t \t $ slct =「SELECT * FROM dummyroles」; \t \t $ qry = $ this-> db-> query($ slct); \t \t return $ qry; \t} – masterprogrammer 2012-01-03 06:44:27

0

對於我來說,它看起來像konsolenfreddy建議 - 看$ SQL [ '工學碩士']分配。當你第一次給$ sql賦值時,你有一系列的查詢結果。然後再次分配$ sql,但是您在同一個數組上執行$ sql,但是使用索引'dipl'。你得到的是數組的數組。看一下例子:

$aSql = array(); 
$aSql[] = 'foo'; 

$aSql['bar'] = $aSql; 

var_dump($aSql); 

result >>> 

array(2) { 
    [0]=> 
    string(3) "foo" 
    ["bar"]=> 
    array(1) { 
    [0]=> 
    string(3) "foo" 
    } 
} 

嘗試重命名你的內心$ sql中,像這樣:

// function tabledata() 
$innerSql = array(); 
for($i = 0; $i < count($pieces); $i++) { 
    $piec = $pieces[$i]; 
    $innerSql[] = $this->rolesmodel->roleselect($piec); 
} 

$sql['dipl'] = $innerSql;