Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Zsumowanie 2 rekordów i wypisanie posortowanych wyników
grzegosh
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Witam.
Dla treningu piszę swoją prostą gierkę internetową.
Mam w bazie różne dane o postaci, tworze sortowanie wyświetlania wyników po róznych polach, np po nicku alfabetycznie, ilości wygranych walk itp.
Chciałbym też zrobic sortowanie po sumie walk, czyli po wszystkich stoczonych walkach.
Mam w bazie pola wins oraz loses. Sortowanie po największej licznie wygranych jest proste, ale jak zrobic sortowanie po ilosci walk (czyli sumie wygranych i przegranych)?

Drugie pytanie: jak zrobić najlepiej, że po kliknieciu na sortowanie wg np nicku, jak kliknę raz to sortuje ASC, jak drugi raz to DESC? Myślałem o przekazywaniu getem sposobu sortowania np:
sort=nick&sposob=asc
Czy to dobre rozwiązanie? Jest jakieś lepsze?
Dziękuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
grzegosh
post
Post #2





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Przepraszam, niestety nie rozumiem. Albo może źle wytłumaczyłem.
Mam w tabeli kolumny wins, loses, które trzymają wartości dla każdego użytkownika.
Jak w SELECT zsumować wartości np jak ktoś ma 4 wygrane i 3 przegrane to razem 7, nikt nie ma większej sumy więc ten ktoś ląduje na górze.
Wydaje mi się, że SUM() to nie tutaj (może się mylę), ale próbowałem i tak i nie wychodzi.
$query = mysql_query("SELECT SUM(wins + loses) as fights FROM characters ORDER BY fights ASC");

$query = mysql_query("SELECT (wins + loses) as fights FROM characters ORDER BY fights ASC");
też nie działa

Wiem, że to proste, ale nie denerwujcie się jesli mogę prosić... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Edit:
Z tym 2 problemem poradziłem sobie tak:
  1. <?php
  2. $by = '';
  3.  
  4. switch($_GET['sort']
  5. {
  6.    case 'wins':
  7.        if($_GET['by']=='z')
  8.        {
  9.            $by = '&by=a';
  10.            $query = mysql_query("SELECT * FROM characters ORDER BY wins ASC, login ASC");
  11.        }
  12.        else
  13.        {
  14.            $by = '&by=z';
  15.            $query = mysql_query("SELECT * FROM characters ORDER BY wins DESC, login ASC");
  16.        }
  17.        break;
  18.        
  19.    case 'loses':
  20.        if($_GET['by']=='z')
  21.        {
  22.            $by = '&by=a';
  23.            $query = mysql_query("SELECT * FROM characters ORDER BY loses ASC, login ASC");
  24.        }
  25.        else
  26.        {
  27.            $by = '&by=z';
  28.            $query = mysql_query("SELECT * FROM characters ORDER BY loses DESC, login ASC");
  29.        }
  30.        break;
  31. }
  32.  
  33. (...)
  34. A PONIŻEJ:
  35.  
  36. echo "<td><b><a href='?cont=rank&sort=wins".$by."'>Wygranych</a></b></td><td><b><a href='?cont=rank&sort=loses".$by."'>Przegranych</a></b></td>";
  37. ?>


Nie jest to za dobre rozwiązanie, zna ktoś lepsze? Dziękuje.

Ten post edytował grzegosh 15.07.2009, 22:36:50
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 08:42