![](/img/trans.png)
[英]how to check the last entry in a while loop and insert row after the last row in a table in php
[英]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.