仅当我有两个 <li> 标签时,图像才会更改


Image getting changed only when i have two <li> tags

感谢您花时间阅读这篇文章。让我解释一下我的要求

实际上,根据数据库中的 IMAGENUM 字段值,我需要相应地显示图像的数量。 我的更新代码如下

while( $row = $result->fetch_assoc() ) {
            $NUM=intval($row["IMAGENUM"]);
            $imagesArr=array();
            //dynamically fill the imagesArr
            for($i=0; $i < $NUM ; $i++){
                $currKey = "IMG".($i+1);
                if(!empty($row[$currKey])){
                     array_push($imagesArr,$row[$currKey]);
                }
            } 
            $NAME= $row["NAME"];
            $QNTY=$row["QNTY"];
            $PRICE= $row["PRICE"];
            $DESC=$row["DESC"];
            $ADDDESC= $row["ADDDESC"];
            $IFLAG=$row["IFLAG"];
            $SFLAG= $row["SFLAG"];
            $CFLAG=$row["CFLAG"];
            $IMG1= $row["IMG1"];
            $IMG2=$row["IMG2"];
            $IMG3= $row["IMG3"];
            for($i = 0; $i < $NUM; $i++) {
            echo $imagesArr[$i];            
            echo '
                    <div class="single_grid">
                    <div class="grid images_3_of_2">
                        <ul id="etalage">
                            <li>
                                <a href="optionallink.html">
                                    <img class="etalage_thumb_image" src="', $imagesArr[$i], '" class="img-responsive" />
                                    <img class="etalage_source_image" src="', $imagesArr[$i], '" class="img-responsive" title="" />
                                </a>
                            </li>
                            <li>
                                <a href="optionallink.html">
                                    <img class="etalage_thumb_image" src="', $imagesArr[$i], '" class="img-responsive" />
                                    <img class="etalage_source_image" src="', $imagesArr[$i], '" class="img-responsive" title="" />
                                </a>
                            </li>
                        <ul>
                    </div>
                    </div>
            ';
            }
            }

当我回显$imagesArr[$i]时,我可以看到所有值,但只有当我有两个列表标签时,图像才会更改请指教。 谢谢

您可以将所有图像推送到一个数组中,然后迭代此数组。

while ($row = mysql_fetch_assoc($result)) { 
            $NUM=intval($row["IMAGENUM"]);
            $imagesArr=array();
            //dynamically fill the imagesArr
            for($i=0; $i < $NUM ; $i++){
                $currKey = "IMG".($i+1);
                if(!empty($row[$currKey])){
                     array_push($imagesArr,$row[$currKey]);
                }
            }          
            $NAME= $row["NAME"];
            $QNTY=$row["QNTY"];
            $PRICE= $row["PRICE"];
            $DESC=$row["DESC"];
            $ADDDESC= $row["ADDDESC"];
            $IFLAG=$row["IFLAG"];
            $SFLAG= $row["SFLAG"];
            $CFLAG=$row["CFLAG"];
            for($i = 0; $i < $NUM; $i++) {
              echo '
                    <div class="single_grid">
                    <div class="grid images_3_of_2">
                        <ul id="etalage">
                            <li>
                                <a href="optionallink.html">
                                    <img class="etalage_thumb_image" src="', $imagesArr[$i], '" class="img-responsive" />
                                    <img class="etalage_source_image" src="', $imagesArr[$i], '" class="img-responsive" title="" />
                                </a>
                            </li>
                        <ul>
                    </div>
                    </div>
            ';
 }

注意:请考虑使用 PDO/mysqli,而不是使用已弃用的 mysql_fetch_assoc(),例如:

$connection = new mysqli($host,$user,$pass,$db);
$result = $connection->query("SELECT * FROM `Blogs`");

while( $row = $result->fetch_assoc() ) {
   //do your stuff here for each row
}

此外,您的表结构并不理想。最好将图像链接单独存储在一个表中,其中包含产品的外键。然后,您可以轻松获取产品的所有图像,而无需动态填充图像数组。