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

La classe prodotti: metodi di scrittura

Continuiamo a sviluppare la nostra applicazione basata su PHP e Angular definendo una classe destinata a gestire i metodi di scrittura.
Continuiamo a sviluppare la nostra applicazione basata su PHP e Angular definendo una classe destinata a gestire i metodi di scrittura.
Link copiato negli appunti

Passiamo ora alla definizione e creazione dei metodi di scrittura nel nostro database. Partiamo dall'inserimento di un record.

function crea(){
   $sql = "INSERT INTO " . $this->nome_tabella . "
       SET nome=:nome, prezzo=:prezzo, descrizione=:descrizione, categoria_id=:categoria_id, data_insert=:data_insert";
   $stmt = $this->conn->prepare($sql);
   $this->nome = htmlspecialchars(strip_tags($this->nome));
   $this->prezzo = htmlspecialchars(strip_tags($this->prezzo));
   $this->descrizione = htmlspecialchars(strip_tags($this->descrizione));
   $this->categoria_id = htmlspecialchars(strip_tags($this->categoria_id));
   $this->data_insert = htmlspecialchars(strip_tags($this->data_insert));
   $stmt->bindParam(":nome", $this->nome,PDO::PARAM_STR);
   $stmt->bindParam(":prezzo", $this->prezzo,PDO::PARAM_STR);
   $stmt->bindParam(":descrizione", $this->descrizione,PDO::PARAM_STR);
   $stmt->bindParam(":categoria_id", $this->categoria_id,PDO::PARAM_INT);
   $stmt->bindParam(":data_insert", $this->data_insert,PDO::PARAM_STR);
   if($stmt->execute()){
       return true;
   }
   return false;
}

Possiamo individuare una serie di passaggi: definizione della query d'inserimento con l'utilizzo dei parametri nominali e preparazione della query, sanificazione delle proprietà dell'oggetto che verranno assegnate ai parametri, in particolare con la conversione dei caratteri speciali in entità HTML e rimozione di eventuali tag HTML dalle stringhe.

Abbiamo poi l'assegnazione dei valori delle variabili ai parametri con dichiarazione del tipo di dato per incrementare la sicurezza della query. In ultimo eseguiamo la query e restituiamo un valore true se l'operazione va a buon fine, altrimenti false.

Definito il metodo d'inserimento l'aggiornamento non presenta particolari complicazioni e segue lo stesso schema visto precedentemente:

function aggiorna(){
   $sql = "UPDATE
           " . $this->nome_tabella . "
       SET
           nome = :nome,
           prezzo = :prezzo,
           descrizione = :descrizione,
           categoria_id = :categoria_id
       WHERE
           id = :id";
   $stmt = $this->conn->prepare($sql);
   $this->nome = htmlspecialchars(strip_tags($this->nome));
   $this->prezzo = htmlspecialchars(strip_tags($this->prezzo));
   $this->descrizione = htmlspecialchars(strip_tags($this->descrizione));
   $this->categoria_id = htmlspecialchars(strip_tags($this->categoria_id));
   $this->id = htmlspecialchars(strip_tags($this->id));
   $stmt->bindParam(':nome', $this->nome,PDO::PARAM_STR);
   $stmt->bindParam(':prezzo', $this->prezzo,PDO::PARAM_STR);
   $stmt->bindParam(':descrizione', $this->descrizione,PDO::PARAM_STR);
   $stmt->bindParam(':categoria_id', $this->categoria_id,PDO::PARAM_INT);
   $stmt->bindParam(':id', $this->id,PDO::PARAM_INT);
   if($stmt->execute()){
       return true;
   }
   return false;
}

Le variazioni sono minime e riguardano per lo più i dati: non abbiamo la scrittura della data d'inserimento mentre abbiamo l'id per selezionare il record che vogliamo aggiornare.

L'ultimo metodo che manca all'appello riguarda la cancellazione di un record:

function delete(){
   $sql = "DELETE FROM " . $this->nome_tabella . " WHERE id = ?";
   $stmt = $this->conn->prepare($sql);
   $this->id = filter_var($this->id,FILTER_SANITIZE_NUMBER_INT);
   $stmt->bindParam(1, $this->id,PDO::PARAM_INT);
   if($stmt->execute()){
       return true;
   }
   return false;
}

Anche in questo l'unica variante riguarda la proposta di un metodo diverso di sanificazione della variabile, tramite filter_var


Ti consigliamo anche