Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Sortowanie zmiennej
woxala123
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Witam.
Na samym początku przepraszam że powielam temat ale bardzo zależy mi na posortowaniu wyników od największej do najmniejszej wartości.
Oto kawałek kodu
  1. while (($row = $result1->fetch_assoc())) {
  2.  
  3.  
  4. $tah1 = $row["pocet"];
  5.  
  6.  
  7.  
  8. $sum += $tah1;
  9.  
  10.  
  11.  
  12.  
  13. $values = array($tah1); // w tah1 mieszczą się ilości występowań
  14. $imploded = implode(',', $values); // tu rozbiłem implode
  15. echo $imploded."<br>"; // No i tu fajnie wyświetla ale nie jest posortowane od najiwększej do najmniejszej. powiem szczerze nie jak zastosować w praktyce sort
  16.  

Proszę o pomoc.

Ten post edytował woxala123 1.10.2017, 20:00:11
Go to the top of the page
+Quote Post
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie wiem co Ty chcesz osiągnąć, przynajmniej podałbyś przykładowe dane jakie tam wpisujesz, ale patrząc na to co przedstawiłeś.

Czy nie wystarczy Ci aby dać do zapytania SQL: ORDER BY `pocet` DESC
Go to the top of the page
+Quote Post
woxala123
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Nie za bardzo bo kod jest taki i nie za bardzo można by tu grupować.
  1. $sum = "0";
  2. for ($i = 1; $i < 81; $i++) {
  3.  
  4.  
  5. $sql1 = " SELECT COUNT(id) AS pocet FROM `tah1` WHERE ((cislo1=$i OR cislo2=$i OR cislo3=$i OR cislo4=$i OR cislo5=$i OR cislo6=$i OR cislo7=$i OR cislo8=$i OR cislo9=$i OR cislo10=$i OR cislo11=$i OR cislo12=$i OR cislo13=$i OR cislo14=$i OR cislo15=$i OR cislo16=$i OR cislo17=$i OR cislo18=$i OR cislo19=$i OR cislo20=$i) and (tah1.datum BETWEEN '$a' and '$b')) ";
  6. $result1 = $conn->query($sql1);
  7.  
  8. if ($result1->num_rows > 0) {
  9. // output data of each row
  10. $x = 1;
  11.  
  12.  
  13.  
  14. while (($row = $result1->fetch_assoc())) {
  15.  
  16.  
  17. $tah1 = $row["pocet"];
  18.  
  19.  
  20.  
  21. $sum += $tah1;
  22.  
  23.  
  24.  
  25.  
  26. $values = array($tah1);
  27. $imploded = implode(',', $values);
  28. echo $imploded. "<br>";
  29.  
  30. }
  31. }
  32.  
  33. }
  34.  
Go to the top of the page
+Quote Post
Tomplus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie widzę związku.
Skoro wypada CI więcej niż 1 rząd, to spokojnie możesz użyć sortowania.

Ale patrząc na tabelę to po prostu powinna być lepiej skonstruowana.
np.:

id . cislo . value .. datum
1 ... 2 .... 345 .... 2017-10-01
2 ... 3 .... 456 .... 2017-10-01
3 ... 14 .... 567 .... 2017-10-01

SELECT cislo, value FROM `tah1` WHERE cislo = $i AND (datum BETWEEN '$a' and '$b')
Go to the top of the page
+Quote Post
woxala123
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Ale jak zauważyłeś zmienna $i oblicza ilość występowania pojedyńczych liczb w 20 kolumnach potem to wszystko po selectie się sumuje i wyświetla liczby od 1-80 ile razy występowała. I te ile razy występowała chcę posortować od najwyższej do najniższej. I to wszystko. Tu jeszcze w tym skrypcie chcę zrobić coś takiego by obliczał pary liczb. Czyli w 20 kolumnach jest 190 kombinacji par na jedno losowanie i chce by wszystkie pary zliczał z wszystkich losowań lub wybranych.
Pozdrawiam
Go to the top of the page
+Quote Post
Tomplus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie bardzo rozumiem, ale wystarczyłoby wtedy tak zrobić:

Kod
SELECT count(1) pocet, datum FROM `tah1` WHERE (datum BETWEEN '$a' and '$b') GROUP BY `cislo` ORDER BY `pocet`;


Go to the top of the page
+Quote Post
woxala123
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Ale jak zauważyłes jest 20 kolumn cislo1 do cislo20, to jak on ma zliczać wszystkie kolumny?
Go to the top of the page
+Quote Post
Rysh
post
Post #8





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Jak masz cislo1 - cislo20 to masz prawdopodobnie źle zaprojektowaną bazę danych.


--------------------
Go to the top of the page
+Quote Post
woxala123
post
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Powyższy skrypt zlicza mi wszystkie liczbyod 1-80 i pokazuje ile dana liczba razy występuje. Tylko chcę te ilość posortować.
Go to the top of the page
+Quote Post
emillo91
post
Post #10





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

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


Możesz to zrobić zapisując pobrane z bazy wartości do tablicy asocjacyjnej a później te wartości w tablicy zwiększać czyli:
tworzysz taką tablicę:
  1. $tab = array(
  2. "cislo1" => 0,
  3. "cislo2" => 0,
  4. "cislo3" => 0,
  5. "cislo4" => 0,
  6. "cislo5" => 0);

Następnie w pętli for 1 do 81 wstawiasz pętlę while. W pętli while robisz sumowanie w taki sposób:
suma = klucz z pierwszej komórki + wynik zapytania MySQL
Dalej w pętli while wstawiasz wynik sumowania do tablicy asocjacyjnej odwołując się do nazwy komórki
Później za pętlami for i while sortujesz tablicę funkcją asort() i wywołujesz tablicę kolejną pętlą while z posortowanymi danymi.
Powinno to wyglądać tak:
Link
Go to the top of the page
+Quote Post
woxala123
post
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


Dzięki na razie. Jutro będę to pisał i zobacze jaki efekt to przyniesie. Pomysł w miarę dobry. Ale czy potem idzie to jakoś rozpisać na pary liczb występowań.?
Pozdrawiam
Go to the top of the page
+Quote Post
emillo91
post
Post #12





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

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


Chodzi tobie o statystyki? ile razy wystąpiła 1,2,3,4 itd?
Go to the top of the page
+Quote Post
woxala123
post
Post #13





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

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


tak chodzi mi o statystyki ale na razie mój skrypt oblicza pojedyńcze liczby a chcę też obliczać parki, trójki itp.
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 Aktualny czas: 19.08.2025 - 02:19