2012-01-03 53 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;