Diapositiva 1 - IEEE Salento Student Branch

Lezione 3
Massimiliano Palese – IEEE Student Member






PHP-MySQL
Connessione ad un database
Lettura di record
Inserimento di record
Aggiornamento di record
Cancellazione di record

Un sito web dinamico difficilmente riesce a fare a
meno di un database: basti pensare alla gestione degli
utenti, dei permessi, dei contenuti, ecc

PHP mette a disposizione dei comandi che
permettono di interagire con MySQL in pochissime
linee di codice;

Un DATABASE (Base di Dati) è una collezione di dati;

Questa collezione di dati viene gestita ed organizzata da un
software specifico, chiamato DBMS (DataBase Management
System, Sistema di Gestione di Basi di Dati), che si frappone tra
la memorizzazione fisica degli stessi, e le applicazioni che li
richiedono;

Il DBMS espone solo il modello logico dei dati memorizzati,
nascondendo qualunque implementazione fisica degli stessi
(localizzazione sugli hard-disk, partizionamento, file system
usato, ecc);




DataBase Gerarchici, in cui i dati sono organizzati in insiemi, connessi
in una struttura ad albero: ogni ramo ha più figli, ma ogni insieme è
figlio di un solo ramo.
IN DISUSO
DataBase Reticolari, che derivano dai database gerarchici, con la
differenza che ogni insieme può essere figlio di più rami; IN DISUSO;
DataBase Relazionali, nei quali domina un rapporto di “relazione”: i
dati delle tabelle sono connessi da relazioni; questo è il modello più
diffuso ed utilizzato;
DataBase Object-Oriented, sono l’ultima frontiera delle basi di dati;
la caratteristica principale sta nell’implementazione lato DBMS delle
regole di manipolazione dei dati, che nei modelli precedenti è
rimandata alla specifica applicazione software che li utilizza;
Il linguaggio standard parlato dai DBMS Relazionali

L’ SQL (Structured Query Language) è un linguaggio
progettato per :
◦ Creare e modificare Schemi di Database (Modellazione Logica)
(DDL – Data Definition Language);
◦ Inserire, modificare, e gestire dati memorizzati
(DML – Data Manipulation Language);
◦ Interrogare i dati memorizzati (DQL – Data Query Language);
◦ Creare e gestire strumenti di controllo ed accesso ai dati
(DCL – Data Control Language).

CREATE TABLE ‘nome_tabella’ (
‘colonna_uno’ tipo_dato,
‘colonna_due’ tipo_dato,
…
…
);

INSERT INTO ‘nome_tabella’(‘colonna_uno’,’
colonna_due’,’colonna_tre’,…) VALUES (‘valore_testo’
, ’valore_testo’ , valore_numero , …);

SELECT colonna_uno, colonna_due, …
FROM tabella_uno, tabella_due, tabella_tre , …
WHERE [vincoli];

UPDATE tabella
SET colonna_uno=valore
WHERE [vincoli];

DELETE
FROM tabella
WHERE [vincoli];

Implementiamo un database “db_corso” con una
tabella dalle colonne:
◦
◦
◦
◦
ID , autoincrement
Nome, varchar(50)
Cognome, varchar(50)
Email, varchar(50)

Innanzitutto, occorre effettuare una connessione al
server DBMS di MySQL, attraverso l’istruzione:
$conn=mysqli_connect($host, $user, $pass,$db) or die
(“Impossibile connettersi al database!”);

Es: $host=“localhost”;

$query_ins = “INSERT INTO ‘tabella’ (..,..,..) VALUES
(…,…)”;

Esecuzione della query:
$result = $conn->query($query_ins);

Record inserito:
$id_nuovo = mysqli_insert_id($conn);

Scrivere una pagina HTML contenente un Form con
nome, cognome, email.
Inviare tale form ad uno script PHP che ne memorizza
le informazioni sulla tabella STUDENTI del database
db_corso, con colonne:
id -> AUTOINCREMENT
nome -> VARCHAR (testo)
cognome -> VARCHAR (testo)
email -> VARCHAR (testo)
<HTML>
<BODY>
<FORM ACTION=“inserisci.php” METHOD=“POST”>
Nome: <INPUT TYPE=“TEXT” NAME=“nome”><BR>
Cognome: <INPUT TYPE=“TEXT” NAME=“cognome”><BR>
eMail: <INPUT TYPE=“TEXT” NAME=“email”><BR>
<INPUT TYPE=“SUBMIT” VALUE=“Invia”>
<INPUT TYPE=“RESET” VALUE=“Cancella”>
</FORM>
</BODY>
</HTML>
<?php
$nome=$_POST[“nome”];
$cognome=$_POST[“cognome”];
$email=$_POST[“email”];
$conn=mysqli_connect(“192.168.0.100”,”studente”,””, ”db_corso”) or die (“Impossibile connettersi
!”);
$qr_ins=“INSERT INTO studenti(nome,cognome,email) VALUES (‘$nome’, ‘$cognome’, ‘$email’);”;
If ( $conn->query($qr_ins) )
echo “Record creato ! ID: ” . mysqli_insert_id($conn);
else
echo “Errore !”;
?>

Definizione della query:
$str_query = “SELECT * FROM .. WHERE … ;”;

Esecuzione della query:
$result = $conn->query($str_query);

Lettura dei dati:
while ($row = mysqli_fetch_array($result) ){
echo “Campo uno: ”.$row[“campo_uno”] ;
}

Record trovati/modificati:
$tot_record = mysqli_affected_rows($conn);
Riepilogare i dati della tabella STUDENTI del database
db_corso, riportando in una tabella HTML le colonne:
◦
◦
◦
◦
ID
Nome
Cognome
eMail
<HTML><BODY>
<?php
$conn=mysqli_connect(“192.168.0.100”,”studente”,””,”db_corso”);
$qr=“SELECT id, nome, cognome, email FROM studenti;”
$result=$conn->query($qr);
?>
<TABLE BORDER=“1”>
While ($riga=mysqli_fetch_array($result)){
echo ‘<TR><TD>’.$riga[“id”].’</TD><TD>’. $riga[“nome”].’</TD><TD>’.
$riga[“cognome”].’</TD>’. $riga[“email”].’<TD></TD></TR>’;
}
?>
</TABLE></BODY></HTML>

$query_ins = “UPDATE ‘tabella’ SET colonna=valore
WHERE [vincoli]”;

Esecuzione della query:
$result = $conn->query($query_ins);

Record modificati:
$tot_record = mysqli_affected_rows($conn);

$query_ins = “DELETE FROM tabella WHERE
[vincoli]”;

Esecuzione della query:
$result = $conn->query($query_ins);

Record eliminati:
$tot_record = mysqli_affected_rows($conn);

Modificare la tabella di riepilogo dati, aggiungendo
una colonna che permetta di eliminare la riga
selezionata.
<HTML><BODY>
<?php
$conn=mysqli_connect(“192.168.0.100”,”studente”,””,”db_corso”);
$qr=“SELECT id, nome, cognome, email FROM studenti;”
$result=$conn->query($qr);
?>
<TABLE BORDER=“1”>
While ($riga=mysqli_fetch_array($result)){
echo ‘<TR><TD>’.$riga[“id”].’</TD><TD>’. $riga[“nome”].’</TD><TD>’. $riga[“cognome”].’</TD>’.
$riga[“email”].’<TD></TD><TD><A HREF=“cancella.php?id=’.$riga[“id”].’”><FONT
COLOR=“red”>Elimina</FONT></A></TD></TR>’;
}
?>
</TABLE></BODY></HTML>