我有一个数据库表,其中包含meta_id对应于meta_data列中数据的值。但现在我想在引导程序表中显示该数据。
我在php myadmin中有一个这样的表
我希望结果如下:
我目前已经写了这个查询,但我很困惑如何最好地做到这一点。
我想通过计算存在的行然后将它们除以表头数我应该得到表行循环,然后我可以插入我的表列但它仍然会创建比我需要的更多的列。
<?php
$sql="SELECT * FROM table WHERE pid=".$this->item->id." ORDER BY meta_data ASC";
$db->setQuery($sql);
$db->query();
$count=$db->getNumRows();
$meta= $db->loadObjectlist();
foreach($meta as $data){
$metadata .= '<td>'.$data->meta_data.'</td>';
}
$count = $count/2; // i know there will be only two th's
?>
<table class="table table-striped">
<thead><tr><th>Item</th><th>Price</th></tr></thead>
<tbody>
<?php for ($x = 1; $x <= $count; $x++) { ?>
<tr><?php echo $metadata; ?></tr>
<?php } ?>
</tbody>
</table>
这是做什么的:
我越来越近了!
<?php
$sql="
SELECT * FROM table WHERE pid=".$this->item->id."
AND
meta_id IN (SELECT meta_id FROM table GROUP BY meta_id HAVING COUNT(*) > 1)
";
$db->setQuery($sql);
$meta= $db->loadObjectlist();
foreach($meta as $data){
$metadata .= '<tr><td>'.$data->meta_data.'</td></tr>';
}
?>
<table class="table table-striped">
<thead><tr><th>Item</th><th>Price</th></tr></thead>
<tbody>
<?php echo $metadata; ?>
</tbody>
</table>
以上现在给我这个:
答案 0 :(得分:1)
$sql="SELECT "put here column name you want to display in html table "
FROM table WHERE pid=".$this->item->id." ORDER BY meta_data ASC";
例如:如果您的列名是Item&amp;价格比查询看起来像
$sql="SELECT Item,price FROM table WHERE pid=".$this->item->id."
ORDER BY meta_data ASC";
所以你只得到物品和来自数据库的价格。
另一种方法是你可以在你的循环中做一些改变,如
foreach($meta as $data){
$metadata .= '<td>'.$data->meta_data['Item'].'</td>
<td>'.$data->meta_data['Item'].'<td>';
}