Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sortowanie większej tablicy
adiq
post 14.09.2009, 21:46:41
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.08.2009

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


Witam,
posiadam tablice:
  1. [1] => Array
  2. (
  3. [id] => 1
  4. [ilosc] => 4
  5. [name] => hadwao1
  6. [num] => aaa
  7. [tytul] => aaa
  8. )
  9.  
  10. [2] => Array
  11. (
  12. [id] => 2
  13. [ilosc] => 1
  14. [name] => w616
  15. [num] => aaa
  16. [tytul] => taaa
  17. )
  18.  
  19. [3] => Array
  20. (
  21. [id] => 3
  22. [ilosc] => 2
  23. [name] => zadek1234
  24. [num] => aaa
  25. [tytul] => aaa
  26. )
  27.  
  28. [4] => Array
  29. (
  30. [id] => 4
  31. [ilosc] => 6
  32. [name] => w887
  33. [num] => sss
  34. [tytul] => fff
  35. )
  36.  


Dane wyświetlam w pętli, niestety nie tak jak bym chciał. Dane wyświetlają się wg. id od najmniejszego.

Chciałbym aby tablice sortowały się wg. ilosci od największej, Proszę o pomoc!

Oto kod odpowiedzialny za wyświetlanie:
  1. for($r=1;$r<$xm;$r++) {
  2. $nazwa[$r]=str_replace("_", " ", $wynikk[$r][tytul]);
  3. echo '<tr><td><img src=images/img.png border=0 /></td><td><a style="color: black;" href=pokaz,'.$wynikk[$r][name].','.$wynikk[$r][num].','.$wynikk[$r][tytul].'.php />'.$nazwa[$r].'</a></td></tr>';
  4.  
  5. }


Proszę o pomoc winksmiley.jpg
Go to the top of the page
+Quote Post
wookieb
post 14.09.2009, 21:52:01
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wszystkie ze słowem sort
http://pl2.php.net/manual/en/ref.array.php
Użys usort albo array_multisort i nie pytaj się JAK użyć bo w manuala pisze jak wól.


--------------------
Go to the top of the page
+Quote Post
Eagle
post 14.09.2009, 21:55:37
Post #3





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Możesz wyświetlać od końca

  1. $rozmiar = sizeof($tablica)
  2. for($i = $rozmiar; $i<=0; $i--)
  3. {
  4. print_r ($tablica[$i]);
  5. }


Albo manual i 'sort'
http://us.php.net/manual/en/function.arsort.php
Go to the top of the page
+Quote Post
adiq
post 14.09.2009, 21:59:56
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.08.2009

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


Cytat(wookieb @ 14.09.2009, 22:52:01 ) *
Wszystkie ze słowem sort
http://pl2.php.net/manual/en/ref.array.php
Użys usort albo array_multisort i nie pytaj się JAK użyć bo w manuala pisze jak wól.

Załamie cię i napisze JAK!?

W manualu przykład:
  1. $fruits = array("lemon", "orange", "banana", "apple");
  2. sort($fruits);

no problem, tylko jak posortowac cala moja wielka tablice wg. ilosci i ją dobrze wyświetlic.

Cytat(Eagle @ 14.09.2009, 22:55:37 ) *
Możesz wyświetlać od końca

  1. $rozmiar = sizeof($tablica)
  2. for($i = $rozmiar; $i<=0; $i--)
  3. {
  4. print_r ($tablica[$i]);
  5. }


Albo manual i 'sort'
http://us.php.net/manual/en/function.arsort.php


Wyświetlanie od końca nic nie da, bo w dalszym ciągu nic się nie będzie zgadzac.
Go to the top of the page
+Quote Post
Eagle
post 14.09.2009, 22:00:52
Post #5





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


http://pl2.php.net/manual/en/function.krsort.php
Go to the top of the page
+Quote Post
adiq
post 14.09.2009, 22:07:12
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.08.2009

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


Cytat(Eagle @ 14.09.2009, 23:00:52 ) *

Istnieje problem, ponieważ w dalszym ciągu nie wiem jak posortowac.

Jezeli znadzie się ktoś i napisze mi mały przykład z takimi tablicami:
  1. [1] => Array
  2. (
  3. [id] => 1
  4. [ilosc] => 4
  5. [name] => hadwao1
  6. [num] => faxcsax
  7. [tytul] => cascas
  8. )
  9.  
  10. [2] => Array
  11. (
  12. [id] => 2
  13. [ilosc] => 1
  14. [name] => w616
  15. [num] => ascas
  16. [tytul] => acsacsca
  17. )
  18.  
  19. [3] => Array
  20. (
  21. [id] => 3
  22. [ilosc] => 2
  23. [name] => acscacas
  24. [num] => 7
  25. [tytul] => acaca
  26. )
  27.  

oraz wyświetlanie w schemacie: name-tytul oczywiście wg. ilosci.
Go to the top of the page
+Quote Post
wookieb
post 14.09.2009, 22:13:34
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(adiq @ 14.09.2009, 22:46:41 ) *
Załamie cię i napisze JAK!?

A czy ja pisze do człowieka czy maszyny, która nie posiada nawet sztucznej inteligencji?

MANUAL:
  1. function cmp($a, $b)
  2. {
  3. if ($a == $b) {
  4. return 0;
  5. }
  6. return ($a < $b) ? -1 : 1;
  7. }
  8.  
  9. $a = array(3, 2, 5, 6, 1); // tutaj wstaw swoja tablicę
  10.  
  11. usort($a, "cmp");
  12.  

A teraz magia!!!
  1. function cmp($a, $b)
  2. {
  3. if ($a['ilosc'] == $b['ilosc']) {
  4. return 0;
  5. }
  6. return ($a['ilosc'] < $b['ilosc']) ? -1 : 1;
  7. }

Toż to niesamowite... Ale patrząc na twój wynik to zapewne otrzymujesz go z bazy danych a sortowanie robi się ZAPYTANIEM. (ORDER BY)
Czy to było tak cholernie trudne? Dodatkowo miałeś na tej samej stronie manuala przykład jak to zrobić z kluczami które zawierają string (chwila "przeróbki" i masz co chcesz) ... CZYTAĆ LUDZIE!

Ten post edytował wookieb 14.09.2009, 22:15:55


--------------------
Go to the top of the page
+Quote Post
teherty
post 14.09.2009, 22:14:29
Post #8





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 17.05.2009

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


Utwórz drugą tablicę i zapisuj do niej same wartości $liczba zgodnie z indeksem. Użyj sort() na tej tablicy i wyświetl podstawową tablicę po indeksach z tej posortowanej.
Zawsze jakaś opcja, aczkolwiek nie wiem czy ten kod działa.

  1. $k = 0;
  2. foreach($baza as $wpis){
  3. $sort[$k] = $liczba;
  4. $k++;
  5. }
  6. sort($sort);
  7. foreach($sort as $klucz => $sortl) {
  8. echo $baza[$klucz] . '<br />';
  9. }


--------------------
Go to the top of the page
+Quote Post
adiq
post 14.09.2009, 22:19:27
Post #9





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.08.2009

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


Cytat(wookieb @ 14.09.2009, 23:13:34 ) *
Ale patrząc na twój wynik to zapewne otrzymujesz go z bazy danych a sortowanie robi się ZAPYTANIEM. (ORDER BY)
Czy to było tak cholernie trudne? Dodatkowo miałeś na tej samej stronie manuala przykład jak to zrobić z kluczami które zawierają string... CZYTAĆ LUDZIE!

Tak, dane pobieram z bazy MySQL w pętli, przy użyciu WHERE `id`='$petla'.
Taki kod pobiera mi wszystkie dane, niestety wg.id.
Próbowałem pobierac dane posortowane wg. ilosci niestety otrzymywalem klika tych samych tabel, zamiast różnych.

Używam pętli for, może jakieś rozwiązanie dzięki któremu pobiorą się już posegregowane?

Oto pobieranie:
  1. for($x=0;$x<$xm;$x++) {
  2. $zapytaniee[$x]=sprintf("SELECT * FROM `pob` WHERE `id`='".$x."'");
  3. $queryy[$x]=mysql_query($zapytaniee[$x]);
  4. $wynikk[$x]=mysql_fetch_assoc($queryy[$x]);
  5. }
Go to the top of the page
+Quote Post
wookieb
post 14.09.2009, 22:24:49
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie wierze własnym oczom... Ale chwała ci, że podałeś kod smile.gif

  1. for($x=0;$x<$xm;$x++)
  2. {
  3. // pobierasz od 0 do $xm to samo to id < $xm [oraz] $id>=0
  4. $zapytaniee[$x]=sprintf("SELECT * FROM `pob` WHERE `id`='".$x."'")
  5. //Po co używasz sprintf?? wiesz co czego w ógole służy?
  6. }

  1. $zapytanieeeeeeeeeeeeeeeeeeeee = mysql_query('SELECT * FROM pob where id< '.$xm.' ORDER BY ilosc');

I pobierasz sobie wszystkie wyniki...

Ten post edytował wookieb 14.09.2009, 22:26:05


--------------------
Go to the top of the page
+Quote Post
adiq
post 14.09.2009, 22:36:21
Post #11





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.08.2009

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


Cytat(wookieb @ 14.09.2009, 23:24:49 ) *
Nie wierze własnym oczom... Ale chwała ci, że podałeś kod smile.gif

  1. for($x=0;$x<$xm;$x++)
  2. {
  3. // pobierasz od 0 do $xm to samo to id < $xm [oraz] $id>=0
  4. $zapytaniee[$x]=sprintf("SELECT * FROM `pob` WHERE `id`='".$x."'")
  5. //Po co używasz sprintf?? wiesz co czego w ógole służy?
  6. }

  1. $zapytanieeeeeeeeeeeeeeeeeeeee = mysql_query('SELECT * FROM pob where id< '.$xm.' ORDER BY ilosc');

I pobierasz sobie wszystkie wyniki...

Pobrało tylko tablice o id 2 ...
Go to the top of the page
+Quote Post
wookieb
post 14.09.2009, 22:37:08
Post #12





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No a pokaż teraz kod.


--------------------
Go to the top of the page
+Quote Post
adiq
post 14.09.2009, 22:40:47
Post #13





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.08.2009

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


Cytat(wookieb @ 14.09.2009, 23:37:08 ) *
No a pokaż teraz kod.

  1. $zapytaniee = mysql_query('SELECT * FROM pob where id< '.$xm.' ORDER BY ilosc');
  2. $wynikk=mysql_fetch_assoc($zapytaniee);
Go to the top of the page
+Quote Post
wookieb
post 14.09.2009, 22:43:20
Post #14





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wiedziałem. 0 podstaw. Bierz się za kurs.
http://pl2.php.net/mysql_fetch_assoc i przeczytaj bardzo dokładnie


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 23:53