使用单个 PHP 结果集填充 2 列 HTML 表

Posted

技术标签:

【中文标题】使用单个 PHP 结果集填充 2 列 HTML 表【英文标题】:Populate 2 column HTML table with a single PHP result set 【发布时间】:2019-10-21 07:02:35 【问题描述】:

请原谅我,因为我是 php 初学者。

我正在尝试用库存信息填充 2 个两列表。使用我当前的代码,我有下图:

我想在这张表中让两家商店彼此相邻。即在表中的表行存储编号 2 和存储编号 7,然后将 10 和 11 存储在同一行,依此类推。下面是我目前用来实现这一点的代码:

global $wpdb;

$result = $wpdb->get_results( 
    $wpdb->prepare( "
        SELECT STORE_NAME,REPLACE(STORE_NAME, ' ', '-') as STOREURL, INVENTORY, STORE_NUMBER FROM StoreInventory 
        WHERE SKU = %s", 
        $product_sku 
    ) 
);

if ($result)
    echo '<table class=\'inventory\'>';
    foreach($result as $row) 
        echo '<tr><td><div><a href=\'https://mystore.com/stores/'. $row->STOREURL . '\' target=\'_parent\'>Store Number: ' . $row->STORE_NUMBER . '</a><br/>' .$row->INVENTORY. ' on hand. </div></td></tr>';
    
    echo '</table>';
 else 
    echo '<table class=\'nostock\'><td>This item is out of stock, check back later for updated information!</td></table>';

我遇到的问题是我正在逐行遍历记录集,并将数据添加到每一行。我试图在循环内有一个循环,这不会给我正确的结果。

是否可以将结果集拆分为两个多维数组并分别循环遍历每个数组,然后将它们添加到表中?我可以在循环中调用带有计数器的特定行吗?

任何建议或指导都会有很大帮助。

【问题讨论】:

【参考方案1】:

最终答案基于 ARubiksCube 的回答:

if ($result)
    $column_number = 0;
    echo '<table class=\'inventory\'><tr>';
    foreach($result as $row) 
        echo '<td \' width=\'50%\' ><div><a href=\'https://shopliquornl.com/stores/'. $row->STOREURL . '\' target=\'_parent\'>' . $row->STORE_NAME . '</a><br/>' .$row->INVENTORY. ' on hand</div></td>';
        $column_number += 1;
        if ($column_number == 2) 
            echo '</tr><tr>';
            $column_number = 0;
        
    
    echo '</table>';
 else 
    echo '<table class=\'nostock\'><td>This item is out of stock, check back later for updated information!</td></table>';

【讨论】:

【参考方案2】:

一个相对简单的方法是创建一个虚拟变量来存储列。例如:

$column_number = 0;
echo '<table class=\'inventory\'><tr>';
foreach($result as $row) 
    echo '<td><div><a href=\'https://mystore.com/stores/'. $row->STOREURL . '\' target=\'_parent\'>Store Number: ' . $row->STORE_NUMBER . '</a><br/>' .$row->INVENTORY. ' on hand. </div></td>';
    $column_number += 1;
    if ($column_number == 2) 
        echo '</tr><tr>';
        $column_number = 0;
    

echo '</tr></table>';

【讨论】:

我本来打算建议使用模数,但这样做的作用相同,只是将数字重置为 0。 太棒了,谢谢。必须设置我的 td width = 50% 以使两列一直保持相同的宽度,但这很完美。谢谢!

以上是关于使用单个 PHP 结果集填充 2 列 HTML 表的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 将多个 SQL 列组合成 HTML 表的单个列

在 PHP 中,有没有办法循环查询并根据值将其组织到特定列中?

MYSQL的连接查询

PHP MySQLi将结果集转换为HTML表

如何将单个结果集从返回多个集的 SQL 存储过程保存到临时表?

.如何使用UNION子句,它必须符合哪两条基本准则?