Sürekli masa nesil Durdur

2 Cevap php

Ben tarayıcı çökmesini, aynı veriler üzerinde döngü gibi, kendini tekrar devam etmesini aşağıdaki tabloda verileri durdurmaya çalışıyorum:

İşte sorgu var:

$posts = mysqli_fetch_assoc(mysqli_query($db, "SELECT * from tbl_bugresponse WHERE bugid = $id ORDER BY time")); 

Ve burada tablo kodu:

<table width="100%" class="tborder">
    <tr>
        <th class="tcat">Name</th>
        <th class="tcat">Reply</th>
    </tr>
    <?php
        $colour="1";
        while($posts) {
            if($colour == "1"){
                 echo ("<tr class='alt1'>");
                 $f1 = $posts['by'];
                 $f2 = $posts['content'];
                 $colour = "2";
            }
            else {
                 echo "<tr class='alt2'>";
                 $f1 = $posts['by'];
                 $f2 = $posts['content'];
                 $colour = "1";
            }
            ?>
            <td><?php echo $f1; ?></td>
            <td><?php echo $f2; ?></td>
        </tr>
        <?}?>
</table>

Ben mysqli MySQL değil kullanıyorum unutmayın.

2 Cevap

Sen sonuç kümesi üzerinden ilerliyor değildir. mysqli_query sizin resultset alır ve mysqli_fetch_assoc bunun üzerinden ilerler. Sen böyle bir şey gerekiyor:

$results = mysqli_query($db, "SELECT * from tbl_bugresponse WHERE bugid = $id ORDER BY time");
while ($posts = mysqli_fetch_assoc($results)) {
    // table construction code goes here
}

Sorun while($posts){ hattıdır.

"Birisi mesaj null değişken veya yanlış ayarlar kadar devam edin" Sen diyor kod yazıyoruz, ama sonra asla dokunmayın ... bu yüzden sonsuza dek devam edecektir.

Update

Eğer çalışmak gerekiyordu nasıl hakkında karıştı var gibi sorgu başka bir göz vardı, o görünüyor. Burada gibi görünmelidir ne:

$result = mysqli_query($db, "SELECT * from tbl_bugresponse WHERE bugid = $id ORDER BY time");
...
$post = mysql_fetch_assoc($result); // fetch first row
while( $post ) { // will keep going until $post gets set to null or false
  ...
  $post = mysql_fetch_assoc($result); // fetch next row and re-run the loop
}

Sen mysqli_query çağrı ayrılmış olduğunu dikkat edeceğiz. mysqli_query veritabanı sorgusu çalıştırmak ne yapar, sonra tekrar sorgudan gelen satırların listesine bir "tanıtıcı" vermek. Çoğunlukla insanlar onlara her satır bir dizi değil, bir "kulp" vermek için beklediğiniz gibi bu karışıklık ortak noktasıdır.

Daha sonra, liste dışında ilk satır almak için mysql_fetch_assoc çağırır onunla bir şeyler yapmak, daha sonra sonraki satırı almak için tekrar tekrar tekrar mysql_fetch_assoc aramak zorunda.

Bu satır bittiğinde, mysql_fetch_assoc ki sen bittiğinde görmek için kontrol edebilirsiniz nasıl yani, null yerine geçerli bir satır döndürür ve döngü durdurmak için.