ทำอย่างไรให้ใน loop แสดงสินค้าไม่ซ้ำกัน

ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x

Moderator: mindphp, ผู้ดูแลกระดาน

Patipat
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 996
ลงทะเบียนเมื่อ: 10/06/2019 10:12 am

ทำอย่างไรให้ใน loop แสดงสินค้าไม่ซ้ำกัน

โพสต์ที่ยังไม่ได้อ่าน โดย Patipat »

ผมได้ทำสุ่มสินค้าจะให้ไม่ซ้ำครับ คือผมทำให้สุ่มได้แล้วนะครับ แต่ว่า พอมันไปรันบนไฟล์ default.php มันก็รันเหมือนกันครับ 3 รูปเพราะว่ามันสุ่มแค่ ตอนที่เราหาค่าสุ่ม แต่พอนำไปแสดงมันแสดงใน loop foreach พอกำหนดไว้ 3 รูป มันก็ซ้ำกันเหมือนเดิมครับ จะมีวิธีอย่างไรบ้างครับ ที่ทำให้ใน loop ไม่ซ้ำกันครับ


ไฟล์ php สุ่มสินค้าโดยใช้ id ให้ 0 ถึง 5

โค้ด: เลือกทั้งหมด

$ran = rand(0,5);

 $lang_tag = \Joomla\CMS\Factory::getLanguage()->getTag(); 
 $price_product = $get_pro[$ran]['product_price'];
 $price_old_price= $get_pro[$ran]['product_old_price'];
 $product_name = $get_pro[$ran]['name_'.$lang_tag.''];
 $product_img = $get_pro[$ran]['image'];
ไฟล์ default.php ที่ใช้ loopforeach

โค้ด: เลือกทั้งหมด

<?php foreach ($products as $item) { 
                    $askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $item->virtuemart_product_id . '&virtuemart_category_id=' . $item->virtuemart_category_id . '&tmpl=component', FALSE);
                    ?>
                    <div class="item">
                        <div class="sp-vmcountdown-image col-sm-7">                    
                             <img src="<?php echo JUri::root() . 'components/com_mooziicart/files/img_products/'.$product_img ;?>">
                        </div>
                        
                        <div class="sp-vmcountdown-info col-sm-5">
                            <h1 class="sp-item-title"><a href="<?php echo $item->url ?>"><?php echo  $product_name ?></a></h1>
                            <?php if ($show_price) { ?>
                                <div class="sp-price-box">

                                <!-- แสดงราคาสินค้า  -->
                                <?php if ( isset($item->prices['product_override_price']) && round($item->prices['product_override_price']) != 0) { ?>
                                        <ins><?php echo $price_product; ?></ins>  <?php //แสดงราคาสินค้า ?><br>
                                        <del><?php echo $price_old_price ?></del>
                                  <?php } else{ ?>
                                    <ins><?php echo $currency->createPriceDiv ('salesPrice', '', $item->prices, FALSE, FALSE, 1.0, TRUE); ?></ins>       
                                <?php } ?>        
                                </div><!-- //sp-price-box -->

                                <div class="sp-price-info">
                                       <?php if($show_countdown && $item->product_in_stock !=0){ ?>
                                           <div class="sp-price-discount-time">
                                               <p class="title">
                                                   <?php echo JText::_('MOD_SP_VM_SLIDER_II_TIME_LEFT_TO_BUY'); ?>
                                               </p>
                                               <div class="sp-vmslider-countdown" data-countdown="<?php echo $item->available_date; ?>"></div>
                                           </div> <!-- //sp-price-discount-time -->
                                       <?php } ?>
                                       <?php if ( isset($item->prices['product_override_price']) && round($item->prices['product_override_price']) != 0 ) { ?>
                                           <div class="sp-price-discount">
                                               <p class="title">
                                                   <?php echo JText::_('MOD_SP_VM_SLIDER_II_DISCOUNT'); ?>
                                               </p>
                                               <?php echo str_replace('-', '', round((($item->prices['discountAmount']*100)/$item->prices['product_price']))); ?>%
                                          </div> <!-- //sp-price-discount -->
                                        <div class="sp-price-save">
                                            <div class="spvmcountdown-save">
                                                <p class="title">
                                                    <?php echo JText::_('MOD_SP_VM_SLIDER_II_YOU_SAVE'); ?>
                                                </p>
                                                <?php echo str_replace('-', '', $currency->createPriceDiv ('discountAmount', '', $item->prices, FALSE, FALSE, 1.0, TRUE)); ?>
                                            </div>
                                        </div> <!-- //sp-price-save -->
                                    <?php } ?>
                                </div> <!-- //sp-price-info -->
                            <?php } ?>

                            <div class="spvmcountdown-btn-group">
                                <?php if ($show_addtocart && $item->prices['salesPrice']) {
                                    echo $modSpVmCountdownHelper->addtocart($item);
                                } ?>

                                <a href="<?php echo $item->url ?>" class="btn btn-border">
                                    <?php echo JText::_('MOD_SP_VM_SLIDER_II_DETAILS'); ?>
                                </a>
                            </div> <!-- /.spvmcountdown-btn-group -->
                        </div>
                    </div>
                <?php } ?>
Kor ma di kub. :)
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21912
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: ทำอย่างไรให้ใน loop แสดงสินค้าไม่ซ้ำกัน

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

มันมี function สำหรับดึงค่า random ค่าจาก array ได้อยู่ครับ ใช้ array_rand มันจะได้ค่าเป็น array แล้วเอาไปวน loop แสดง
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
Losa
PHP Newbie
PHP Newbie
โพสต์: 6
ลงทะเบียนเมื่อ: 12/11/2019 11:18 am

Re: ทำอย่างไรให้ใน loop แสดงสินค้าไม่ซ้ำกัน

โพสต์ที่ยังไม่ได้อ่าน โดย Losa »

สุดยอดโปรโมชั่นสุดพิเศษสำหรับคนพิเศษเเบบคุณ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 45