首页 > 解决方案 > 创建新数组仅用于从表中打印选中的行

问题描述

我有一个由查询填充的表,通过一个简单的 foreach 循环。现在,我想打印该表的已检查行,但是当前可打印的表在另一个表上<div>,因为它们具有完全不同的格式和样式,而第二个表(实际上我能够打印的表)得到了具有与 result_array 完全相同的查询的数据。

我试图弄清楚如何将第一个表的已检查行转换为单独的数组并使用该数组而不是第二个的查询,因此只能打印已检查的行。

我一直在尝试打印第一张桌子本身,但它没有按我的意愿显示,而且它使用了很多彩色墨水(这是不可能的)。我已经尝试不同的方法很长一段时间了,但我没有意识到它们在不同的容器上(完全是一个愚蠢的错误,ik),它只是想到了制作这个新数组来实现它,但只是不知道如何进行。

<div class="tab-pane" id="TLL">
<table class="table table-bordered" style="color: Black" id="table-3">
<?php
$control_info= $this->db->query("select * 
                                from controlsemanal 
                                where vendedora = 'Taller' 
                                and Indicador != '1' 
                                and Indicador !='100' 
                                ORDER BY FIELD (Id_Status,1,3,4,5,6,2,7,0) ");
?>
<thead> etc etc </thead>

<tbody>
<?php
$arr_loop = $control_info;
foreach ($arr_loop->result_array() as $row) {
<tr> <th>
<div>
<input type="checkbox" name="check[]" value="">
</div>
</th>
etc etc
</tr>
</tbody>
</table>

这是可打印的表格

<div style="display:none" id="imprimeme3">
$control_info= $this->db->query("select * 
                                from controlsemanal 
                                where vendedora = 'Taller' 
                                and Indicador != '1' 
                                and Indicador !='100' 
                                ORDER BY FIELD (Id_Status,1,3,4,5,6,2,7,0) ");
<table>
foreach ($control_info->result_array() as $row) {
etc etc
}
</table>

<center>
<button style="border:0;background:#04998A;color:white;width:550px;height:50px;font-size: 30px" onclick="imprimir3();">
<b>IMPRIMIR</b>
</button>
</center>
</div>

打印第二张表的功能

function imprimir3() {
        var objeto = document.getElementById('imprimeme3'); 
        var ventana = window.open('', '_blank'); 
        ventana.document.write(objeto.innerHTML);        
        ventana.document.close();
        ventana.print();
        ventana.close();
    }

我试图在这里使代码尽可能短,以免打扰,任何帮助将不胜感激,非常感谢。

标签: php

解决方案


好的,在第一段代码中创建表单,使用您的主键作为复选框的值:

<div class="tab-pane" id="TLL">
<table class="table table-bordered" style="color: Black" id="table-3">
<?php
$control_info= $this->db->query("select * 
                                from controlsemanal 
                                where vendedora = 'Taller' 
                                and Indicador != '1' 
                                and Indicador !='100' 
                                ORDER BY FIELD (Id_Status,1,3,4,5,6,2,7,0) ");
?>
<thead> etc etc </thead>

<tbody>
<?php
$arr_loop = $control_info;
foreach ($arr_loop->result_array() as $row) {
?>
<tr> <th>
<div>
<input type="checkbox" name="check[]" value="<?php echo $row['referencia']; ?>">
</div>
</th>
etc etc
</tr>
<?php
} // I guess foreach ends here
?>
</tbody>
</table>

然后在你的第二个表(处理 $_POST 表单)中只获取标记的项目:

  1. check必须是一个数组,包含reference每个标记的项目
  2. 未标记的复选框不与表单一起发送
  3. 从它们中创建一个列表以创建过滤器“ref1, ref2, ... refX”

我猜您的参考列是数字,如果不是,请发表评论,我会修复查询

$referencias = (isset($_POST['check'])) ? implode(', ', $_POST['check']) : '';

// Create your query, filtering by $references
$control_info= $this->db->query("select * 
                            from controlsemanal 
                            where vendedora = 'Taller'
                            and referencia IN ($referencias)
                            ORDER BY FIELD (Id_Status,1,3,4,5,6,2,7,0) ");
// Create your table here

推荐阅读