2011-12-08 33 views
-1

我使用此代碼來顯示每行4條記錄,但它以荒謬的方式顯示我的代碼。即PHP 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

它往往更容易首先創建一個數據結構,你所希望的方式(即4個元素的數組的數組)然後從中創建HTML。 – Sjoerd

+0

可能的重複[如何使用數據庫中的值創建php 2列表?](http://stackoverflow.com/questions/7299913/how-to-create-php-2-column-table-with-values-從數據庫) –

+0

解決方案的答案之一是?如果是這樣,請接受 –

回答

0

@ h_a86 ::看一看的outputed HTML代碼。根據你的代碼,你不會在第一個循環中打開<tr>。 (int = 0; $int++; ($int==1) != (%5==0))只需移動$ INT ++權以前生產的同時

+0

嘿,我不明白你能否詳細說明。您的第一個循環中的 –

+0

您的int計數器設置爲1,這不會將置於適當的位置。或者將int計數器設置爲-1,或者在while循環結束時移動int增量。 – Rufinus

0

你被5而不是4 將結束試

[編輯]添加完整的這段

$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++; 
} 
+0

同樣的結果 –

+0

如果你的陳述語句都這樣做。如果$ int/4的其餘部分爲零,則它將打印一個和。對於$ int = 0,4,8,12等,$ int/4的其餘部分爲零。 –

+0

順便說一句,在最後也增加$ int,如其他答案中所述 –

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++你關閉前一陣

+0

不起作用相同結果 –

+0

如上所述在我的回答中,這一個除以5.你想要4,因爲他只需要4個單元靠近彼此 –

0

您的條件if($int%5 == 0){...}會告訴您的代碼在接收到的每第五條記錄周圍包裝<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> 
+0

一個問題。它顯示除第1行和最後一行以外的每行中的4個名稱。一世。在第一行和最後一行中有3個名稱,其餘行中有4個 –