将代码与循环显示合并

时间:2010-11-12 21:04:04

标签: php html mysql

尝试使用mysql结果创建DIV容器,每个结果包含10个块。

$ balloon_count =每个div应保留的记录数量。

$ ui =循环计数器。

功能简单,不想使用模板引擎。

尝试使用 MODULUS 运算符来简化div cut。

不起作用。任何方向都非常感谢。


示例代码

        $ui=1;
        $balloon_holds = 10;

        while($row = mysql_fetch_array($result))
        {            


            if($ui==1||$ui%$balloon_holds != 0)
                {                    
                echo '<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>';
                echo "<td style=\"font-size:small;vertical-align:text-top;\">";
                }


                echo '<input disabled type="checkbox" value="$row[id]"'; $this->ischecked($uid,$row[id]); echo "/>".$row['name'].'<br>'."\r\n";


                if($ui==10||$ui%$balloon_holds != 0){             
                echo '</td></tr></table></div>';                  
                }



            $ui++; 

        }

示例预期的“HTML”输出

<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>
<td style="font-size:small;vertical-align:text-top;">         
Record1
Record2
Record3
Record4
Record5
Record6
Record7
Record8
Record9
Record10    
</td></tr></table></div>

<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>
<td style="font-size:small;vertical-align:text-top;">         
Record11
Record12
Record13
Record14
Record15
Record16
Record17
Record18
Record19
Record20    
</td></tr></table></div>           

4 个答案:

答案 0 :(得分:0)

$ui=0;
$balloon_holds = 10;

while($row = mysql_fetch_array($result))
{            

        $exit = 0;
   if($ui==1||$ui%$balloon_holds != 0)
            {                    
            echo '<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>';
            echo "<td style=\"font-size:small;vertical-align:text-top;\">";
            }


        echo '<input disabled type="checkbox" value="$row[id]"'; $this->ischecked($uid,$row[id]); echo "/>".$row['name'].'<br>'."\r\n";

$ui++; 


        if($ui%$balloon_holds == 0){             
  echo '</td></tr></table></div>';          
        $exit = 1;
        }





}

if($exit == false){
    echo '</td></tr></table></div>';  
}

答案 1 :(得分:0)

如果我正确理解了这个问题,你需要&lt; div&gt; $ ui = 1,11,21,31,...和&lt; / div&gt;的开场白接近10,20,30,40,...

如果这是正确的,你的模数运算符应该这样改变:

if($ui%$balloon_holds == 1)
{                    
    ...
}

...

if($ui%$balloon_holds == 0)
{
    ...
}

答案 2 :(得分:0)

if($ui==1||$ui%$balloon_holds != 0)

除非$ ui是10的倍数,否则这将永远为真,因此您将输出除0,10,20等之外的所有行的页眉/页脚块...以及$的一个案例ui是1。

最可能这样更容易理解:

$row_cnt = 0;
$max_rows = 10;

while($row = ...) {
    if ($row_cnt == 0) {
       // output header
    }
    // output row data
    if ($row_cnt == 9) {
       // output row footer
    }
    $row_cnt++;
    $row_cnt %= $max_rows; // ($row_cnt resets to 0 when it reaches 10)
}

答案 3 :(得分:0)

这是我的建议,它也更具可读性/可维护性。

    $ui=0;
    $balloon_holds = 10;

    while ($row = mysql_fetch_array($result))
    {
        if ($ui % $balloon_holds)
        {
            if ($ui >= 10)
            {
                echo '</td></tr></table></div>';
            }

            echo '<div><table style="width:400px;border:2px solid gray;border-style:dashed;"><tr>';
            echo "<td style=\"font-size:small;vertical-align:text-top;\">";
        }

        echo '<input disabled type="checkbox" value="$row[id]"';
        $this->ischecked($uid,$row[id]);
        echo "/>".$row['name'].'<br>'."\r\n";

        $ui++;
    }

    if ($ui > 0)
    {
        echo '</td></tr></table></div>';
    }