0

<h3><?php echo $name; ?></h3>我试图为循环中出现的每个项目显示几行数据。

使用当前代码,它只为每个项目显示一行<h3><?php echo $name; ?></h3>

我的functions.php文件中有这个 $newdb = new wpdb('login', 'pass', 'db', 'host');

<?php $result=$newdb->get_results('select tbl1.name, tbl2.col1, tbl2.col2, tbl2.col3 from tbl1, tbl2 where tbl1.name=tbl2.tbl1_name');
$names=array();
foreach($result as $row): ?>
<?php $names[$row->name][]=$row;
endforeach; ?>
<?php foreach($names as $name=>$info): ?>

    <h3><?php echo $name; ?></h3>
    <table>
       <tr><th>col1</th><th>col2</th><th>col3</th></tr>
        <?php foreach($info as $n):?>       
        <tr>
            <td><?php echo $n->col1; ?></td>
            <td><?php echo $n->col2; ?></td>
            <td><?php echo $n->col3; ?></td>    
        </tr>
        <?php endforeach; ?>
    </table>    
<?php endforeach; ?>

所以循环显示标题后跟几行记录,而不仅仅是一行。

<h2>Name</h2>
<table>
<tr><th>col1</th><th>col2</th><th>col3</th></tr>
        col1-value1  col2-value1  col3-value1
        col1-value2  col1-value2  col1-value2
        etc.
</table>

<h2>Name</h2>
<table>
<tr><th>col1</th><th>col2</th><th>col3</th></tr>
        col1-value1  col2-value1  col3-value1
        col1-value2  col1-value2  col1-value2
        etc.
</table>

<h2>Name</h2>
<table>
<tr><th>col1</th><th>col2</th><th>col3</th></tr>
        col1-value1  col2-value1  col3-value1
        col1-value2  col2-value2  col3-value2
        etc.
</table>
.....`
4

1 回答 1

1

可以使用您的想法,但您可以使用一个查询来做到这一点

global $wpdb;
$result=$wpdb->get_results('select a.col, b.col1, b.col2, b.col3 from a,b where a.col=b.col5');

假设你有tbl1一个表,它有一个name字段和一个tbl2表,它有一个字段,例如tbl1_name,它具有名称字段和其他字段的名称值tbl1,(没有重复)所以你可以加入两个表,如

$result=$wpdb->get_results('select tbl1.name, tbl2.col1, tbl2.col2, tbl2.col3 from tbl1, tbl2 where tbl1.name=tbl2.tbl1_name');
$names=array();
foreach($result as $row): ?>
    $names[$row->name][]=$row;
<?php endforeach; ?>
foreach($names as $name=>$info):
    echo $name;
    ?><table><?php
    foreach($info as $n):
    ?>
            <tr>
                <td><?php echo $n->col1; ?></td>
                <td><?php echo $n->col2; ?></td>
                <td><?php echo $n->col3; ?></td>
            </tr>
    <?php
    <?php endforeach; ?>
    ?></table><?php
<?php endforeach; ?>

另请记住$wpdb,它是一个全局对象,可通过模板文件使用,因此您无需使用new创建实例,只需使用global我在回答中写的关键字即可。

类参考/wpdbsql join这个.

于 2012-10-20T19:22:45.913 回答