Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Na jakiej zasadzie wyświetlić przedziały cenowe dostępnych produktów?, Jak jest to obmyślane?
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam.
Dostałem od znajomego zlecenie rozbudowy pewnego skryptu sklepowego o funkcje wyświetlania przedziałów cenowych dostępnych produktów w danej kategorii.
Coś jak np w Ceneo w lewym menu:

  1. poniżej 1013 zł
  2. od 1014 do 2040 zł
  3. od 2041 do 3289 zł
  4. od 3290 do 5210 zł
  5. powyżej 5218 zł


Jak wygenerować takie przedziały? Czy to po prostu dzieli wszystkie dostepne ceny na 4 i wyświwetla z danego przedziału największa i najmniejszą?

Czyli ilości powinny być porównywalne w każdym przedziale, a np na tej stronie widze, że są duze różnice w poszczególnych przedziałach cenowych, czyli produkty nie są tak po prostu dzielone.

Macie może pomysł, jak rozwiązać ta sprawę?
Będę wdzięczny za wszelkie wypowiedzi.

Ten post edytował kukix 27.01.2011, 02:01:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Ja bym to zrobił tak

  1. <?php
  2. $t = array(22,37,24,1603,1456,69,39,138,138,376,242,242,415,267,
  3. 267,439,268,268,577,251,251,492,1008,1008,1359,280,280,445,489,489,824,
  4. 186,186,320,69,69,153,329,329,539,138,138,236,183,183,300,512,512,949,81,
  5. 81,184,820,820,1089,192,192,414,687,687,1099,349,349,557,653,653,929,489);
  6. $suma = 0;
  7. foreach($t as $v) $suma += $v;
  8. $suma = round($suma / count($t));
  9. foreach($t as $v){
  10. if($v > $suma*3) $r[3]++;
  11. else if($v > $suma*2) $r[2]++;
  12. else if($v > $suma) $r[1]++;
  13. else $r[0]++;
  14. }
  15. for($i=0;$i<4;$i++){
  16. if($i==0) echo '<br>poniżej '.$suma.' zł ('.$r[$i].')<br>';
  17. else if($i==3) echo 'powyżej '.($suma*3+1).' zł ('.$r[$i].')<br>';
  18. else echo 'od '.($suma*$i+1).' do '.($suma*($i+1)).' zł ('.$r[$i].')<br>';
  19. }
  20. ?>


Wynik
Kod
poniżej 437 zł (41)
od 438 do 874 zł (18)
od 875 do 1311 zł (6)
powyżej 1312 zł (3)


Tak na szybko zrobiłem

Ten post edytował Wicepsik 28.01.2011, 15:07:45
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 03:20