用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4999|回复: 19
收起左侧

[HELP] 关于数组的问题,大哥大姐来看看哈

  [复制链接]
发表于 2011-12-25 17:18:18 | 显示全部楼层 |阅读模式
我想做一个批量删除的功能,想问下怎么 获取视图上的数组,我这样写得到的得不到视图上选择了的ID
我的思路是从视图传回一个数组到控制器,然后控制器在对相应的ID进行操作。请各位给点意见

视图文件:
HTML复制代码
 
           <?php  echo form_open('college/do_excel/btnAC','id=form1','name=form1');?>
            <table  width="875" border="2"  class="user_gl_v_table3" cellpadding="0" cellspacing="0" bordercolor="#00CC00">
              <tr align="center" style="font-weight:600; line-height:30px;">
                <th><div align="center">
            <input type="checkbox" name="chkall" value="checkbox"  class="btn2" id="chkall" />
            </div></th>
                <th width="126">学号</th>
                <th width="127">姓名</th>
                <th width="134">辅导员</th>
                <th width="144">辅导员工号</th>
                <th width="118">状态</th>
                <th width="266" colspan="4">操作</th>
              </tr>
             
              <?php  
                   foreach( $student_array as $value )
                     {  
                       echo $value;
                     }
                   ?>  
         <tr>
            <td  colspan=20 ><input name="全选" type="button" class="btn1" id="全选"          value="全选" />   &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
            <input type="submit" name="action" value="激活" class="btn1" />
            <input type="submit" name="action" value="冻结" class="btn1" />
            <input type="submit" name="action" value="删除" class="btn1"></td>
        </tr>
           </table>
   </form>
 
 
复制代码


控制器输出表格文件:
PHP复制代码
 
         $query2 = $this->db->query("SELECT * FROM student,instructor WHERE instructor.id  = instructor_id limit 20 ");
        if($query2->num_rows() > 0){
            $temp = 0;
            foreach ($query2->result_array() as $row)
            {
                  if($row['life']==0)
                   {
                       $life="冻结";
                    }else{
                        $life="激活";
                     }
                   $student_array[$temp] = <tr><td><div align=\"center\"> <input type=\"checkbox\" name=\"tabledb[]\" value=".$row['id']." /></div></td><td>".$row['s_account']."</td><td>".$row['s_name']."</td><td>".$row['ins_name']."</td><td>".$row['instructor_id']."</td><td>" .$life."</td> </tr>";
               $temp++;
             }    
         }else{
              $student_array[0] ="<tr><td  align=\"center\" colspan=\"6\" >抱歉,暂时没有此相关数据!</td></tr>";
         }
 
 
复制代码



控制器按钮处理文件:
PHP复制代码
 
       function btnAC(){
       
        $action =$this->input->post('action');  
        $get_id = array($this->input->post('tabledb'));//用工号
        echo $get_id;
        switch($action){
            case '激活';
                $this->jh($get_id);
                break;
            case '冻结';
                $this->dj($get_id);
                break;
            case '删除';
                $this->del($get_id);
                break;
            default;
                break;
        }
   
    }
 
 
复制代码



发表于 2011-12-25 21:28:53 | 显示全部楼层
<input type="checkbox" name="chkall[]" value="<?php echo $your_data_id; ?>"  class="btn2"  />
发表于 2011-12-26 09:10:42 | 显示全部楼层
本帖最后由 hainuo 于 2011-12-26 09:11 编辑

$student_array[$temp] = <tr><td><div align=\"  这里应该会报错吧
PHP复制代码
$student_array[$temp] = "<tr><td><div align=\"
复制代码
发表于 2011-12-26 11:03:31 | 显示全部楼层
每一行设一个 checkbox ,然后在每一行的tr处写一个唯一的ID,类似于:

<?php foreach($data AS $user) : ?>
<tr id="data_<?php echo $user['id']; ?>">
    <td><input type="checkbox" name="id[]" class="ids" value="<?php echo $user['id']; ?>" /></td>    <td>XXX</td>
    <td>XXX</td>
    <td>XXX</td>
    <td>XXX</td>
</tr>
<?php endforeach; ?>

然后使用 ajax 提交,用 $id_array = $this->input->post('id'); 这个 $id_array 是一个数组,再 foreach() 删除就行了,ajax回调里就删除 $('#data_' + id + '') 即可,这样很方便的。
 楼主| 发表于 2011-12-27 17:25:48 | 显示全部楼层
thenbsp 发表于 2011-12-26 11:03
每一行设一个 checkbox ,然后在每一行的tr处写一个唯一的ID,类似于:

可是我不会用ajax
发表于 2011-12-28 17:29:03 | 显示全部楼层
你这个代码看着就头大
既然没有用到ajax干嘛还在控制器里输出html,html都应该写在view里面啊
控制器输出就应该把结果集数组传到view里面在view循环输出结果集就可以了
批量操作就是沙发所说的把checkbox的name属性名称加上"[]"
控制器接收的时候$this->input->post('chkall')这样接收,然后你print接收到的这个变量~他输出的是个array数组,里面的数据就是你前面勾选的checkbox的value值
 楼主| 发表于 2011-12-28 17:58:58 | 显示全部楼层
zhouli520 发表于 2011-12-28 17:29
你这个代码看着就头大
既然没有用到ajax干嘛还在控制器里输出html,html都应该写在view里面啊
控制器输出 ...

不知道在视图里面 怎么循环输出丫 怎么在手册里面没看到涅
发表于 2011-12-28 18:09:13 | 显示全部楼层
本帖最后由 zhouli520 于 2011-12-28 18:09 编辑
栺尖灬丿流年ヽ 发表于 2011-12-28 17:58
不知道在视图里面 怎么循环输出丫 怎么在手册里面没看到涅
PHP复制代码
<?php if(isset($member)){?>
 
        <?php for($y=0;$y<count($friend);$y++){?>
<div id="sI<?php echo $friend[$y]['iid']?>" class="recommend_mimg_div">
<div class="uname"><a href="#"><?php echo substr($friend[$y]['firstname'],0,9) ?><br/><?php echo substr($friend[$y]['lastname'],0,9) ?></a></div>
</div>
<?php }}?>
 
 
复制代码



视图里面也是可以使用php代码的,或用php标签~手册不是万能的
 楼主| 发表于 2011-12-28 20:15:01 | 显示全部楼层
zhouli520 发表于 2011-12-28 18:09
视图里面也是可以使用php代码的,或用php标签~手册不是万能的

我以为ci像thinkPHp一样 也有一个 可以在视图里面 循环输出的标签
 楼主| 发表于 2011-12-28 20:26:19 | 显示全部楼层
怎么我获取到的  只是一个 array 涅 都没有值的

点评

checkbox的name要加[]你没加吧  发表于 2011-12-29 12:33

本版积分规则