Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie danych z sesji
Forum PHP.pl > Forum > PHP
pyrek
Witam mam problem z wyciąganiem i układaniem zmiennych z sesii.


musze posortować to nie dośc że po magazynacz i to mi ładnie działa to dodatkowo jeszcze zrobić tak aby ostatnio dodany do koszyka produkt była wyświetlany na dole standard. Kombinuje na różne sposoby ale cały czas sortuje mi tylko po magazynie a już same produkty wyświetla losowo za każdym razem czyli jak dam odświerz koszyk to kolejność produktów ciągle się zmienia.

tak wyglada sesja:

  1. <?php
  2. [produkty] =>Array
  3. ( [0] => Array ( [produkt] => 259824 [magazyn] => 1 [ilosc] => 7 )
  4. [1] => Array ( [produkt] => 280735 [magazyn] => 1 [ilosc] => 2 )
  5. [2] => Array ( [produkt] => 280753 [magazyn] => 1 [ilosc] => 1 )
  6. [3] => Array ( [produkt] => 280745 [magazyn] => 16 [ilosc] => 0 ) ) )
  7. ?>



a tak to sortuje teraz
  1. <?php
  2. class ArrayMultiSort
  3. {
  4. var $fields;
  5.  
  6. function _callback($a, $b, $i = 0)
  7. {
  8. if ($a[$this->fields[$i]] == $b[$this->fields[$i]]) {
  9. if (isset($this->fields[$i + 1])) {
  10. return $this->_callback($a, $b, $i + 1);
  11. }
  12. return 0;
  13. }
  14. return ($a[$this->fields[$i]] > $b[$this->fields[$i]])? 1 : -1;
  15. }
  16.  
  17. function sort(&$arr)
  18. {
  19. usort($arr, array(&$this, '_callback'));
  20. }
  21. }
  22.  
  23.  
  24.  
  25. $sort = new ArrayMultiSort;
  26. $sort->fields = array( 'magazyn', 'produkt');
  27. $sort->sort($_SESSION[produkty]);
  28. ?>
siemakuba
Cytat
tak aby ostatnio dodany do koszyka produkt była wyświetlany na dole

a skad wiadomo który produkt był dodany ostatnio do koszyka? to nie wynika z zadnej z wartosci tej tablicy ktora pokazales. Jakbys dodal np. klucz timeIndex z wartoscia aktualnego UNIX Timestamp do kazdego dodawanego produktu, wtedy bylo by wiadomo. I wtedy tez do takiego posortowania wystarczy ci zwykła array_multisort" title="Zobacz w manualu php" target="_manual (Przykład numer 3).

pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.