1

我正在尝试在 php 中创建一个循环以显示循环工作正常的类别列表,并且 sql 查询会提取所有正确的信息但是我试图<p>为每 4 次循环增量回显一个标签,这会创建一个新的在我的网站设计上。当我使用echo '<p>';它回显 ap 标签时,问题是如何立即创建一个结束标签。

这是我的代码:

        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 语句中的内容。

4

3 回答 3

3

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

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

于 2013-06-04T10:49:56.170 回答
0

在这里查看“模运算符”示例:http: //php.net/manual/en/language.operators.arithmetic.php您只需要检查您的循环是否为 4 的因子,然后执行您的代码。我还建议你从语义上大声读出你的代码,你会很容易发现你的错误。

于 2013-06-04T10:53:48.063 回答
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 ))

于 2013-06-04T10:58:13.163 回答