Petrov Corso Sql-Php

Da Wiki-itsos.

Cosa occorre per cominciare

Queste lezioni possono essere realizzate usando una macchina virtuale, oppure un pc.
Se si usa la macchina virtuale, conviene che abbia queste specifiche: - adoperare l'ultima versione di VirtualBox disponibile (e aggiornarla prontamente quando ne arriva un'altra) - installare l'extensionpack di Virtualbox (ogni versione richiede il proprio Extension Pack) - Usare una Mv Ubuntu 64bit conforme alle specifiche MvWiki

Se si usa un pc, deve rispondere agli stessi requisiti della macchina virtuale. In alternativa, è possibile implementare queste lezioni anche utilizzando un pc con una versione Windows di SO (Xp, Vista, o 7) ma chi intende farlo deve provvedere autonomamente a installare tutti i pacchetti richiesti (apache2, mysql, php) e a configurare il sistema affinchè tutto sia operativo. Fatelo solo se siete veramente esperti e autonomi.

Lavoro preliminare obbligatorio:

  • Creare la pagina Petrov Corso Sql-php

20150420085834.png

  • Linkare la pagina creata alla vostra pagina personale e alla pagina di classe

20150420090759.png
20150420091111.png

  • Inserire nella pagina l'evidenza di disporre di una macchina (virtuale o fisica) alle specifiche indicate in queste note

20150420091214.png

Sottoprogetto SQL - Connettersi

Obiettivi mysql - Connettersi (usando interfaccia a terminale) - Definire utenti

Azioni - Connettersi a MySQL. La prima volta, entreremo come utente root, dando il comando

root@VmWikiPetio:/home/tech# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


Importante: non confondiamo l'utente root del sistema con l'utente root di mysql.

Hanno lo stesso nome, in quanto per assonanza sono il superutente dei rispettivi ambiti, ma sono ambiti distinti. Ad esempio, è possibile da utente root (del sistema) connettersi a MySql come utente normale, quindi senza particolari privilegi.
Viceversa, è possibile da utente normale del sistema, accedere come utente root di mysql.

- Definire utenti: possiamo farlo con il comando

mysql> create user 'test' identified by 'passtest';
Query OK, 0 rows affected (0.00 sec)


Verifichiamo se la creazione ha avuto esito, scollegandoci come root e collegandoci come test

mysql> exit
Bye
root@VmWikiPetio:/home/tech# mysql -u test -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


Nota: così come è stato definito, test può collegarsi a mysql da qualsiasi macchina. Se avessimo voluto limitare l'accesso, avremmo potuto specificare o ridurre le macchine. Ad esempio

mysql> create user 'test'@'localhost' identified by 'passtest';
Query OK, 0 rows affected (0.00 sec)
mysql> create user 'test'@'10.200.7.31' identified by 'passtest';
Query OK, 0 rows affected (0.00 sec)

In questi casi, l'utente test può connettersi a MySql solo da localhost (primo esempio) o solo dall'IP 192.168.2.135 (secondo esempio).



E' importante sapere creare utenti in MySql, ma per le prossime azioni continueremo a usare l'utente root,
perchè il nostro obiettivo è, al momento, di ampliare le azioni che sappiamo implementare.


Sottoprogetto PHP - Connettersi

Prerequisito: DEVE essere già stato superata l'azione Sottoprogetto SQL - Connettersi

Obiettivo

Implementare la connessione a mysql usando php

Azione

Creare il file /var/www/html/test3.php, contenente il seguente codice:

root@VmWikiPetio:/home/tech# pico /var/www/html/test3.php


<?php
mysql_connect("localhost", "root", "supp") or die(mysql_error());
echo "Connesso a MySQL!!";
?>

Eseguiamo il file, usando il link

http://10.200.7.31/test3.php

Se il sistema funziona e la password è corretta, otterremo una immagine come ad esempio questa
20150420091324.png
In caso contrario, otterremo una immagine come questa:
CorsoPhpSql-Fig02.png

Come si può vedere, nel secondo caso (nessuna risposta, nè messaggio nè errore) manca la connessione php-sql.


Finchè manca la connessione php-sql non è possibile procedere, bisogna risolvere il problema.

Verificare il codice inserito ed eventualmente verificate l'accesso via terminale a mysql.

Se il problema persiste, segnalarlo al docente.


Sottoprogetto SQL - Lavorare con il DB

Prerequisito: DEVE essere già stato superata l'azione Sottoprogetto PHP - Connettersi

Obiettivi mysql

  1. Lavorare sui Database
  2. Creare Database
  3. Eliminare Batabase

Azioni

Attenzione: di ogni azione di questa sezione occorre dare evidenza

Connettersi come root.
Possiamo vedere l'elenco dei Database presenti sul sistema con il comando:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Petio-wiki         |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.02 sec)


Possiamo creare un nuovo database con il comando:

mysql> create database Nuovo;
Query OK, 1 row affected (0.00 sec)


Esito del precedente comando:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Petio-wiki         |
| Nuovo              |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)


Importante: osservate il comando condizionale, il cui significato dovrebbe essere auto-esplicativo

mysql> create database IF NOT EXISTS Nuovo;
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> create database IF NOT EXISTS Nuovo2;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Petio-wiki         |
| Nuovo              |
| Nuovo2             |
| mysql              |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)


Come si vede, Nuovo già esisteva, quindi NON è stato aggiunto, Nuovo2 invece è stato creato.

Per cancellare, abbiamo il comando drop database, ecco un paio di esempi autoesplicativi:

mysql> drop database Nuovo2;
Query OK, 0 rows affected (0.02 sec)
mysql> drop database if exists Nuovo;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database if exists Nuovo;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Petio-wiki         |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)


Commento finale: - drop database Nuovo2 semplicemente cancella Nuovo2. - drop database if exists Nuovo la prima volta lo cancella, la seconda volta invece non lo trova (notate il warning)

Sottoprogetto PHP - Lavorare con il DB

Dobbiamo implementare, usando il php, le stesse azioni che abbiamo svolto in sezione 4 usando MySql.

Codice PHP da creare

Percorso PHP - progetto DBOnline
Test di connessione e selezione di un DB
<?php mysql_connect('localhost', 'root', 'supp') or die("Non riesco a connettermi a SQL"); mysql_select_db("test") or die("Non trovo il DB. Errore ". mysql_error()); mysql_close(); ?>

Inseriamo il codice nel file

/var/www/html/test4.php

ed eseguiamolo, esaminando i possibili esiti

Possibile Esito (negativo)

Se NON esiste ancora il database testdb, ci aspettiamo di ottenere questa risposta. 20150420090212.png


In tal caso, da MySql verificate cosa succede con show databases;


Possibile Esito (positivo)

Dopo aver verificato l'esistenza del database testdb, ci aspettiamo di ottenere questa risposta. 20150420090315.png



Eseguire i comandi MySQL e php di questo messaggio. Ottenere l'esito positivo e anche l'esito negativo (basta, ad esempio, modificare il listato inserendo un nome sbagliato)


Conclusione

Ora sappiamo: - verificare la connessione a SQL - ottenere e visualizzare informazioni sulla versione php e mysql che stiamo adoperando - verificare se esiste un certo database (nel nostro caso, testdb) e connetterci, sia in sql che in php

Sottoprogetto SQL - Lavorare con le tabelle

Prerequisito: DEVE essere già stato superata l'azione Sottoprogetto PHP - Lavorare con il DB

Obiettivi mysql

  1. Creare tabelle in un database
  2. Esaminare la struttura di una tabella
  3. Eliminare tabelle in un database

Azioni

Attenzione: di ogni azione di questa sezione occorre dare evidenza

Per creare una tabella in un database abbiamo a disposizione il comando create table. Ecco un esempio di come si usa:

mysql> use testdb;
Database changed
mysql> create table tabella ( colonna varchar (10) not null);
Query OK, 0 rows affected (0.04 sec)


Risultato ottenuto

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| tabella          |
+------------------+
1 row in set (0.00 sec)


Spiegazione del comando create table:

  1. il nome della tabella (nel nostro caso, la parola tabella) si scrive immediatamente dopo create table
  2. la tabella può avere una o più colonne, che si scrivono tra parentesi.
  3. nel nostro esempio, c'è UNA sola colonna, che si chiama, appunto, colonna
  4. varchar (10) spiega al sistema che la colonna è un tipo di dato formato da massimo 10 caratteri
  5. not null, opzionale, spiega al sistema che NON accettiamo valori nulli (in altri termini: un valore deve contenere minimo un carattere, altrimenti non sarà inserito.

Importante: il tipo varchar è molto comune, lo useremo spesso per fare pratica, ma è bene sapere che esistono tanti altri tipi di dato, ad esempio numeri, booleani, immagini, suoni, filmati...


Esaminare la struttura di una tabella

mysql> describe tabella;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| colonna | varchar(10) | NO   |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)

PHP - Lavorare con le tabelle

Prerequisito: DEVE essere già stato superata l'azione SQL - Lavorare con le tabelle

Attenzione: di ogni azione di questa sezione occorre dare evidenza
che state lavorando sulla VOSTRA macchina

Dobbiamo implementare, usando il php, le stesse azioni che abbiamo svolto in sezione SQL - Lavorare con le tabelle.

Codice PHP da creare

Percorso PHP - Lavorare con le tabelle
<?php mysql_connect('localhost', 'root', 'supp') or die("Non riesco a connettermi a SQL"); mysql_select_db("TestDb") or die("Non trovo il DB. Errore ". mysql_error()); $stm = "CREATE TABLE IF NOT EXISTS " . "PROVE(Parola VARCHAR(25), Id INT PRIMARY KEY AUTO_INCREMENT)"; $ok = mysql_query($stm); if (!$ok) { echo mysql_error(); die("Non riesco a eseguire il comando"); } echo "Tabella PROVE creata con successo"; mysql_close(); ?>

Spiegazione dei comandi nuovi

$stm = "CREATE TABLE IF NOT EXISTS " . 
       "PROVE(Parola VARCHAR(25), Id INT PRIMARY KEY AUTO_INCREMENT)";

Il nome della funzione CREATE TABLE IF NOT EXISTS è autoesplicativo. Nella seconda riga, troviamo il nome della tabella - PROVE - e, tra parentesi, l'elenco dei campi.

  • Parola VARCHAR(25) significa che parola è una stringa di massimo 25 caratteri
  • Id INT PRIMARY KEY AUTO_INCREMENT significa che Id è un numero di tipo intero (INT), che è la chiave primaria e che il suo valore si auto-incrementa. In altri termini: la prima parola inserita avrà Id 1, la seconda 2 e così via.
  • $stm è una stringa, una variabile di lavoro associata al comando.
$ok = mysql_query($stm);

Si effettua una richiesta su $stm, l'esito della richiesta viene assegnato alla variabile di lavoro $ok (più in dettaglio, mysql_query ritorna True se è stata eseguita con successo, False se non è andata a buon fine

if (!$ok) {
  echo mysql_error();
  die("Non riesco a eseguire il comando");
}
  • queste righe rappresentano UNA sola istruzione, che comincia con la parola if e termina con il simbolo }
  • il simbolo !$ok significa NON ok, ovvero è successo un errore
  • L'istruzione quindi si legge: SE - if - l'estito è stato NON buono -!ok- allora visualizza l'errore e termina il programma

Se invece il programma continua, vuol dire che non ha trovato errori e quindi visualizza la frase corrispondente.

echo "Tabella PROVE creata con successo";

Se avete compreso quanto spiegato:

  • create sulla vostra mv il file /var/www/index/test5.php
root@VmWikiPetio:/home/tech# pico /var/www/html/test5.php
  • Inseriamo in php5 il codice spiegato

20150420092904.png

  • Inserite gli adeguati commenti
  • fate eseguire il codice

20150420092006.png

  • riportate a questo punto le evidenze del vostro lavoro (da SQL, usate il comando show tables;)
mysql> show tables;
+------------------+
| Tables_in_TestDb |
+------------------+
| PROVE            |
+------------------+
1 row in set (0.00 sec)

SQL - Inserire record in tabella

In fase di implementazione

Prerequisito: DEVE essere già stato superata l'azione PHP - Lavorare con le tabelle

Situazione iniziale Mv adoperata per svolgere i punti precedenti

Obiettivi mysql

  1. Inserire recod in una tabella
  2. Visualizzare i record in una tabella
  3. Eliminare record da una tabella

Azioni

Attenzione: di ogni azione di questa sezione occorre dare evidenza
che state lavorando sulla VOSTRA macchina

Per inserire una riga in una tabella di un database abbiamo a disposizione il comando insert. Ecco un esempio auto-esplicativo di come si usa

mysql> INSERT INTO tabella(colonna) VALUES('Parola1');
Query OK, 1 row affected (0.06 sec)

Per visualizzare l'intero contenuto di una tabella, useremo il seguente comando

mysql> select * from tabella;
+---------+
| colonna |
+---------+
| Parola1 |
+-------------+----+
1 row in set (0.00 sec)

Il comando SELECT è il più importante e complesso comando SQL
al momento lo stiamo usando in modo elementare

Per eliminare i record da una tabella, si usa il comando DELETE. Ecco un esempio di uso di DELETE

mysql> delete from tabella;
Query OK, 1 row affected (0.06 sec)
mysql>  select * from tabella;
Empty set (0.00 sec)

Come si può vedere, delete rimuove TUTTI i record presenti nella tabella.


E' possibile usare DELETE per eliminare solo ALCUNI record presenti in tabella. Per questo, esaminiamo la sequenza di comandi, abbastanza auto-esplicativa, che poi commenteremo

mysql> INSERT INTO tabella(colonna) VALUES('Parola1');
Query OK, 1 row affected (0.06 sec)

mysql> INSERT INTO tabella(colonna) VALUES('Parola2');
Query OK, 1 row affected (0.06 sec)

mysql> INSERT INTO tabella(colonna) VALUES('ciao');
Query OK, 1 row affected (0.06 sec)

mysql> INSERT INTO tabella(colonna) VALUES('Parte');
Query OK, 1 row affected (0.07 sec)
mysql> select * from tabella;
+---------+
| colonna |
+---------+
| Parola1 |
| Parola2 |
| ciao    |
| Parte   |
+---------+
4 rows in set (0.00 sec)
mysql> delete from tabella where colonna = "Parola2";
Query OK, 1 row affected (0.06 sec)
mysql> select * from tabella;
+---------+
| colonna |
+---------+
| Parola1 |
| ciao    |
| Parte   |
+---------+
3 rows in set (0.00 sec)

Commenti

  • I comandi SQL possono essere dati in MAIUSCOLO o in minuscolo, non fa differenza
  • se si vuole cancellare un record particolare, bisogna aggiungere al comando DELETE la clausola WHERE, e poi specificare il valore da rimuovere
  • nella clausola where possono essere inseriti anche caratteri jolly. Ad es where colonna = "Parola*" cancella sia Parola1 che Parola2 (ma NON cancella Parte)

Se avete compreso quanto spiegato:

  • Collegatevi alla vostra Mv usando ssh
  • Accedete a MySQL come utente root
root@VmWikiPetio:/home/tech# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 53
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  • Date l'evidenza che siete capaci di vedere i database, creare e cancellare database
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Petio-wiki         |
| TestDb             |
| mysql              |
| performance_schema |
| test               |
| testdb             |
+--------------------+
7 rows in set (0.00 sec)
mysql> drop database testdb;
Query OK, 1 row affected (0.02 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Petio-wiki         |
| TestDb             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)
  • Date l'evidenza che siete capaci di vedere le tabelle di un database, creare e cancellare tabelle
mysql> use TestDb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table tabella ( colonna varchar (10) not null);
Query OK, 0 rows affected (0.05 sec)
mysql> drop table tabella;
Query OK, 0 rows affected (0.03 sec)
  • Date l'evidenza che siete capaci di aggiungere record a una tabella, visualizzare il contenuto della tabella e cancellare uno o tutti i record della tabella
mysql> INSERT INTO tabella(colonna) VALUES('Parola1');
Query OK, 1 row affected (0.02 sec)
mysql> select * from tabella;
+---------+
| colonna |
+---------+
| Parola1 |
+---------+
1 row in set (0.00 sec)
mysql> delete from tabella;
Query OK, 1 row affected (0.02 sec)
mysql> select * from tabella;
Empty set (0.00 sec)


SQL - Inserire record in tabella

Prerequisito: DEVE essere già stato superata l'azione PHP - Lavorare con le tabelle

Situazione iniziale Mv adoperata per svolgere i punti precedenti

Obiettivi mysql

  1. Inserire recod in una tabella
  2. Visualizzare i record in una tabella
  3. Eliminare record da una tabella

Azioni

Per inserire una riga in una tabella di un database abbiamo a disposizione il comando insert. Ecco un esempio auto-esplicativo di come si usa

mysql> INSERT INTO TabellaPetrov(colonna) VALUES('Petrov');
Query OK, 1 row affected (0.06 sec)

Per visualizzare l'intero contenuto di una tabella, useremo il seguente comando

Primosql.png

Il comando SELECT è il più importante e complesso comando SQL
al momento lo stiamo usando in modo elementare

Per eliminare i record da una tabella, si usa il comando DELETE. Ecco un esempio di uso di DELETE

Secondosql.png


Terzosql.png


Come si può vedere, delete rimuove TUTTI i record presenti nella tabella.


E' possibile usare DELETE per eliminare solo ALCUNI record presenti in tabella. Per questo, esaminiamo la sequenza di comandi, abbastanza auto-esplicativa, che poi commenteremo

Quartosql.png


Quintosql.png

Commenti

  • I comandi SQL possono essere dati in MAIUSCOLO o in minuscolo, non fa differenza
  • se si vuole cancellare un record particolare, bisogna aggiungere al comando DELETE la clausola WHERE, e poi specificare il valore da rimuovere
  • nella clausola where possono essere inseriti anche caratteri jolly. Ad es where colonna = "Parola*" cancella sia Parola1 che Parola2 (ma NON cancella Parte)

Se avete compreso quanto spiegato:

  • Collegatevi alla vostra Mv usando ssh
  • Accedete a MySQL come utente root
  • Date l'evidenza che siete capaci di vedere i database, creare e cancellare database
  • Date l'evidenza che siete capaci di vedere le tabelle di un database, creare e cancellare tabelle
  • Date l'evidenza che siete capaci di aggiungere record a una tabella, visualizzare il contenuto della tabella e cancellare uno o tutti i record della tabella


PHP - Inserire record in tabella

Prerequisito: DEVE essere già stato superata l'azione SQL - Inserire record in tabella

Attenzione: di ogni azione di questa sezione occorre dare evidenza che state lavorando sulla VOSTRA macchina
Suggerimento: non ricopiate meccanicamente gli esempi. Invece, date al DB e alle tabelle un nome auto-esplicativo,
ad esempio DB<VostroCognome>, Tabella<VostroCognome>. Fate lo stesso anche per i record inseriti
e inserite COMMENTI nel codice Php con NOME e DATA

Dobbiamo implementare, usando il php, le stesse azioni che abbiamo svolto in sezione SQL - Lavorare con le tabelle.

Modello di codice PHP da creare (ricordatevi di personalizzarlo!!!) Date al file il nome tab6.php

Sestosql.png

Spiegazione dei nuovi comandi presenti in tab6.php

  • Il comando INSERT server per inserisce una RIGA in una tabella. Più precisamente, INSERT INTO Tab6(Parola) VALUES('UnaParola') inserisce in Tab6, nel campo Parola, il valore UnaParola.
  • Quando si inserisce in Tab6 una nuova riga, il valore NumId si auto-incrementa. Quindi ogni nuova riga avrà un valore progressivo (1, 2, 3...)
  • se il codice php viene ripetuto, si aggiungono ogni volta nuove righe alla tabella. Il valore di Parola può essere ripetuto, quello di NumID invece è unico.
  • nota sulle stringhe: una stringa può contenere ogni tipo di caratteri: lettere dell'alfabeto, cifre numeriche, ma anche simboli come ' . ? - = e persino lo spazio. Quindi as esempio le 2 parole buon giorno, con lo spazio che le separa, formano una stringa. Per non avere dubbi su dove comincia e dove finisce la stringa, si usano le virgolette, semplici o doppie. Ad esempio 'buon giorno' indica una stringa, mentre 'buon' 'giorno' indica due distinte stringhe.
  • Il codice funziona con una logica simile a quello di test5.php, ma un po' più compatta. Quindi:
    • Si tenta il collegamento al DB. se fallisce, termina il programma
    • Se la tabella Tab6 non esiste, viene creata
    • Se tutto è corretto visualizza che Tab6 è presente, altrimenti interrompe il programma
    • Infine, aggiunge le 2 righe in tabella
  • Nel codice SORGENTE, al termine delle righe Percorso PHP - Inserire record in tabella e echo "Tabella Tab6 presente nel DB è presente il comando per mandare a capo. Questo comando si scrive < b r / > (senza spazi) ma non viene visualizzato nella pagina wiki, al suo posto il testo viene mandato a capo

Se avete compreso quanto spiegato:

  • create sulla vostra mv il file /var/www/html/test6.php
  • inserite in php6 il codice spiegato, PERSONALIZZATELO
  • fate eseguire il codice, anche più di una volta

Settimosql.png

  • riportate a questo punto le evidenze del vostro lavoro
    • da SQL, usate il comando select * from Tab6;

Ottavosql.png


PHP - Visualizzare il contenuto di una tabella

Prerequisito: DEVE essere già stato superata l'azione PHP - Inserire record in tabella
Abbiamo già realizzato in php un primo inserimento di record in tabella. Ora dobbiamo implementare, in php, l'equivalente del comando SQL (ecco il nostro ESEMPIO)

select * from tabella;
+-------------+-------+
| Parola      | NumId |
+-------------+-------+
| UnaParola   |     1 |
| AltraParola |     2 |
| UnaParola   |     3 |
| AltraParola |     4 |
+-------------+-------+
4 rows in set (0.00 sec)

Attenzione: in questa sezione utilizzeremo lo stesso DB di ESEMPIO della sezione precedente (TestDb) e la stessa tabella ESEMPIO Tab6
Chiaramente, voi dovrete usare il VOSTRO DB che avete usato nella sezione precedente

Azione php

L'azione php è più complicata rispetto a quella SQL perché, dopo aver estratto i valori dalla tabella, bisogna anche visualizzarli. Per questo occorre scrivere, riga per riga, i valori della tabella.

Nonosql.png

Spiegazione dei comandi usati:

$stm = "SELECT Parola, Id From PROVE";

In Sql, avevamo semplicemente usato *, qui invece adoperiamo i nomi dei campi, entrambi, per poter gestire i loro valori nelle istruzioni successive

$result = mysql_query($stm)

Il risultato dell'interrogazione select eseguita in precedenza viene riversato nella stringa $result, che contiene quindi tutti i valori presenti in Tabella.

while ($row = mysql_fetch_assoc($result))

L'istruzione while -in italiano mentre- serve per attivare un ciclo.
$result viene passata riga per riga con mysql_fetch_assoc($result), e ogni volta $row contiene la singola riga. In particolare, per ogni riga sono eseguite tutte le istruzioni che stanno tra i simboli { e }

   echo $row['Id']; 		Visualizza il valore di Id (in pratica, il numero progressivo)
   echo ": ";			Visualizza dopo il numero il carattere : e uno spazio
   echo $row['Parola'];	Visualizza il valore della Parola
   echo "
"; Infine manda a capo per la prossima riga

Se avete compreso quanto spiegato:

  • create sulla vostra mv il file /var/www/index/test7.php
 Decimosql.png
  • inserite in php7 il codice spiegato, PERSONALIZZATELO
  • fate eseguire il codice. L'esito atteso dovrebbe essere:
 Undicesimosql.png
  • Intervenite da terminale SQL e modificate il contenuto della tabella
  • riportate le evidenze del vostro lavoro