e allora...ma si continuiamo! english lesson 3 by Mr. Brown....vediamo ora come definire i metodi di classe. Quando vogliamo creare un nuovo record in archivio dobbiamo 1) aprire il db 2) creare la query 3) controllare che sia stato tutto fatto correttamente 4) chiudere la query. Per gli esempio col db li faremo in MySQLi, versione ad oggetto della libreria standard MySQL che d'altronde è destinata a sparire nelle prossime versioni di PHP e aiuta nel comprendere la programmazione OOP. Quindi: inseriamo i dati del nuovo amico nel form e poi scriviamoli nelle variabili public che abbiamo definito all'inizio della classe amico:
Codice PHP:
require_once ('class/tantaRoba.php');
require_once('class/amico.php');
$amico = new Amico();
$amico->nome = $_POST['nome'];
$amico->cognome = $_POST['cognome'];
// ecc ecc
$amico->info = $_POST['info'];
prima di tutto definisco il metodo salva della classe Amicoche definisce la query e dove i campi vengono scritti solo se contengono qualcosa:
Codice PHP:
public function salva() {
$sql = "INSERT INTO amici(";
if ($this->nome) $sql .= "nome";
if ($this->cognome) $sql .= ", cognome";
// ecc ecc
if ($this->info) $sql .= ", info";
$sql .= ") VALUES (";
if ($this->nome) $sql .= "'" . $this->nome . "'";
if ($this->cognome) $sql .= "'" . $this->cognome . "'";
// ecc ecc
if ($this->info) $sql .= "'" . $this->info . "'";
$sql .= ")";
return $this->executeQuery($sql);
}
questo metodo definsice la query e come vedi restituisce..il valore di ritorno del metodo executeQuery! perchè? gaurda come è strutturata executeQuery sotot la classe TantaRoba:
Codice PHP:
public function executeQuery($query) {
$mysqli = $this->openDB();
if ($mysqli) {
$result = $mysqli->query($query);
if ($result) {
return $mysqli->last_insert_id;
else
return 0;
}
}
$this->closeDB($mysqli);
}
public function openDB() {
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
if ($mysqli)
return $mysqli;
else
return 0;
}
public function closeDB($mysqli) {
$mysqli->close();
}
le funzioni openDB e closeDB sono facili da capire. L'unica da spiegare è executeQuery: usa $mysqli->query($sql) per fare la query di inserimento e poi la funzione restituisce un valore $mysqli->insert_last_id : una operazione INSERT INTO aumenta di uno il contatore del cmapo principale di autoincremento, e questa istruzione restituisce appunto l'ultimo valore libero disponibile per il record, altrimenti restituisce FALSE. Se quindi la function executeQuery restituisce un valore superiore a zero allora l'inserimento è stato effettuato con successo. quindi in pratica la function SALVA fa tutto da sola, tu devi solo scrivere il codice seguente epr salvare un record:
Codice PHP:
require_once ('class/tantaRoba.php');
require_once('class/amico.php');
$amico = new Amico();
$amico->nome = $_POST['nome'];
$amico->cognome = $_POST['cognome'];
// ecc ecc
$amico->info = $_POST['info'];
if ($amico->salva())
echo '<script>alert("Record inserito in archivio!")</script>';
else
echo '<script>alert("Errore nel salvataggio del record!")</script>';
il tutto come vedi con pochissime righe senza che tu devi preoccuparti di come è strutturata la classe: te puoi solo migliorala se vedi che puoi.
FINE TERZA LEZIONE