![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam pewien problem, otóż posiadam kod, który pobiera pewne dane z plików json z zewnętrznych serwerów.
Kod wyświetlający wygląda tak:
chce aby $punktacja_totalna była pobierana z bazy danych, obliczana automatycznie i następnie wyświetlana od największej do najmniejszej. Próbowałem kilku sposobów jednak bezskutecznie. Czy taki sposób jest prawidłowy: Ten post edytował Forti 19.05.2014, 13:25:27 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Osobiście nie rozumiem co ma jedno do drugiego.
Najpierw piszesz skąd masz dane, dokładniej skąd masz punkty. Jakie to ma znaczenie dla problemu skoro (tak mi się wydaje) masz już te punkty w tabeli sklad? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Mam punktu wyliczone na podstawie tego kodu, jednak chce posortować wyniki while wg. tych że punktów. Dlatego chce aby rekord w tabeli 'sklad' był właśnie tą zmienną, ewentualnie robimy tak: wyliczamy punktacja_totalna -> zamieniamy ją na rekord tabeli -> wywołujemy. Tylko jak to zrobić - z tym mam problem.
Kod który do tej pory zrobiłem:
kod wyświetla się prawidłowo wszelkie zmienne, tylko trzeba go odpowiednio posortować. może inaczej, mam cały kod poniżej. Obecnie wyniki sortują się wg. wyników z bazy MySQL (w tym przypadku 'achiv'), a chce by sortowały się wg. zmiennej $punktacja_totalna. Rozumiem, że muszę całkowicie przerobić pętlę while - obecnie nie potrzebnie pobieram w ten sposób dane. Mogę je pobrać, wyniki wrzucić w tablicę tylko nie bardzo wiem jak to zrobić.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Oki, chyba rozumiem.
Dwie opcje: 1) Zapisujesz do to bazy, czyli robisz pętlę po składzie i aktualizujesz każdemu liczbę punktów. Potem już mając to w bazie proste ORDER BY. Jedyny minus to że wykonujesz 2 razy te samo zapytanie. 2) Tworzysz tablice z wyniku z bazy, do tablicy dodajesz wartość punktów i potem korzystasz z funkcji sortujących po wartości http://stackoverflow.com/questions/1597736...iven-key-in-php Ewentualnie liczbę punktów ładujesz w index albo to brzydko by wyglądało. W pierwszej opcji można pokusić się o cache - w zależności od tego jak często liczba punktów się zmienia, nie za każdym razem aktualizować te punkty. Unikniesz też dużej liczby requestów do strony battle netu (mogą np. Cię zablokować). |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Szczerze powiem, że walcze z tym od kilku dni już.
Dla każdej zmiennej muszę robić inną tablice? Chyba muszę wrócić do podstaw, sam tego nie napisze (IMG:style_emoticons/default/smile.gif) Zrobiłem coś takiego (kod poniżej). Działa fajnie, jednak wszystkie polade [punkt] zostają zapisane ostatnią otrzymaną wartością $punktacja_totalna. Domyślam się że, po
powinien znaleźć się jakiś warunek..
Wiem że obecnie kod wykonuje bardzo dużo zapytać, postaram się ogarnąć cache w późniejszym czasie - wyniki mogą aktualizować się raz na 1-2 dni, to nie przeszkadza. Rozwiązałem, dałem zmienna:
a w linie UPTADE warunek: newsid='$newsid' (przypisywane automatycznie każdej kolumnie). można zamknąć temat. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:19 |