用单个PHP结果集填充两列HTML表格

4

由于我是PHP的初学者,请多多包涵。

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

我希望在这个表格中将两个店铺排列在一起。例如,在表行中放置商铺编号为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>';
}

我遇到的问题是我正在逐行循环记录集,并将数据添加到每行中。我尝试在一个循环内部使用另一个循环,但结果不正确。
是否可以将结果集拆分为两个多维数组,然后分别对它们进行循环,然后将它们添加到表中?我能否通过循环内的计数器调用特定的行?
任何建议或指导将是极大的帮助。
2个回答

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。 - Rivers
太棒了,这个可行,谢谢。我必须将我的td宽度设置为50%,以保持两列的宽度一直相同,但这非常完美。谢谢! - Mike Davis

0

基于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>';
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接