繁体   English   中英

在行中的最后一个单元格之后动态插入新表行

[英]Dynamically Insert New Table Row After Last Cell In Row

我在这里看到了一些示例,但是它们都没有真正按照我的意愿做。 根据要提取的数据库中的数据包编号,我最多可以有100行。 我已经完成了所有的后端工作,但是问题是当我希望它们显示为每个草捆编号的新行时,这些行只是水平跨过(新行在每个出口重量之后开始)。 最好/正确的方法是什么? 我正在尝试使用PHP来完成所有这些逻辑。 如果我只是将td标签包装在PHP中,每个标签都带有tr标签,那么我得到的是垂直较长的数据显示...我被卡住了。 谢谢!

在此处输入图片说明

您可以看到html,我的JS和PHP是(单独的文件):

的HTML

<table id="table" align="center">
            <thead>
                <tr>
                    <th>Bale #</th>
                    <th>Cable #</th>
                    <th>Shipping #</th>
                    <th>GP Cable Type</th>
                    <th>Exit Weight</th>
                </tr>
            </thead>
            <tbody id="bale_data">
            </tbody>
        </table>

JS

function baleData() {
 $.ajax({
    url: './php/baleData.php',
    success: function(data) {
        $('#bale_data').append(data);
    },
    error: function(xrs, thrownError, xhr) {
        alert("Ajax Error" + xrs.status + thrownError + xhr.status);
    }
});
};

的PHP

//Create array
$column = array("bale_no","cable_no","shipment_no","gp_cable_type","exit_weight");

//Define JSON array
$array = array();

//Run SQL for each array value
for ($i=1; $i<=100; $i++) {
    foreach ($column as $value) {
        $sql="SELECT $value FROM bundle_lanes WHERE bale_no='$i'";

        $result = mysql_query($sql) or die ('Error'.mysql_error());

        while ($data = mysql_fetch_array($result)) {
            print "<td><input value=\"".$data[$value]."\"></td>";
        }
    }
}

//Return array
print json_encode($array);

您拨打的电话超出了您的实际需要,并且您没有在任何地方创建新行。 每个$ i仅1个查询,不过您也可以通过将查询限制为100个来减少查询量。

$column = array("bale_no","cable_no","shipment_no","gp_cable_type","exit_weight");

//Define JSON array
$array = array();

//Run SQL for each array value
for ($i=1; $i<=100; $i++) {
        $sql="SELECT ".implode(',',$column)." FROM bundle_lanes WHERE bale_no='$i'";
        $result = mysql_query($sql) or die ('Error'.mysql_error());
        while ($data = mysql_fetch_array($result)) {
            print "<tr>";
            foreach($column as $value)
                print "<td><input value=\"".$data[$value]."\"></td>";
            print "</tr>";
        }
}

如果您想摆脱该foreach,请将查询更改为

$sql="SELECT ".implode(',',$column)." FROM bundle_lanes LIMIT 100";

在这部分代码上:

print "<td><input value=\"".$data[$value]."\"></td>";

您仅在创建表的表数据部分。 您需要为SQL的每个结果创建一行tr ,并为每个对象数据附加几个td

while ($data = mysql_fetch_array($result)) {
  print "<tr>";
  print "<td><input value=\"".$result[$attribute1]."\"></td>";
  print "<td><input value=\"".$result[$attribute2]."\"></td>";
  print "<td><input value=\"".$result[$attribute3]."\"></td>";
  // etc...
  print "</tr>";
}

PS:上面的代码是如何执行此操作的示例。 您必须使其适应您的上下文。

由于您有5个列,因此您可以添加一个计数器,对添加的每个单元格进行计数,并且在每5个单元格复位后创建一个新行。 这是一个例子:

$counter = 0;

//Run SQL for each array value
for ($i=1; $i<=100; $i++) {
        foreach ($column as $value) {
                if($counter == 0){
                print "<tr>"; //Create the new row
            }
                $sql="SELECT $value FROM bundle_lanes WHERE bale_no='$i'";

                    $result = mysql_query($sql) or die ('Error'.mysql_error());

                while ($data = mysql_fetch_array($result)) {
                print "<td><input value=\"".$data[$value]."\"></td>";
                $counter++; //After we added a new cell we update the counter
                }
            if($counter == 5){ //After each 5 added cells we end the new row and reset the counter
                print "</tr>";
                $counter = 0;
            }
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM