-1

我正在创建一个动态页面,该页面divs与一个类和一个从数据库中提取的唯一 ID 相呼应,因此可以轻松地对其进行操作。我不确定我是否以最好的方式做这件事,这对我来说似乎很草率而且难以理解。我希望有更多经验的人可以帮助我弄清楚是否有更好的方法来完成同样的事情。例如:

if ($comment['reply'] == 1) {
    echo '<div class="comment">';
    echo $comment['comment'];
    echo "</div>";
    echo '<BR /> <div class="replys" id="'.$comment['id'].'">';
    echo '</div>';
    echo '<div class="replyTo" id="'.$comment['id'].'reply">';
while ($replys = $stmt1->fetch(PDO::FETCH_ASSOC)) {
    if ($replys['order_by'] % 2 == 0){
        echo '<div class="replyToEven">';
        echo $replys['reply'];
        echo "</div>";
} else {
        echo '<div class="replyToOdd">';
        echo $replys['reply'];
        echo "</div>";
   }

}

我让它回显 a 的原因div是因为我希望所有内容都在分开divs,而不是一个将数据与 MySQL 查询分开。希望我已经提供了足够的信息,如果您需要,请告诉我。

4

3 回答 3

1

如果这就是您的意思,您可以将代码压缩很多:

if($comment['reply'] == 1){
    echo '<div class="comment">' . $comment['comment'] . '</div> <br />' . 
              '<div class="replys" id="' . $comment['id'] . '">' . '</div>' . 
                 '<div class="replyTo" id="'.$comment['id'].'reply">';

    while($replys = $stmt1->fetch(PDO::FETCH_ASSOC)){
        if($replys['order_by'] % 2 == 0){
            echo '<div class="replyToEven">' . $replys['reply'] . "</div>";
        }else{
            echo '<div class="replyToOdd">' . $replys['reply'] . "</div>";
        }
    }
}
于 2013-10-05T20:14:31.393 回答
1

PHP 的一件很酷的事情是您可以将它嵌入到 HTML 中。因此,您可以做的是使用 html 布局并使用内联 php 语句来处理您的值。我将向您展示您发布的 php 示例。

<?php if(comment['reply'] == 1 { ?>
     <div class="comment">
        <?php echo $comment['comment']; ?>
     </div>
     <br/>
     <div class="replys" id="<?php echo comment['id']; ?>" >
     <div class="replyTo" id="<?php echo $comment['id']; ?>reply">
     <?php while ($replys = $stmt1->fetch(PDO::FETCH_ASSOC)) { ?>
       <?php if ($replys['order_by'] % 2 == 0){ ?>
          <div class="replyToEven">
             <? php echo $replys['reply']; ?>
          </div>
        <?php } else { ?>
          <div class="replyToOdd">';
             <?php echo $replys['reply']; ?>
          </div>
<?php
    }
}

?>

然后,您可以获取此代码段并将其放置在一个名为的函数show_comments();中,并且在您想要以这种格式显示注释的主模板中,您可以调用该函数show_comments();,而不是再次输入此代码。

于 2013-10-05T20:19:44.473 回答
0

你不应该在你的数据库中有一个列只是为了给你的数据库分配备用行样式。相反,您可以引入一个变量并对其进行检查。

if ($comment['reply'] == 1) {
    echo '<div class="comment">';
    echo $comment['comment'];
    echo "</div>";
    echo '<BR /> <div class="replys" id="'.$comment['id'].'">';
    echo '</div>';
    echo '<div class="replyTo" id="'.$comment['id'].'reply">';
    $i = 0;
while ($replys = $stmt1->fetch(PDO::FETCH_ASSOC)) {
    if ($i % 2 == 0)
        $class = "replyToEven";
    else
        $class = "replyToOdd";

        echo '<div class="$class">';
        echo $replys['reply'];
        echo "</div>";
        $i++;
}

您还可以将标签编写为:

<?php
if ($comment['reply'] == 1) {
?>
<div class="comment"><?=$comment['comment']?></div><BR />
<div class="replys" id="<?=$comment['id']?>"></div>
<div class="replyTo" id="<?=$comment['id']?>reply">';
<?php
}
?>

这将使您的代码更具可读性。

于 2013-10-05T20:07:34.947 回答