在自定义插件中显示重复的结果

时间:2012-01-25 作者:mickburkejnr

我正在为我正在构建的Wordpress项目构建一个自定义插件,因为它是一个非常特定的项目,并且没有现成的插件适合此任务。

在一个页面上,我想在一个表中列出数据库(也是一个自定义数据库表)中的对象。目前数据库中有一个项目,我可以很容易地将其回传到页面,而不会出现任何问题。

当我尝试将此数据放入HTML表时,就会出现问题,因此当数据库中有多个对象时,可以正确地显示它。然而,正如我所说,此时数据库中只有一条记录,但当我将此数据包含到表中时,它会两次显示同一条记录。

这是我的代码:

<?php
    global $wpdb;
    $satrent = $wpdb->get_row("SELECT id, name FROM phones WHERE phonetype = \'satellite\' AND rent = \'1\'", ARRAY_N);
?>
对于HTML表:

        <?php
        foreach($satrent as $sr)
        {
        ?>
        <tr>
            <td>&nbsp;</td>
            <td><?php print $satrent[1]; ?></td>
            <td><a href="#view">View</a></td>
            <td><a href="#edit">Edit</a></td>
            <td><a href="#delete">Delete</a></td>
        </tr>
    <?php
    }
    ?>
我是否错过了什么或做错了什么?

非常感谢!

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

问题是get_row 返回行对象(或数组),而不是行对象数组。

你想要的$wpdb->get_results 相反如果只有一个结果,则始终返回一个行对象数组,即事件。

您还可以添加

   if($satrent){
    //Foreach on $satrent
  }
因此,如果没有返回任何结果,您只需不显示表(或显示其他内容),而不是尝试遍历空对象,这将导致错误。

正如Chip在他的回答中指出的那样:你正在使用$satrent 在foreach循环中,而不是$sr.

请尝试以下代码:

<?php
    global $wpdb;
    $rows= $wpdb->get_results("SELECT id, name FROM phones WHERE phonetype = \'satellite\' AND rent = \'1\'", ARRAY_A);
?>
然后循环遍历每行

<?php  if($rows): ?>
<?php  foreach($rows as $row): ?>
      <tr>
            <td>&nbsp;</td>
            <td><?php echo $row[\'name\']; ?></td>
            <td><a href="#view">View</a></td>
            <td><a href="#edit">Edit</a></td>
            <td><a href="#delete">Delete</a></td>
        </tr>
   <?php endforeach; ?>


<?php endif; ?>
Edit: 请参阅芯片回答为什么会看到重复。但您看到的是两行,因为您正在遍历每个返回的列:“name”和“id”。在对芯片进行校正后,您会发现该表为数据库中的每一列显示了一行-请参阅我的解决方案以解决此问题。

SO网友:Chip Bennett

您的问题可能在这里:

foreach($satrent as $sr)
。。。这里:

<td><?php print $satrent[1]; ?></td>
您正在使用$satrent 在您的foreach 循环,而不是$sr.

编辑完整答案,请参见@StephenHarris的答案,其中包括这一个。

结束

相关推荐

Home.php或FrontPage(通过设置)用于主题?

好啊我(再次)从培训资源那里得到了相互矛盾的指示。这次我的问题是\"how to set a default homepage\".一个教程(Coyers“WordPress 3:创建和编辑自定义主题”)uses home.php, 而另一位(专业WordPress)建议设置“首页显示…”通过WordPress(设置>阅读)。。。啊哈!在查看论坛和博客时,我看到了同样的问题:conflicting advice. 一个用户建议NEVER 使用主页。主题中的php模板页为“It can cause p