Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie zmiennej
Forum PHP.pl > Forum > Przedszkole
woxala123
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.
Tomplus
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
woxala123
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.  
Tomplus
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')
woxala123
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
Tomplus
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`;


woxala123
Ale jak zauważyłes jest 20 kolumn cislo1 do cislo20, to jak on ma zliczać wszystkie kolumny?
Rysh
Jak masz cislo1 - cislo20 to masz prawdopodobnie źle zaprojektowaną bazę danych.
woxala123
Powyższy skrypt zlicza mi wszystkie liczbyod 1-80 i pokazuje ile dana liczba razy występuje. Tylko chcę te ilość posortować.
emillo91
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
woxala123
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
emillo91
Chodzi tobie o statystyki? ile razy wystąpiła 1,2,3,4 itd?
woxala123
tak chodzi mi o statystyki ale na razie mój skrypt oblicza pojedyńcze liczby a chcę też obliczać parki, trójki itp.
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.