Dane z klasy w PHP do jQuery

0

Witam,
Nie znalazłem nigdzie odpowiedzi na forum więc zakładam nowy temat.
Mam pewną klasę w PHP (data.php), która pobiera dane z bazy danych:

 
<?php
include_once './connection.php';
class data {
    private $condb;
    public $dataDB = array();
    public $json;
    public function __construct(connection $con) {
        $this->condb = $con->getConnection();
    }
   
    function get_all_data($from){
       
       $stmt = $this->condb->query("SELECT * FROM ".$from);
       $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
       foreach ($result as $row){
           array_push($this->dataDB, $row);
           
       }
       //echo json_encode($this->data);
       echo json_encode($this->dataDB);
       //return $this->data;
    }
    function get_last_value($from){
       
       $stmt = $this->condb->query("SELECT * FROM ".$from. " ORDER BY id DESC LIMIT 1");
       $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
       foreach ($result as $row){
           array_push($this->dataDB, $row);
           
       }
       //echo json_encode($this->data);
       echo json_encode($this->dataDB);
       //return $this->data;
    }
   
   
}

Chciałbym dane z tych dwóch metod w tej klasie pobrać do jQuery za pomocą JSONA.
Czy jest szansa w jakiś sposób zdecydowania z której metody jQuery ma pobrać dane ?
Jeśli zrobię coś takiego na końcu data.php:

 
$con = new connection();
$data = new data($con);
$all_dht = $data->get_all_data("dht11");
$last_dht = $data->get_last_value("dht11");

To wtedy dane są przekazywane. Ale nie chciałbym, żeby były bez potrzeby przekazywane dane np. z metody get_last_value jak potrzebuję tylko dane z get_all_data.

function($){

$.data = function(){
	
	var url = "./data.php";
	var system;
	var dfd = $.Deferred();
	$.when($.get(url))
	.then(function(data){
            dfd.resolve(data);
	})
	.fail(function(data){
		var alert = "Could not get weather data";
		dfd.resolve(alert);
	})
	return dfd.promise();
};
})(jQuery);

1

WAŻNE

$stmt = $this->condb->query("SELECT * FROM ".$from. " ORDER BY id DESC LIMIT 1");

Nie rób w ten sposob. Uzyj znaku ? i bind params. Poczytaj o sql injection

To stwórz dwa oddzielne pliki. Jeden nazwij get_all_data.php drugi get_last_value.php i odpowiednio:

$con = new connection();
$data = new data($con);
$all_dht = $data->get_all_data("dht11");
$con = new connection();
$data = new data($con);
$last_dht = $data->get_last_value("dht11");
1

Ewentualnie wysyłaj jakiś parametr do serwera na podstawie którego zostanie wywołana odpowiednia metoda i zwrócone będą potrzebne dane.

0

No właśnie tak myślę, że ta druga opcja będzie chyba lepsza. Bo w przypadku tworzenia dodatkowych metod będę musiał tworzyć kolejne pliki.
ps. Dzieki Desu za info o PDO ;)

No i ogólnie dzięki za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1