в то время как цикл не показывает все данные, собранные из базы данных


В то время как цикл не показывает все данные, собранные из базы данных.. показывает только последний собранный элемент на странице. вместо того, чтобы показывать все.

<?php 
    include "connect_to_mysql.php"; 
    $dynamicList = "";
    $sql = mysql_query("SELECT * FROM product ORDER BY date DESC LIMIT 6");
    $productCount = mysql_num_rows($sql); // count the output amount
    if ($productCount > 0) {

    //here is problem in this while loop.. dont know why it is not gathering all the items.


       while($row = mysql_fetch_array($sql)){ 
         $id = $row["id"];
         $product_name = $row["p_name"];
         $price = $row["price"];
         $date_added = strftime("%b %d, %Y", strtotime($row["date"]));
         $details = $row["details"];
         $category = $row["category"];
         $subcategory = $row["sub_category"];
         $category2 = $row["category2"];
         $img_name = $row["img_name"];
         $v_id = $row["v_id"];
         $v_name = $row["v_name"];
         $v_number = $row["v_number"];
         $v_email = $row["v_email"];

         $dynamicList="

           <div id=\"single_product\" style=\"float:left; margin-left:20px; padding:10px;\">

           <h3> $product_name  </h3>
           <h3> <img src='pics/$img_name' width='200px' height='200px'/> </h3>
           <p><b><center> RUP $price </center></b></p>

           <a href=\"details.php\" style=\"float:left; font-size:20px;\">Details</a>
           <a href=\"cart.php\" style=\"float:right; font-size:20px;\">Add To Cart</a>

           </div>            
         ";

       }
   } else {
        $dynamicList = "We have no products listed in our store yet";
   }
   mysql_close();
?>

Я застрял здесь, пожалуйста, вытащи меня отсюда

Author: RiggsFolly, 2015-08-16

2 answers

Вы используете

$dynamicList="...

В вашем цикле. Я предполагаю, что вы повторяете $dynamicList позже в коде. Вам нужно использовать объединение текста, а не просто =

Так и поступай

$dynamicList .= "...

И он будет добавлять в строку каждый раз, когда проходит цикл, а не перезаписывать ее

 2
Author: RiggsFolly, 2015-08-16 12:19:26

Попробуйте удалить свой:

 $productCount = mysql_num_rows($sql); // count the output amount

Вы уже извлекаете строки во всем цикле и даете оператор else, если цикл пуст. Вам не обязательно их считать.

Я столкнулся с чем-то подобным несколько месяцев назад и считаю, что это была та же проблема, что и у вас сейчас.

Вставьте оператор if в цикл while:

if ($productCount > 0) {

Затем поместите над циклом while:

$productCount = 0;

И в цикле while, перед вашим if заявление:

$productCount++;

Редактировать:

Я только что заметил кое-что еще, вы на самом деле не повторяете свой динамический список. Вы устанавливаете переменную, но не отображаете ее?

 0
Author: Filthy_Rich, 2015-08-16 12:22:08