PHP回显'<p>'打印</p> <p> </p>

时间:2013-06-04 10:46:05

标签: php html while-loop echo

我正在尝试在php中创建一个循环来显示循环工作正常的类别列表,并且sql查询会提取所有正确的信息但是我正在尝试为每个回显一个

标记循环增量的4倍,这将在我的网站设计上创建一个新行。当我使用echo '<p>';回显p标签时,问题是如何直接创建一个结束标记。

这是我的代码:

    echo '<!-- Create first 4 --><P>';
                while($row1 = mysql_fetch_array($result1))
                    {  

                    echo '<div class="cat">';     
                    echo '<img src="'.$row1['IMAGE'].'" alt="'.$row1['NAME'].'">';
                    echo '<h2>'.$row1['NAME'].'</h2>';
                    echo '</div>';
                    $i++;

                    //force a new line of catagories
                    if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
                        {
                            echo '<!-- if more than 4 Close first 4 --></p>';
                            echo '<!-- Create second 4 --><p>'; 
                        }       
                    } 
                    echo '<!-- close first 4 --></p>';

当这在firefox中运行时,我检查源代码我得到了这个:

<div class="content">
  <!-- Create first 4 -->
<p></p><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div>
  <!-- if more than 4 Close first 4 -->
<p></p>
  <!-- Create second 4 -->
<p></p><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div>
  <!-- if more than 4 Close first 4 -->
<p></p>
  <!-- Create second 4 -->
<p> … </p></div>

我需要它来准确打印echo语句中的内容。

3 个答案:

答案 0 :(得分:3)

您确实打印了echo语句中的内容。但是,如果happens to be invalid HTML那么浏览器可能决定“修复它”以便有一些可用的东西。

解决问题的正确方法是将<div>标记替换为<p> - 这将是有效的HTML,因此浏览器不会干扰,您可以使用CSS来适当地设置样式并获得与段落相同的视觉效果。

答案 1 :(得分:0)

查看“模数运算符”示例如下:http://php.net/manual/en/language.operators.arithmetic.php您只需检查循环是否为4,然后执行代码。我还建议你在语义上大声读出你的代码,你会轻易找到你的错误。

答案 2 :(得分:0)

我从您的代码中删除了不需要的行,并获得了以下内容:

<?php

echo "<!-- Create first 4 --><p>\n";

$i = 0;
while ($i < 14)
{  
    echo '    <div class="cat"></div>' . "\n";     
    $i++;

    //force a new line of catagories
    if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
    {
        echo '<!-- if more than 4 Close first 4 --></p>' . "\n";
        echo '<!-- Create second 4 --><p>' . "\n"; 
    }       
} 

echo '<!-- close first 4 --></p>' . "\n";
?>

结果是:

<!-- Create first 4 --><p>
    <div class="cat"></div>
    <div class="cat"></div>
    <div class="cat"></div>
    <div class="cat"></div>
<!-- if more than 4 Close first 4 --></p>
<!-- Create second 4 --><p>
    <div class="cat"></div>
    <div class="cat"></div>
    <div class="cat"></div>
    <div class="cat"></div>
<!-- if more than 4 Close first 4 --></p>
<!-- Create second 4 --><p>
    <div class="cat"></div>
    <div class="cat"></div>
    <div class="cat"></div>
    <div class="cat"></div>
<!-- if more than 4 Close first 4 --></p>
<!-- Create second 4 --><p>
    <div class="cat"></div>
    <div class="cat"></div>
<!-- close first 4 --></p>

好像没问题。您的代码中的其他位置存在问题。

顺便说一句。我建议使用if ($i % 4 == 0)代替if (( $i == 4 )||( $i == 8 )||( $i == 12 ))

相关问题