Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zakodowaniem tablicy
zbysiusp
post 16.03.2017, 23:02:48
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 11.07.2009

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


Witam!

Pobieram dane z bazy MySQL i koduję je w formacie JSON. Mam jednak problem z uzyskaniem potrzebnej postaci tablicy i proszę o podpowiedź:

Format aktualny:
[{"czas_datetime":"2017-03-16 05:35:00","tempodcz":"-1.2"}]

Format oczekiwany:
["2017-03-16 05:35:00","-1.2"]

Kod:
  1. <?php
  2. require_once 'database.php';
  3.  
  4. $wynik = $conn->prepare("SELECT czas_datetime FROM tab_czujniki_2 ORDER BY czas_datetime DESC LIMIT 1") or die('Błąd zapytania');
  5. $wynik->execute();
  6.  
  7. $results = $wynik->fetchAll(PDO::FETCH_ASSOC);
  8.  
  9. $daten = new DateTime($data);
  10. $daten->modify('-1 day');
  11.  
  12. $minus_data = $daten->format("Y-m-d H:i:00");
  13.  
  14. $stmt = $conn->prepare("SELECT czas_datetime, tempodcz FROM tab_czujniki_2 WHERE czas_datetime >='$minus_data' ORDER BY tempodcz ASC LIMIT 1") or die('Błąd zapytania');
  15.  
  16. $stmt->execute();
  17. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  18. echo json_encode($results);
  19. ?>


Pozdrawiam

Ten post edytował zbysiusp 16.03.2017, 23:05:00
Go to the top of the page
+Quote Post
gitbejbe
post 16.03.2017, 23:13:57
Post #2





Grupa: Zarejestrowani
Postów: 515
Pomógł: 63
Dołączył: 27.08.2012

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


przecież Ty nawet nie spróbowałeś obrobić danych z bazy


  1. //na samym końcu
  2. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  3. $output = array();
  4.  
  5. foreach ($results as $row) {
  6. $output[] = array($row['czas_datetime'], $row['tempodcz']);
  7. }
  8.  
  9. echo json_encode($output);


EDIT:

nie zauważyłem że spodziewasz się tylko 1 wyniku, w takim razie na samym końcu zamiast echo to:

  1. echo json_encode(array($results[0]['czas_datetime'], $results[0]['tempodcz']));


jeśli z bazy chcesz pobrać tylko jeden rekord to zamiast fetchAll użyć samego fetch:

  1. $results = $stmt->fetch(PDO::FETCH_ASSOC);
  2.  
  3. echo json_encode(array($results['czas_datetime'], $results['tempodcz']));


pokombinuj, być może walnąłem gdzieś gafę, dawno już nie pisałem w php

Ten post edytował gitbejbe 16.03.2017, 23:27:27
Go to the top of the page
+Quote Post
zbysiusp
post 16.03.2017, 23:34:06
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 11.07.2009

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


@gitbejbe

Bardzo dziękuję za szybką i konkretną pomoc. Działa jak należy. Klikam bardzo pomógł.
Pozdrawiam
Go to the top of the page
+Quote Post
Pyton_000
post 17.03.2017, 08:51:43
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


a może prościej zamiast:
  1. $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
  2. echo json_encode($results);



  1. $results = $stmt->fetch(PDO::FETCH_NUM);
  2. echo json_encode($results);


Go to the top of the page
+Quote Post
zbysiusp
post 17.03.2017, 15:35:50
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 11.07.2009

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


@Pyton_000

Dziękuję.
$results = $stmt->fetch(PDO::FETCH_ASSOC) działa poprawnie: ["2017-03-17 05:52:00","0.1"]
$results = $stmt->fetch(PDO::FETCH_NUM) działa źle: [null, null]
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: 23.04.2024 - 14:39