我使用此代码每行显示4条记录,但它以荒谬的方式显示我的代码。即
a b c d
e f g h
i j k l
.......
但我的代码显示输出为。我不知道为什么我是一个新的PHP程序员
a b c d
e
f g h i
j
k l m n
.......
我的代码是
<?php
$con = mysql_connect("localhost","root","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydb", $con);
$result = mysql_query("SELECT * FROM Persons");
echo "<table border='1'>";
$int = 0;
while($row = mysql_fetch_array($result))
{
$int++;
if ($int%5==0)
{
echo "<tr>";
}
echo "<td>" . $row['FirstName'] . "</td>";
if ($int%5==0)
{
echo "</tr>";
}
}
echo "</table>";
mysql_close($con);
?>
提前感谢
答案 0 :(得分:0)
@ h_a86 ::看一下输出的html代码。根据你的代码,你不要在第一个循环中打开<tr>
。 (int = 0; $int++; ($int==1) != (%5==0)
)只需将$ int ++移动到while的末尾
答案 1 :(得分:0)
你除以5而不是4。 尝试
[edit]添加了完整的snippit
$int = 0;
while($row = mysql_fetch_array($result))
{
if ($int%4==0)
{
echo "<tr>";
}
echo "<td>" . $row['FirstName'] . "</td>";
if ($int%4==0)
{
echo "</tr>";
}
$int++;
}
答案 2 :(得分:0)
怎么样,
$int = 0;
while($row = mysql_fetch_array($result))
{
if ($int%5==0)
{
echo "<tr>";
}
echo "<td>" . $row['FirstName'] . "</td>";
if ($int%5==0)
{
echo "</tr>";
}
$int++;
}
在关闭片段之前放置$int++
答案 3 :(得分:0)
您的条件if( $int%5 == 0 ){...}
告诉您的代码在收到的每5条记录周围包裹<TR>
。其他记录不受影响。
此行为会产生您所看到的内容:
<table>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<tr><td>5</td></tr>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<tr><td>10</td></tr>
<td>11</td>
<td>12</td>
</table>
您需要做的是告诉代码结束上一个<TR>
并开始新的<TR>
。
尝试类似:
<?php
echo "<table>";
echo "<tr>";
$count = 1;
while($row = mysql_fetch_array($result))
{
if ( $count > 0 && $count % 4 == 0 )
{
echo "</tr><tr>";
}
$count++;
echo "<td>" . $row['FirstName'] . "</td>";
}
echo "</tr>";
echo "</table>";
?>
哪个应该产生:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr><tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr><tr>
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>