Affichage de 3 produits aléatoirement.

Petit nouveau ! | 2 Messages

18 nov. 2008, 11:52

Bonjour !

Je souhaiterai afficher aléatoirement 3 produits issus d'une base de données.

Pour la fonction aléatoire, j'utilise ceci :
<?php
 if ($random_product = tep_random_select("select p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_SPECIALS . " s where p.products_status = '1' and p.products_id = s.products_id and pd.products_id = s.products_id and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' order by s.specials_date_added desc limit " . MAX_RANDOM_SELECT_SPECIALS)) {
?> 

<div class="listingpromo">
<div class="listingTop"></div>    
  <div class="listingImage">
     <a href="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $random_product["products_id"]) ;?>"><?php echo tep_image(DIR_WS_IMAGES . $random_product['products_image'], $random_product['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) ;?></a>
    </div>
  <div class="listingInfos">
 	 <p class="listingName"><a href="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $random_product['products_id']) ;?>"><?php echo $random_product['products_name'] ;?></a></p>
    <p class="listingPrice">  
    <del><?php echo $currencies->display_price($random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) ;?></del>
	  <span class="productSpecialPrice"><?php echo $currencies->display_price($random_product['specials_new_products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) ;?></span>
      </p>
   </div>
    
    <div class="listingBottom"></div>
</div>
<?php          
  }
?>
<br class="bottom">
?>
Ca m'affiche bien 1 produit aléatoirement, par contre, comment fait-on pour afficher 3 produits?
J'imagine qu'il faille utiliser la fonction while mais je ne sais pas trop comment la mettre en application.
Si une âme charitable pouvait m'aider, ce serait vraiment Top !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 nov. 2008, 12:19

Je ne sais pas ce que fait ta fonction tep_random_select(), mais je pense qu'elle n'est pas optimisée.

Je pense que la meilleure manière de faire, c'est en SQL, avec un

Code : Tout sélectionner

ORDER BY RAND() LIMIT 3
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 2 Messages

19 nov. 2008, 14:49

Merci Zeus.

Ca marche.