删除循环中打印的重复列

时间:2009-11-27 13:21:38

标签: php

我使用下面的代码从数组中打印但是打印的列数太多了,因为我使用的是foreach循环...

我如何只打印1个col1和1个col2,但保持正确的字符串打印?

<div class="feature-text">
<?php 
//Now print the associated cms_page_parts
$qpp = $conn->query("SELECT * FROM cms_page_part WHERE page_id=$id"); 
$rpp = $qpp->fetchAll(PDO::FETCH_ASSOC);

foreach ($rpp as $row) {
?>
  <div id="col1">
    <p><?php echo $row['name']=='body' ? $row['content_html'] : NULL; ?></p>
  </div>
  <div id="col2">
    <p class="testimonial"><?php echo $row['name']=='sidebar' ? $row['content_html'] : NULL; ?></p>
  </div>
<?php 
}
?>
</div>

6 个答案:

答案 0 :(得分:1)

在循环的每次迭代中,当我怀疑你只想要一个div时,你会打印两个div。怎么样呢:

foreach ($rpp as $row) {
    if ($row['name'] == 'body') {
        echo '<div id="col1">'
             . '<p>' . $row['content_html'] . '</p>'
             . '</div>';
    } else {
        echo '<div id="col2">'
             . '<p class="testimonial">' . $row['content_html'] . '</p>'
             . '</div>';
    }
}

答案 1 :(得分:0)

break结束当前for,foreach,while,do-while或switch结构的执行。 http://php.net/manual/en/control-structures.break.php

答案 2 :(得分:0)

您可以使用LIMIT 0,2子句限制查询仅返回2行。

或者你可以在循环中使用一个简单的计数器:

$counter = 0;
foreach ($rpp as $row) {
   if ($counter < 2) {
?>
  <div id="col1">
    <p><?php echo $row['name']=='body' ? $row['content_html'] : NULL; ?></p>
  </div>
  <div id="col2">
    <p class="testimonial"><?php echo $row['name']=='sidebar' ? $row['content_html'] : NULL; ?></p>
  </div>
<?php 
  $counter++;
  }
else
    break;
}

答案 3 :(得分:0)

foreach ($rpp as $row) {
    if ($row['name'] == 'body') {
        echo '<div id="col1">';
        echo '<p>' . $row['content_html'] . '</p>'
        echo '</div>';
    } else if ($row['name'] == 'sidebar')  {
        echo '<div id="col2">';
        echo '<p class="testimonial">' . $row['content_html'] . '</p>';
        echo '</div>';
    }
}

? 如果你输入一些输入数据样本和想要的结果会更容易;)

答案 4 :(得分:0)

如果你将你的查询限制为2并且只拔出正文和侧边栏,你就会笑:

SELECT * FROM cms_page_part WHERE page_id=$id AND (name ='body' OR name='sidebar' ) LIMIT 2

答案 5 :(得分:0)

如果我理解正确的问题,这样的事情应该有效:

<div class="feature-text">
    <?php 
    //Now print the associated cms_page_parts
    $qpp = $conn->query("SELECT * FROM cms_page_part WHERE page_id=$id"); 
    $rpp = $qpp->fetchAll(PDO::FETCH_ASSOC);

    $col1 = "";
    $col2 = "";
    foreach ($rpp as $row) {
        $col1 .= '<p>'.($row['name']=='body' ? $row['content_html'] : NULL).'</p>';
        $col2 .= '<p class="testimonial">'.($row['name']=='sidebar' ? $row['content_html'] : NULL).'</p>';
    }
    ?>
    <div id="col1">
        <?php echo $col1 ?>
    </div>
    <div id="col2">
       <?php echo $col2 ?>
    </div>
</div>