【问题标题】:Display columns headers values in rows with PHP table使用 PHP 表在行中显示列标题值
【发布时间】:2014-12-20 21:46:38
【问题描述】:

我有这张桌子:

前段时间,我正在寻找一种方法,可以使用 MySQL 数据中的 PHP 表在行中显示列,但我找到了!这里有人帮我解决这个问题。

但现在我看到一个错误,某行出现错误,因为我需要在 <th> 中显示 DB 中的“prov_name”值,而不是表中的字段名称,我的意思是像这样 Fiddle

现在我看到错误在这一行:

<th colspan="2"><?php echo "prov_name $x"; ?></th>

我知道这是错误的,因为应该说 $prov_name 或带有变量的东西,因为 prov_name 总是不同的。

这是代码(除此之外一切正常):

$db = JFactory::getDbo();    
$query = $db->getQuery(true);
$data = array();
$query="SELECT * from provprices WHERE CA_id= ".$CA_id;
$results = mysql_query($query);

$db->setQuery("SELECT * from provprices");
while($row = mysql_fetch_array($results)) {
    $data[$row['prov_name']][] = $row;
}

$keys = array_keys($data);
$size = count($keys);
$vals = array();
// grouping:
// if there are six (cam1 to cam6)
// then group them by cam1, ... to cam6, then repeat until theres no more left
while(count($data) > 0) {
    foreach($keys as $key) {
        if(!empty($data[$key])) {
            $vals[] = array_shift($data[$key]);
        } else {
            unset($data[$key]); // remove them if empty
        }
    }
}
$vals = array_chunk($vals, $size); // split them by how many prov_names
?>
<div class="datagrid" id='Three'>
<table class="prices" >
    <!-- PROV NAMES -->
    <tr><?php for($x = 1; $x <= $size; $x++): ?>

////////////////////////////////////// THIS LINE
        <th colspan="2"><?php echo "prov_name $x"; ?></th>
////////////////////////////////////// THIS LINE

    <?php endfor; ?></tr>

    <!-- unitval totvals -->
    <tr><?php for($x = 1; $x <= $size; $x++): ?>
<td style="background-color: #00CDB9; border-bottom: 4px solid #006f7d; color: white;  font-weight: bold; border-right: 4px solid #006f7d;">Valor Unitario
</td>
<td style="background-color: #00CDB9; border-bottom: 4px solid #006f7d; color: white;  font-weight: bold; ">
Valor Total
</td>
    <?php endfor; ?>
    </tr>

    <!-- the grouped values -->
    <?php foreach($vals as $val): ?>
        <tr>
        <?php foreach($val as $v): ?>
            <td><?php echo $v['unitval']; ?></td>
            <td><?php echo $v['totval']; ?></td>
        <?php endforeach; ?>
        </tr>
    <?php endforeach; ?>
</table>

【问题讨论】:

  • 嗨。我记得这个问题。我想我是回答这个问题的人。你为什么把它改成mysql?我用 pdo 回答了这个问题,哈哈。我想我现在明白了。而不是文字 prov_name。您想将相应的值打印到该 prov_name。那是对的吗?如是。你从哪里得到它们?也许你需要另一个查询
  • @Ghost !是的,你是唯一在这个问题上帮助我的人。因为 PDO 在我的服务器中不起作用,我不知道为什么。我在 joomla 中展示了这个,所以当我改变它时,它就像一个魅力,除了这部分。是的,该 prov_name 的值就像第一个 fiddle。我从同一张表(图片)中得到它们,第一个是 CAM1,第二个是 CAM2..etc.. 直到 CAM6 但并不总是 6 个 prov_name 有时只是 2 或 3。有人插入信息后fiddle有人看到这个信息。
  • 在你的小提琴中。我可以看到 camii、cam 等。这是在同一张桌子上吗?此列的名称是什么?
  • 是的,就是一个例子,因为 prov_name 总是不同的。列名是 prov_name,所以我的查询应该是 Select prov_name from provprices(table name) where CA_id = ".$CA_id; 和你的魔法。谢谢@Ghost,我希望你能帮助我。
  • 所以这是在同一张桌子上?我们已经在您可以使用的键中分配了它

标签: php html mysql arrays


【解决方案1】:

你已经很接近了,直接打印出来:

<!-- PROV NAMES -->
<tr>
<?php foreach($keys as $prov_name): ?>
    <th><?php echo $prov_name; ?></th>
<?php endforeach; ?>
</tr>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多