Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zmienna, obliczana w trakcie jako wartość w tabeli MySQL
Forti
post
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.

  1. diablo_api_url = "http://eu.battle.net/api/d3/profile/{$myrow['nazwa']]}-{$myrow['numer']}/";
  2. $diablo_json = file_get_contents($diablo_api_url);
  3. $character_info = json_decode($diablo_json);
  4. $paragon_level = $character_info->paragonLevel;
  5. $class = $character_info->heroes[0]->class;
  6. $h_level = $character_info->paragonLevelHardcore;
  7. $elite = $character_info->kills->elites;
  8.  
  9. $punktacja_totalna = $paragon_level + $h_level + $elite;
  10. settype($punktacja_totalna, "integer");



Kod wyświetlający wygląda tak:

  1. $result = mysql_query("SELECT * FROM sklad ORDER BY punktacja_totalna DESC",$connect);
  2. mysql_query("SET NAMES 'utf8'");
  3. while($myrow = mysql_fetch_assoc($result))
  4. {
  5. }


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:
  1. $punktacja_totalna = mysql_real_escape_string($myrow['punktacja_totalna']);


Ten post edytował Forti 19.05.2014, 13:25:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Forti
post
Post #2





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:


  1. <?php
  2.  
  3.  
  4. include("config.php");
  5.  
  6.  
  7.  
  8. $result = mysql_query("SELECT * FROM sklad ORDER BY punktacja_totalna DESC",$connect);
  9.  
  10. while($myrow = mysql_fetch_assoc($result))
  11. {
  12.  
  13.  
  14.  
  15. $nazwa=$myrow['nazwa'];
  16. $numer=$myrow['numer'];
  17.  
  18.  
  19. $diablo_api_url = "http://eu.battle.net/api/d3/profile/{$nazwa}-{$numer}/";
  20. $diablo_json = file_get_contents($diablo_api_url);
  21. $character_info = json_decode($diablo_json);
  22. $paragon_level = $character_info->paragonLevel;
  23. $class = $character_info->heroes[0]->class;
  24. $h_level = $character_info->paragonLevelHardcore;
  25. $elite = $character_info->kills->elites;
  26. $suma = $paragon_level ; // wiem że ta linijka jest bezsensu, jest tutaj pewne działanie matematyczne którego nie chce zdradzać
  27. $ssuma = $h_level ;
  28. $sssuma = $elite ;
  29. $ssssuma = $myrow['achiv'] ;
  30. $punktacja_totalna = $suma + $ssuma + $sssuma + $ssssuma;
  31. settype($punktacja_totalna, "integer");
  32.  
  33. // i tutaj trzeba $punktacja_totalna wrzucić do bazy danych a następnie wyniki sortować wg. tego rekordu, jeżeli dobrze rozumiem.
  34.  
  35. ?>



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ę
  1. $tablica[1]['nazwa']
tylko nie bardzo wiem jak to zrobić.

  1. <?php
  2. include("config.php");
  3.  
  4.  
  5.  
  6.  
  7. $result = mysql_query("SELECT * FROM sklad ORDER BY achiv DESC",$connect);
  8.  
  9. while($myrow = mysql_fetch_assoc($result))
  10. {
  11.  
  12.  
  13.  
  14. $nazwa=$myrow['nazwa'];
  15. $numer=$myrow['numer'];
  16.  
  17.  
  18. $diablo_api_url = "http://eu.battle.net/api/d3/profile/{$nazwa}-{$numer}/";
  19. $diablo_json = file_get_contents($diablo_api_url);
  20. $character_info = json_decode($diablo_json);
  21. $paragon_level = $character_info->paragonLevel;
  22. $class = $character_info->heroes[0]->class;
  23. $h_level = $character_info->paragonLevelHardcore;
  24. $elite = $character_info->kills->elites;
  25. $suma = $paragon_level; // wiem że ta linijka jest bezsensu, jest tutaj pewne działanie matematyczne którego nie chce zdradzać.
  26. $ssuma = $h_level;
  27. $sssuma = $elite;
  28. $ssssuma = $myrow['achiv'];
  29. $punktacja_totalna = $suma + $ssuma + $sssuma + $ssssuma;
  30. settype($punktacja_totalna, "integer");
  31.  
  32.  
  33.  
  34. ?>
  35.  
  36. <div id="gen0"><hr size="1"></div>
  37. <div id="kontakt1">
  38. <div id="pole1"><div><b>nice Score</b></div><div id="p3"><?= $punktacja_totalna ?></div></div>
  39. <div id="pole1"><div>Battle Tag</div><div id="p1"><?= $nazwa ?>#<?= $numer ?></div></div>
  40. <div id="pole1"><div>Paragon Level</div><div id="p3"><?= $paragon_level ?></div></div>
  41. <div id="pole1"><div>Hardcore plvl</div><div id="p3"><?= $h_level ?></div></div>
  42. <div id="pole1"><div>Zabitych Elit</div><div id="p3"><?= $elite ?></div></div>
  43. </div>
  44.  
  45. <?php
  46.  
  47.  
  48.  
  49. }
  50.  
  51.  
  52.  
  53. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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: 16.10.2025 - 01:34