增加mysql_fetch_array?

时间:2009-12-13 22:13:30

标签: php mysql

如何让数组增加到下一行?我正在制作一张3宽10高的标签。我得到的结果是每行三次重复。如何碰到每个表格单元格的下一行。

$i =0;
for ($i = 1; $i <= 3; ++$i){
while($row = mysql_fetch_array($result)){

$company = $row['company'];
$comp_strt = $row['comp_strt'];
$comp_city = $row['comp_city'];
$comp_state = $row['comp_state'];
$comp_zip = $row['comp_zip'];
$celldata= $company."<br>".$comp_strt."<br>".$comp_city.",&nbsp;".$comp_state."&nbsp;".$comp_zip;
if($i = 1){echo "<tr style='row-height: 5em;'><td>'".$celldata."'</td>";}
if($i = 2){echo "<td>'".$celldata."'</td>";}
if($i = 3){echo "<td>'".$celldata."'</td></tr>"; $i = 1;}
}}

5 个答案:

答案 0 :(得分:1)

您使用=检查是否相等。你应该使用==

if($i == 1){echo "<tr style='row-height: 5em;'><td>'".$celldata."'</td>";}
if($i == 2){echo "<td>'".$celldata."'</td>";}
if($i == 3){echo "<td>'".$celldata."'</td></tr>"; $i = 1;}

可能无法解决您的问题,但这是一个开始。

答案 1 :(得分:1)

问题是while循环在mysql_fetch_array中的行耗尽之前不会退出。只需使用while循环并在$i内增加while

$i= 0;
while ($row = mysql_fetch_array($result)) {
 // process the row into $celldata
 if ($i==0 || $i%3==0) {
   if ($i > 0) // close out existing row
   // start a new row
 }
 // output cell data
 $i++;
}
// Output a closing '</tr>' tag if $i > 0

答案 2 :(得分:1)

我会这样做:

$cellsPerRow = 3;
$i = 0;
echo '<table>';
while ($row = mysql_fetch_array($result)) {
    if ($i % $cellsPerRow == 0) {
        echo '<tr>';
    }

    // process $row and echo the table cell

    if ($i % $cellsPerRow == $cellsPerRow - 1) {
        echo '</tr>';
    }
    $i++;
}
if ($i > 0 && $i % $cellsPerRow != 0) { // finish off row if needed
    while ($i % $cellsPerRow != 0) {
        echo '<td></td>';
        $i++;
    }
    echo '</tr>';
}
echo '</table>';

这将始终为您提供合适的表格。

答案 3 :(得分:0)

如果您想要彼此相邻绘制3个标签,则只需在正确的位置插入</tr><tr>块。你可以只有一个递增变量,不需要for循环:

$i = 0;
echo '<table><tr>';
while($row = mysql_fetch_array($result)){
    if($i == 3) {
        echo '</tr><tr>';
        $i = 0;
    }

    $company = $row['company'];
    $comp_strt = $row['comp_strt'];
    $comp_city = $row['comp_city'];
    $comp_state = $row['comp_state'];
    $comp_zip = $row['comp_zip'];
    $celldata= $company."<br>".$comp_strt."<br>".$comp_city.",&nbsp;".$comp_state."&nbsp;".$comp_zip;

    echo "<td>$celldata</td>";
    $i++;
}
echo '</tr></table>';

所以现在每次$i计数器达到3时,它会创建一个表行中断并将$ i设置为零,从而导致每行3个单元格。

答案 4 :(得分:-3)

如果你不想这样做三次,那么

摆脱for循环,ffs