表格显示在页脚下方,无法确定在functions.php中的位置

时间:2019-01-20 00:40:48

标签: php html mysql

我创建了一个简码并将其放在我的functions.php文件中。我正在查询MySQL数据库,获得结果后,我遍历数组,最后将其显示为表格。我可以使用Difster和Elliot对问题here的回答来构建以下内容。但是,表格显示在页脚下方

add_shortcode('wpse_233031_shortcode', function(){
   global $wpdb;
   $myrows = $wpdb->get_results("SELECT * FROM PNaphtha", ARRAY_A);
   echo "<table><tr><th>SrNo</th><th>Compound</th><th>Tc (K)</th><th>Pc (bar)</th></tr>";

ob_start();

foreach ( $myrows as $row) {
   echo "<tr><td>".$row['SrNo']."</td><td>".$row['Compound']."</td><td>". 
   $row['Tc (K)']."</td><td>".$row['Pc (bar)']."</td></tr>";
   }

return ob_get_clean(); 
});

我意识到我需要关闭表格标签,但是我无法确定将</table>放在哪里。如果我使用

foreach ( $myrows as $row) {
   echo "<tr><td>".$row['SrNo']."</td><td>".$row['Compound']."</td><td>". 
   $row['Tc (K)']."</td><td>".$row['Pc (bar)']."</td></tr>  </table>";
   }

在回显第一行后,表关闭,其余数据显示为文本

enter image description here

如果我尝试将其放置在回声之后的任何位置,则我在functions.php中会出现语法错误,如果我将其保存,无论如何,我的页面上都会出现HTTP错误500。您能否建议关闭表的适当方法,以免它出现在页脚下方。根据GautamJeyaraman的回答here,我可以将其强制设置为底部“对于主页脚的CSS,添加position:relative和bottom:0。它将始终固定在底部。”但是,我也有菜单和搜索栏,这些菜单和搜索栏由于表的行为而受到干扰,因此希望修复表本身。

2 个答案:

答案 0 :(得分:3)

您正在关闭foreach循环内的表。当您的foreach循环完成(并且所有行都已打印)时,您必须关闭表:

foreach ( $myrows as $row) {
    echo "<tr><td>".$row['SrNo']."</td><td>".$row['Compound']."</td><td>". 
    $row['Tc (K)']."</td><td>".$row['Pc (bar)']."</td></tr>";
}
echo "</table>";

答案 1 :(得分:1)

add_shortcode('wpse_233031_shortcode', function(){
   global $wpdb;
    //start table tag
    $outputHTML = '<table>';
    $myrows = $wpdb->get_results("SELECT * FROM PNaphtha", ARRAY_A);
    //add table row and table header
    $outputHTML += "<tr><th>SrNo</th><th>Compound</th><th>Tc (K)</th><th>Pc (bar)</th> 
    </tr>";

ob_start();

foreach ( $myrows as $row) {
    //add each row inside the forloop
   $outputHTML += "<tr><td>".$row['SrNo']."</td><td>".$row['Compound']."</td><td>". 
   $row['Tc (K)']."</td><td>".$row['Pc (bar)']."</td></tr>";
   }
$outputHTML += = '</table>'
    //end the table after the loop has done
return ob_get_clean(); 
});

也许是这样?

不知道如何输出数据,但是您只能在最后回显构建的字符串,我有一段时间没有使用wordpress了。