mysql_fetch_array artırılmıyor?

5 Cevap php

Nasıl bir sonraki satıra artırmak için dizi alabilirim? Ben 3 genişliğinde ve on yüksek etiketlerin bir tablo yapıyorum. Ben alıyorum sonucu her satırda üç tekrarlanmaktadır. Nasıl her tablo hücresi için bir sonraki satıra çarpmak.

$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 Cevap

Ben bunu istiyorum:

$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>';

Bu her zaman size uygun bir tablo verecektir.

Sen = eşitlik kontrol etmek için kullanıyor. Sen kullanmak gerekiyordu ==

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;}

Muhtemelen sorunu çözmek, ama bu bir başlangıç ​​değil.

Sorun while döngü çıkış olmaz yılında satırlar mysql_fetch_array bitkin kadar olduğunu. Sadece while döngü ve Artım $i içinde kullanabileceğiniz 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

Eğer birbirlerinin yanında 3 etiketi çizmek istiyorsanız, sadece doğru pozisyonda bir </tr><tr> bloğu eklemek zorunda. Sadece artan bir değişken olabilir, for döngü gerek:

$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>';

Yani artık her zaman $i sayacı bir tablo satır sonu oluşturur ve satır başına 3 hücrelerinde sonuçlanan, ben geri sıfıra $ ayarlar, 3 ulaşır.

kurtulmak döngüsü için bunu üç kez, ffs yapmak istemiyorsanız