PHP while-for 嵌套循环不显示所有 MySQL 结果



我已经浏览了其他一些答案,但它们似乎没有解决我的特定问题(或者我编码错误,这也是可能的)。

我知道我的 SQL 代码工作正常,因为我得到了所有 19 行输出,但是当我将其输出到 PHP 页面时,页面使我缩短了 5 行。

如果我不尝试通过任何内容(并且只使用一列)在三列中显示结果,则所有内容都会显示。 当我尝试用"X"做三个时,就是它开始切断结果的时候。

这是我旧的,不能工作的PHP代码:

$fleet_query_results = @mysql_query($fleet_query, $connection) or die(mysql_error());
while($row = mysql_fetch_array($fleet_query_results)) {
    $display_fleet .= "<tr>";
    for($i = 1; $i < 4 && $row = mysql_fetch_array($fleet_query_results); $i++) {
        $ship_info = $row['ship_info'];
        $mem_info = $row['mem_info'];
        $ship_link = $row['ship_link'];
        $display_fleet .= "
            <td valign="top"><div id="fleet"><div id="fheader">$ship_info</div><br/><img align="center" height="210" width="350" alt="$ship_name" src="$ship_link" /><br /><div id="fmem">$mem_info</div></div></td>
        ";
    }
    $display_fleet .= "</tr>";
}

有什么想法吗? 它切断了第一、第四、第九、第十三和十七的结果。

示例页面结果:

<table border="1">
  <tr><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td></tr>
  <tr><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td></tr>
  <tr><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td><td>Header<br />Image<br />People</td></tr>
</table>

有效但丑的新代码:

    $fleet_query_results = @mysql_query($fleet_query, $connection) or die(mysql_error());
while($row = mysql_fetch_array($fleet_query_results)) {
    $display_fleet .= "<tr>";
    $ship_info = $row['ship_info'];
    $mem_info = $row['mem_info'];
    $ship_link = $row['ship_link'];
    $display_fleet .= "
        <td valign="top"><div id="fleet"><div id="fheader">$ship_info</div><br/><img align="center" height="210" width="350" alt="$ship_name" src="$ship_link" /><br /><div id="fmem">$mem_info</div></div></td>
    ";
    for($i = 1; $i < 3 && $row = mysql_fetch_array($fleet_query_results); $i++) {
        $ship_info = $row['ship_info'];
        $mem_info = $row['mem_info'];
        $ship_link = $row['ship_link'];
        $display_fleet .= "
            <td valign="top"><div id="fleet"><div id="fheader">$ship_info</div><br/><img align="center" height="210" width="350" alt="$ship_name" src="$ship_link" /><br /><div id="fmem">$mem_info</div></div></td>
        ";
    }
    $display_fleet .= "</tr>";
}

您的while正在吃掉一些数据行。

$fleet_query_results = @mysql_query($fleet_query, $connection) or die(mysql_error());
$rows=1;
while($rows) {
    $display_fleet .= "<tr>";
    for($i = 1; $i < 4 && $row = mysql_fetch_array($fleet_query_results); $i++) {
        $rows=$row;
        if (!$row) break;
        $ship_info = $row['ship_info'];
        $mem_info = $row['mem_info'];
        $ship_link = $row['ship_link'];
        $display_fleet .= "
            <td valign="top"><div id="fleet"><div id="fheader">$ship_info</div><br/><img align="center" height="210" width="350" alt="$ship_name" src="$ship_link" /><br /><div id="fmem">$mem_info</div></div></td>
        ";
    }
    $display_fleet .= "</tr>";
}

或者,如下所述:

$i=0
while($row = mysql_fetch_array($fleet_query_results)) {
    if( $i % 4 = 0 )
        $display_fleet .= "<tr>";
    $ship_info = $row['ship_info'];
    $mem_info = $row['mem_info'];
    $ship_link = $row['ship_link'];
    $display_fleet .= "
            <td valign="top"><div id="fleet"><div id="fheader">$ship_info</div><br/><img align="center" height="210" width="350" alt="$ship_name" src="$ship_link" /><br /><div id="fmem">$mem_info</div></div></td>
        ";
    if( ++$i % 4 = 0 )
        $display_fleet .= "</tr>n";
}
// clean add the missing cells to last row.
if( $i % 4 != 0 )
{
    while($i++ %4)
      $display_fleet .= "<td></td>";
    $display_fleet .= "</tr>n";
}

相关内容

  • 没有找到相关文章

最新更新