Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Pobieranie danych z JSON i zapis do tabeli
kda
post 22.12.2017, 23:09:29
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

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


Witam,

Bardzo proszę o pomoc w pobraniu danych z pliku dane.json w którym mam następujące dane:

[
{
"id": "bistro",
"name": "Lokal",
"symbol": "OPO",
"wartosc": "37.91"
},
{
"id": "bistrum",
"name": "Restauracja",
"symbol": "EZW",
"wartosc": "643.49"
},
{
"id": "bistrej",
"name": "Bar",
"symbol": "BCK",
"wartosc": "250.99"
}
]


plik test.php ma zawartość
  1. $url = 'dane.json';
  2. $data = file_get_contents($url);
  3. $tab = json_decode($data);
  4.  
  5. print_r($tab);


Dane się wyświetlają tylko co dalej ,próbuję na różne sposoby wyciągnąć wszystkie dane i umieścić je w logiczny sposób pod zmienną ,lecz utknąłem i błądzę w ciemności.
Potrzebuje dane zapisać w tabeli w bazie MySQL, ale to w kolejnym etapie.
  1. foreach($tab as $key => $value) {
  2.  
  3. print "$value <br />";
  4. }
  5.  


Pewnie sprawa jest banalnie prosta lecz pierwszy raz podchodzę do takiego tematu ,więc bardzo proszę o pomoc i wyrozumiałość.
Go to the top of the page
+Quote Post
Neutral
post 22.12.2017, 23:29:43
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Czy próbowałeś tak:

  1. foreach($tab[0] as $key => $value) // (...)


lub:

  1. $tab = json_decode($data[0]);


?

Zauważ, że znak "[" ... "]" oznacza tablicę, a występuje on u Ciebie jeden raz, więc ta tablica jest jednowymiarowa i
ma tylko jakiś ciąg elementów w sobie.

Ten zapis jest równoważny z:

Kod
array({
   "id":"something",
   "value":"4"
})


  1. <style>
  2. td{
  3. border:1px solid red;
  4. }
  5. </style>
  6.  
  7. <body style="background:grey"><pre>
  8. <?php
  9.  
  10. $myObj = '{
  11. "name":"John",
  12. "age":30,
  13. "lipa":25,
  14. "clone":100,
  15. "cars": {
  16. "car1":"Ford",
  17. "car2":"BMW",
  18. "car3":"Fiat",
  19. "mmm":"vvvv",
  20. "xxx":"teraz",
  21. "hello":"guys"
  22. },
  23. "toy":"0",
  24. "ss":"ee",
  25. "welcome":"here",
  26. "underline":"asterisk",
  27. "underline2":"asterisk2",
  28. "test":{
  29. "one":"1",
  30. "two":"2",
  31. "three":"3",
  32. "four":"4",
  33. "five":"5",
  34. "six":"6",
  35. "sevent":{
  36. "x":"x1",
  37. "xz":"x2"
  38. }
  39. }
  40. } ';
  41.  
  42.  
  43.  
  44.  
  45. $obj = (json_decode($myObj,true));
  46.  
  47. function test($item,$key){
  48.  
  49. echo "<table>";
  50. echo "<tr><td>$key</td><td>$item</td></tr>";
  51. echo "</table>";
  52.  
  53. }
  54.  
  55. array_walk_recursive($obj,'test');
  56.  
  57. ?>
  58.  
  59. </body>


Korzystałem trochę ze StackOverflow: https://stackoverflow.com/questions/240660/...n-array-element i z tego: https://www.w3schools.com/js/js_json_objects.asp

Ten post edytował Neutral 23.12.2017, 02:44:32
Go to the top of the page
+Quote Post
kda
post 23.12.2017, 14:12:50
Post #3





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

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


Zastosowałem coś takiego i działa nerdsmiley.png
  1. foreach($tab[0] as $key => $value){
  2. print "$value <br />";
  3. }


Teraz pytanie czy jest możliwość aby wyświetlić tylko i wyłącznie dane spełniające kryteria np. po polu "name"
Powiedzmy pod jakąś zmienną czy w inny sposób wpisze słowa, np. bazując na przykładzie dane.json chciał bym wyciągnąć i wyświetlić dane ale tylko te gdzie pasujące wpisy w polu name "Lokal" oraz "Bar"

Czy ewentualnie całą zawartość dane.json wpakować do tabeli MySQLa a później to już sprawa jasna. Generalnie w jsonie mam wpisów ponad 150 a potrzebuję z niego pobrać jedynie kilka danych.
Go to the top of the page
+Quote Post
Neutral
post 24.12.2017, 14:21:19
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Korzystaj z documentation, e.g.:

  1. <?php
  2.  
  3. $json = '
  4.  
  5. {"foo-bar": 12345,
  6. "some":{
  7. "thing":"0",
  8. "thing2":"1"
  9. }
  10. }';
  11.  
  12. $obj = json_decode($json);
  13. print $obj->{'some'}->{'thing2'}; // 1
  14. print $obj->{'some'}->{'thing'}; // 0
  15. print $obj->{'foo-bar'}; // 12345
  16. ?>


http://php.net/manual/en/function.json-decode.php
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: 4.05.2025 - 05:54