Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Lettura dei dati con PHP e Angular

Dopo aver superato la parte relativa all'implementazione delle API passiamo alla lettura dei dati in un'applicazione basata su PHP e Angular.
Dopo aver superato la parte relativa all'implementazione delle API passiamo alla lettura dei dati in un'applicazione basata su PHP e Angular.
Link copiato negli appunti

Avendo a disposizione un database già popolato possiamo procedere con la lettura dei dati, operazione di per s´ fra le più semplici che ci permette di realizzare il primo step del nostro lavoro.

Creeremo quindi il file prodotti.php all'interno della cartella /api/v1 e includeremo il file con la connessione al database e il file con la classe prodotti.

include_once '../../config/database.php';
include_once '../../objects/prodotti.php';

La prima operazione che ci interessa prendere in considerazione è la lettura di tutti i record, i prodotti presenti nel nostro database. Questo operazione è associata a una richiesta GET senza nessun parametro id. Quindi per prima cosa procediamo con il recupero del metodo di accesso:

$method = $_SERVER['REQUEST_METHOD'];

In secondo luogo prepariamo il codice per la lettura del parametro id:

$id = 0;
if(isset($_REQUEST['request'])){
$id = filter_var($_REQUEST['request'],FILTER_SANITIZE_NUMBER_INT);
}

Quindi assegniamo alla variabile $id il valore 0 e prepariamo lo switch sulla variabile $method:

switch ($method) {
   case 'GET':
	..
	break;
}

Stabiliamo quindi che l'output potrà essere servito per chiamate cross-domain e sarà in formato JSON, faremo ciò manipolando gli header della nostra risposta:

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

Esaminando gli header della risposta troveremo ora:

Figura 1. Header risposta.
Header risposta

Ovviamente il nostro lavoro inciderà sulla prima e sulla quarta riga dell'intestazione.

Possiamo ora procedere con il recupero dei dati:

if($id>0){
	//**
}else{
$prodotto = new Prodotto($db);
$stmt = $prodotto->leggi();
$num = $stmt->rowCount();
}

La parte relativa alla clausola $id>0 per il momento la lasciamo in stand-by, servirà poi per accedere al dettaglio del singolo prodotto. Concentriamoci sull'else: creiamo un'istanza della classi prodotto passando la connessione al database che abbiamo incluso precedentemente, sfruttiamo il metodo leggi per recuperare i dati e contiamo il numero di record restituiti.

Se non è presente alcun record restituiamo un messaggio di errore:

if($num == 0){
echo json_encode(
   array("messaggio" => "Nessun prodotto trovato.")
);
}

Altrimenti prepariamo la risposta:

else{
$products_arr = array();
$products_arr["records"] = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
	..
}
}

I due array servono per strutturare la risposta separando dati di intestazione (che noi non useremo) dai dati veri e propri. Questi saranno gestiti da un ciclo while:

extract($row);
$product_item=array(
   "id" => $id,
   "nome" => $nome,
   "descrizione" => html_entity_decode($descrizione),
   "prezzo" => $prezzo,
   "categoria_id" => $categoria_id,
   "categoria_nome" => $categoria_nome
);
array_push($products_arr["records"], $product_item);

In pratica: useremo le chiavi dell'array come variabili per creare un nuovo array di ogni singolo item del ciclo, ciascuno di questi array viene inserito nell'array con chiave record.

L'ultimo passaggio sarà quello di inviare i dati al forntend:

echo json_encode($products_arr);

A questo punto possiamo creare la nostra applicazione e visualizzare i dati.

Ti consigliamo anche