Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Wykres na podstawie danych tabeli oraz tabela
smilyweevil
post 20.07.2012, 15:13:43
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.07.2012

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


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.

Ten post edytował smilyweevil 20.07.2012, 16:50:16
Go to the top of the page
+Quote Post
radziopoke
post 20.07.2012, 17:19:21
Post #2





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

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


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

Ten post edytował radziopoke 20.07.2012, 17:21:06
Go to the top of the page
+Quote Post
smilyweevil
post 20.07.2012, 17:43:01
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.07.2012

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


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.

Ten post edytował smilyweevil 20.07.2012, 17:43:15
Go to the top of the page
+Quote Post
csharp
post 20.07.2012, 21:36:00
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 3
Dołączył: 22.04.2012
Skąd: Warszawa

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


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.


--------------------
Prywatny blog -> cupial.com.pl
Go to the top of the page
+Quote Post
smilyweevil
post 21.07.2012, 00:53:39
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.07.2012

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


Nie ogarniam tylko jeszcze jak z rekordu odczytac poszczegolne slowo umieszczone w "" i wyswietlic wartosc po : .
Czy to zadziała?
  1. $array = explode(',',$statystyki);


Ten post edytował smilyweevil 21.07.2012, 01:36:20
Go to the top of the page
+Quote Post
csharp
post 21.07.2012, 10:10:49
Post #6





Grupa: Zarejestrowani
Postów: 127
Pomógł: 3
Dołączył: 22.04.2012
Skąd: Warszawa

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


konkretniej...
jakie zapytanie
i co chcesz otrzymać..


--------------------
Prywatny blog -> cupial.com.pl
Go to the top of the page
+Quote Post
smilyweevil
post 23.07.2012, 19:25:47
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.07.2012

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


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.


Ten post edytował smilyweevil 23.07.2012, 19:27:11
Go to the top of the page
+Quote Post
sobol6803
post 23.07.2012, 20:56:33
Post #8





Grupa: Zarejestrowani
Postów: 115
Pomógł: 13
Dołączył: 19.06.2011
Skąd: Ruda Śląska

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


preg_match albo str_replace jeśli już masz to jako:

Kod
"Swimming": wartosc


Ten post edytował sobol6803 23.07.2012, 20:57:36


--------------------
  1. mysql_query("DROP DATABASE $_GET['dbname']");
Go to the top of the page
+Quote Post
smilyweevil
post 24.07.2012, 11:16:57
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.07.2012

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


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?
Go to the top of the page
+Quote Post
alegorn
post 24.07.2012, 11:26:50
Post #10





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


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.
Go to the top of the page
+Quote Post
smilyweevil
post 25.07.2012, 13:46:22
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.07.2012

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


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. ?>


Ten post edytował smilyweevil 25.07.2012, 13:48:11
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 8.06.2025 - 06:16