dizi sayısı ile döngü için, çıkış sınırı?

3 Cevap php
print '<div id="wrap">';
print "<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"3\" cellspacing=\"3\">";

 for($i=0; $i<count($news_comments); $i++)
{
 print '
  <tr>
     <td width="30%"><strong>'.$news_comments[$i]['comment_by'].'</strong></td>
      <td width="70%">'.$news_comments[$i]['comment_date'].'</td>
    </tr>
    <tr>
      <td></td>
      <td>'.$news_comments[$i]['comment'].'</td>
  </tr>
    '; 

 }

print '</table></div>';

$ News_comments mysqli_fetch_assoc bir 3 diemensional array sayılır $ news_comments var itibaren maksimum miktar ulaşıncaya kadar benim için döngü böyle [0] [2] vb gibi dizi setleri toplam döner nedense, başka bir işlevinden döndürülen olan LİMİT 10 bir dönüş fonksiyonudur. benim sorunum ben içeride herhangi bir metin / html / simgelerini eklemek olduğunu döngü için bu durumda sadece dizi 1 ve 2 içlerinde veri var ayarlar olsa bile 11 kere yazdırır. Bunu nasıl çevrede alabilirim?

Aşağıdaki gibi benim işlevi sorgu:

function news_comments()
 {

   require_once  '../data/queries.php';
   // get newsID from the url
   $urlID = $_GET['news_id'];
   // run our query for newsID information
   $news_comments = selectQuery('*', 'news_comments', 'WHERE news_id='.$urlID.'', 'ORDER BY comment_date', 'DESC', '10'); // requires 6 params
   // check query for results
   if(!$news_comments)
   {
    // loop error session and initiate var
    foreach($_SESSION['errors'] as $error=>$err)
   {
    print  htmlentities($err) . 'for News Comments, be the first to leave a comment!';
   } 
   }
   else
   {

    print '<div id="wrap">';
    print "<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"3\" cellspacing=\"3\">";
      for($i=0; $i<count($news_comments); $i++)
             {
      print '

      <tr>
          <td width="30%"><strong>'.$news_comments[$i]['comment_by'].'</strong></td>
         <td width="70%">'.$news_comments[$i]['comment_date'].'</td>
        </tr>
        <tr>
         <td></td>
         <td>'.$news_comments[$i]['comment'].'</td>
      </tr>



     '; 

    }


   print '</table></div>';

   }

 }// End function

Herhangi bir yardım büyük beğeni topluyor.

EDIT: This is my selectQuery() for kemp and or anyone else who can maybe fix it up a little, its still very much a WIP so its not complete.

$_SESSION['errors'] = array();

    function selectQuery($select, $tbl, $where, $order, $scroll, $limit)
    {
        global $mysqli;
        require_once  '../config/mysqli.php';
        $query = "SELECT $select FROM $tbl $where $order $scroll LIMIT $limit";

        if($result = mysqli_query($mysqli, $query))
        {
            $num = mysqli_num_rows($result);

            if(!$num > 0)
            {
                array_push($_SESSION['errors'], 'No Results found : ');
            }
            else
            {

                    for($i=0; $i<=$limit; $i++)
                    {


                    $data[$i] = mysqli_fetch_assoc($result);
                    }
                return  $data;
                mysqli_free_result($result);
            }
        }
        else
        {
            print('Error: ' . mysqli_error($mysqli));
        }

    }

3 Cevap

MySQL SINIR sadece; maksimum limiti. Bu döndürülen sonuç sayısını zorlamaz. Ne olursa olsun bulunan sonuç sayısı, 10 elemanlı bir dizi dönen eğer SelectQuery () fonksiyonunun davranışı yanlış. Ben bu davranışı düzeltmek yerine, onun etrafında çalışma olacaktır.

Bu herhangi bir nedenle mümkün değilse, siz bir döngü için içinde bir koşullu ekleyebilirsiniz:

for($i=0; $i<count($news_comments); $i++) 
{
    if( ! empty($news_comments[$i])
    {
        print '<tr>...</tr>'; 
    }
}

Kayıt için, ben foreach üzerinde DarkerStar beraberim. Orada döngüsü için geleneksel gerekli bazı durumlar vardır, ama onlardan biri değildir.

foreach($news_comment as $comment)
{
    echo $comment['comment'];
    echo $comment['comment_by'];
    echo $comment['comment_date'];
}

Ben kodu anlamak gibi.

  1. $ News_comments sizin sql sorgudan veri sonucu olmalıdır. Sadece sınırı 10 netleştirmek için 10 satır olması sonucu zorlamaz. satır numarası sql sonuçlarına bağlıdır dönün.

  2. You are using for($i=0; $i

Tüm $ news_comments döngü istiyorsanız, sadece yapabilirsiniz

foreach ($news_comments as $i=>$news_comment) {
  printf($news_comment);
}

$ News_comment senin $ news_comments [$ i] eşit olacağını

Yorumlarınızı bakılırsa, ben sorun her zaman 11 değerleri ile bir dizi oluşturur, yani $news_comments dizisini oluşturur işlevi olduğunu ve nokta basılı onları görmüyorum olduğuna inanıyorum eğer don Sadece boş satır / hücrelerini baskılar nedeniyle 't, dış içeriği ekleyin. Eğer sadece içinde yazdırır ne değişecek eğer bir döngü kez farklı sayıda idam edilemez.

Sen selectQuery() fonksiyonunu gönderilmesi gerekiyor.