我在这里看到了一些例子,但没有一个真正做我想做的事。根据我提取的数据库中的包号,我最多可以有100行。我有后端工作和所有,但问题是当我希望它们显示为每个打包编号的新行时(每个出口权重后新行开始),行横跨水平。什么是最好/正确的方法?我试图用PHP做所有这些逻辑。如果我只用tr标签将td标签包装在我的PHP中,那么我只是得到一个很长的垂直数据显示...我被卡住了。谢谢!
你可以看到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);
答案 0 :(得分:2)
您正在拨打比实际需要更多的电话,而且您不会在任何地方创建新行。每个$ 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";
答案 1 :(得分:1)
在这部分代码中:
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>";
}
P.S。:上面的代码是你应该如何做的一个例子。你必须根据自己的情况调整它。
答案 2 :(得分:0)
由于您有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;
}
}
}