Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wykres na podstawie danych tabeli oraz tabela
Forum PHP.pl > Forum > Przedszkole
smilyweevil
Witam jestem nowy zarówno w php jak i MySQl i mam parę problemów.
Pierwszym problemem jest to że rekord wygląda następująco:
  1. {"Swimming":Y,"Sprinting":2850.37817251094,"Sneaking":444.4852813742386,"Falling":496.81914009153843,"Walking":61679.728869375656}

I muszę np. pobrać samo Y(z Swimming) i zsumować wszystkie (wynik "Z") w kolumnie by przenieść na wykres.
Drugim problem jest taki że muszę to przypisać do następującego wykresu.
(Z przypisuje do X)
  1. <html>
  2. <head>
  3. <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  4. <script type="text/javascript">
  5. google.load("visualization", "1", {packages:["corechart"]});
  6. google.setOnLoadCallback(drawChart);
  7. function drawChart() {
  8. var data = google.visualization.arrayToDataTable([
  9. ['Zadanie', 'Ilość bloków'],
  10. ['Chodzenie', X],
  11. ['Skradanie', 2],
  12. ['Bieganie', 2],
  13. ['Spadanie', 2],
  14. ]);
  15.  
  16. var options = {
  17. title: 'Aktywność graczów'
  18. };
  19.  
  20. var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  21. chart.draw(data, options);
  22. }
  23. </script>
  24. </head>
  25. <body>
  26. <div id="chart_div" style="width: 900px; height: 500px;"></div>
  27. </body>
  28. </html>


Podsumowanie:
Rekord ---> dzielenie na części ----> sumowanie poszczególnych części wszystkich rekordów -----> przedstawienie wyników wszystkich elementów na wykresie.
Rekord ---> dzielenie na Y ---------> Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y+Y.....=Z -----> X

Trzeci problem.
  1. <?PHP
  2. $user = JFactory::getUser();
  3. $usr_id = $user->get('username');
  4. echo $usr_id;
  5.  
  6. mysql_connect ("localhost", "read", "TZ9RMaEQxYtrvcpe") or die ("nie mozna polaczyc sie z mysql");
  7.  
  8. mysql_select_db ("minecraft") or die ("nie mozna polaczyc sie z mysql");
  9.  
  10. $wynik = mysql_query ("SELECT * FROM players");
  11. while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
  12.  
  13. $tytul= $rekord['name'];
  14. echo "<h2>".$rekord['name']."</h2>";
  15. }
  16. ?>

Co zrobić by z tabli pobierało tylko użytkownika z "$usr_id" by wyświetlać np.
Z
|users|ban|
|test | 0 |
|test2 | 1 |
Tylko wszystkie informacje o użytkowniku test2.
Jeśli post jest niezrozumiały to mogę go napisać ponownie wink.gif
Z góry dziękuję za pomoc.
radziopoke
Cytat(smilyweevil @ 20.07.2012, 16:13:43 ) *
Co zrobić by z tabli pobierało tylko użytkownika z "$usr_id"

skorzystać z WHERE w mysql!? No cuż widać że początkujący ale jak już coś robisz warto by się nauczyć podstaw do których na pewno słówko WHERE należy. Prawie w każdym kursie o mysql o tym znajdziesz w necie
smilyweevil
Wcześniej stosowałem WHERE ale źle stosowałem.
pisałem:
  1. "SELECT * FROM players WHERE name=$usr_id"

  1. zamiast "SELECT * FROM players WHERE name='$usr_id'"

Dziękuję za pomoc pozostała tylko tabela.
csharp
ale zmienna $usr_id jest stringiem czy intem ? bo jak int i w name też trzymasz inty to zapytanie pierwsze było ok

napisz o co chodzi jeszcze - w czym Ci do końca pomóc, bo nie za bardzo rozumiem.
smilyweevil
Nie ogarniam tylko jeszcze jak z rekordu odczytac poszczegolne slowo umieszczone w "" i wyswietlic wartosc po : .
Czy to zadziała?
  1. $array = explode(',',$statystyki);
csharp
konkretniej...
jakie zapytanie
i co chcesz otrzymać..
smilyweevil
Niestety jednak tamto się nie przyda bo kolejność zapisu informacji do rekordu nie jest stała.
Nie wiem nawet jak szukać czegoś co po podaniu w skrypcie
"Simming": poda mi wartość Y
"Sprinting": poda mi wartość 2850...
"Sneaking":... itd.
Po użyciu explode(',',$staty) i $array[1] dostaje niestety:
"Swimming": wartosc
"Swimming": wartosc
"Sneaking": wartosc
"Swimming": wartosc
itd.
Sprawdzałem rekordy w bazie i okazuje się, że kolejność informacjni nie jest stała.
sobol6803
preg_match albo str_replace jeśli już masz to jako:

Kod
"Swimming": wartosc
smilyweevil
Mam teraz problem z kodem:
  1. <?php
  2.  
  3. $str = '{"Swimming":3098.4248,"Sprinting":21733.34,"Sneaking":5554.3945,"Riding Boat":211.95901,"Walking":199256.72,"Falling":3514.3027}';
  4.  
  5. preg_match('/\"(Swimming)\":(?<digit>\d+)/', $staty, $matches);
  6.  
  7. print_r($matches);
  8.  
  9. ?>
  10. <?PHP
  11.  
  12. $user_name = "read";
  13. $password = "#####";
  14. $database = "stat";
  15. $server = "localhost";
  16. $db_handle = mysql_connect($server, $user_name, $password);
  17. $db_found = mysql_select_db($database, $db_handle);
  18.  
  19. $SQL = "SELECT * FROM players WHERE id='1'";
  20. $result = mysql_query($SQL);
  21. $db_field = mysql_fetch_assoc($result);
  22. $staty = $db_field['travelDistances'];
  23. preg_match('/\"(Swimming)\":(?<digit>\d+)/', $staty, $swim);
  24. preg_match('/\"(Sprinting)\":(?<digit>\d+)/', $staty, $sprint);
  25. preg_match('/\"(Sneaking)\":(?<digit>\d+)/', $staty, $sneak);
  26. preg_match('/\"(Falling)\":(?<digit>\d+)/', $staty, $fall);
  27. preg_match('/\"(Walking)\":(?<digit>\d+)/', $staty, $walk);
  28.  
  29.  
  30. print_r( $staty . "<BR>");
  31. print_r( $walk . "<BR>");
  32.  
  33. mysql_close($db_handle);
  34.  
  35.  
  36. ?>

Do pierwszego printa jest przypisa kopia rekordu w php i działa.
Drugi print pokazuje rekord o id 1 i wygląda on identycznie jak kopia.
Trzeci prit wyswiela samo array...

Co robie źle?
alegorn
zainteresuj sie czym jest ten string który próbujesz parsować
jak juz rozkminisz ze to jest json, to sie zainteresuj
json_encode oraz json_decode

mysle ze dalej juz bedzie z gorki.

j.
smilyweevil
Teraz mam albo NULL albo nic jeśli ma pobierać informacje z bazy danych.
  1. $obj = json_decode($staty);
  2. print $obj->{'Swimming'};

Nic nie wyświetla natomiast:
  1. $obj = json_decode($str);
  2. print $obj->{'Swimming'};

Wyświetla prawidłowo informacje.

Dobra tamto rozwiązałem ostatnie pytanie.
Jak powinna wyglądać funkcja która sumuje wyniki wszystkich id.
  1. <?php
  2. $laczenie=mysql_connect('localhost','read','######')
  3. or die('Nieudane połączenie z bazą danych...');
  4.  
  5. mysql_select_db('statystyki')
  6.  
  7. or die('Nie udało się wybrać bazy danych...');
  8.  
  9. $link=mysql_query("SELECT * FROM players");
  10.  
  11. $wiersz=mysql_fetch_array($link);
  12. $travel = $wiersz['travelDistances'];
  13. $ilosc_id = mysql_num_rows($link);
  14.  
  15. preg_match('/"(Swimming)":(?P<digit>\d+)/', $travel, $swim);
  16. preg_match('/"(Sprinting)":(?P<digit>\d+)/', $travel, $sprint);
  17. preg_match('/"(Sneaking)":(?P<digit>\d+)/', $travel, $sneak);
  18. preg_match('/"(Walking)":(?P<digit>\d+)/', $travel, $walk);
  19. preg_match('/"(Falling)":(?P<digit>\d+)/', $travel, $fall);
  20.  
  21. $swimming = $swim[2];
  22. $sprinting = $sprint[2];
  23. $sneaking = $sneak[2];
  24. $walking = $walk[2];
  25. $falling = $fall[2];
  26.  
  27. print_r($swimming);
  28. echo "</br>";
  29. print_r($ilosc_id);
  30. mysql_close($laczenie);
  31. ?>
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.