Vincoli di integrità in MYSQL

Spieghiamo cosa sono i vincoli di integrità in MYSQL.

Dopo aver creato delle tabelle (ovvero delle entità) tramite PhpMyAdmin, si possono stabilire le relazioni tra le tabelle se ce ne sono.

Per farlo andare nel pannello di controllo di PhpMyAdmin e scegliere il button Struttura, poi cliccare su Vista Relazioni. Qui è possibile specificare delle azioni quando vengono modificate o eliminate delle  righe nelle tabelle collegate. 
Ovvero si stabiliscono delle clausole di vincolo sull’integrità referenziale, spesso utilizzate con chiavi esterne.
Ecco alcuni vincoli di integrità in MYSQL più comuni e studiamo il loro impatto sulle operazioni di modifica o eliminazione:

ON DELETE:

  • RESTRICT: Impedisce l’eliminazione della riga padre se ci sono righe figlio collegate ad essa tramite la chiave esterna. Se si tenta di eliminare la riga padre, verrà generato un errore.
  • CASCADE: Quando viene eliminata una riga padre, questa clausola eliminerà automaticamente tutte le righe figlio collegate tramite la chiave esterna.
  • SET NULL: Imposta automaticamente i valori della colonna figlio collegata a NULL quando viene eliminata la riga padre.

ON UPDATE:

  • RESTRICT: Impedisce l’aggiornamento del valore della chiave esterna nella riga padre se ci sono righe figlio collegate ad essa.
  • CASCADE: Quando viene modificato il valore della chiave esterna nella riga padre, questa clausola aggiorna automaticamente i valori corrispondenti nelle righe figlio.

Queste clausole vengono utilizzate per garantire l’integrità referenziale tra le tabelle.

Ad esempio, se si ha una tabella “genitore” con una chiave esterna in una tabella “figlia”, l’uso di ON DELETE CASCADE può essere utile se si vuole eliminare automaticamente tutti i record “figli” quando viene eliminato un record “genitore”.

Vediamo come rappresentare il vincolo di integrità tramite codice SQL:

CREATE TABLE genitori (

    id INT PRIMARY KEY

);

CREATE TABLE figli (

    id INT PRIMARY KEY,

    genitore_id INT,

    FOREIGN KEY (genitore_id) REFERENCES genitori(id) ON DELETE CASCADE

);

In questo modo, quando un record nella tabella “genitori” viene eliminato, tutti i record corrispondenti nella tabella “figli” con il campo genitore_id corrispondente verranno eliminati automaticamente grazie alla clausola ON DELETE CASCADE.

Alcuni tipi di dati in MySQL

Quando lavoriamo con i database in mysql possiamo trovarci a studiare tanti tipi di dati. Vediamo quelli più comuni:

  • TINYINT → occupa 1 byte può memorizzare valori compresi tra -128 e 127 (o da 0 a 255 se utilizzato senza segno), ovvero 2^8 possibili combinazioni.
  • SMALLINT  → occupa 2 byte può memorizzare valori compresi tra -32768 e 32767 (o da 0 a 65535 se utilizzato senza segno), ovvero 2 ^ 16 possibili combinazioni.
  • INT  → occupa 4 byte può memorizzare valori compresi tra -2147483648 e 2147483647 (o da 0 a 4.294.967.295 se utilizzato senza segno), ovvero 2 ^ 32 possibili combinazioni.
  • BIGINT  → occupa 8 byte può memorizzare valori compresi tra -9223372036854775808 e 9223372036854775807 (o da 0 a 18446744073709551615 se utilizzato senza segno),ovvero 2 ^ 64 possibili combinazioni. N.B Il tipo di dati BIGINT è stato progettato per essere utilizzato quando i valori interi potrebbero non rientrare nell’intervallo supportato dal tipo di dati INT.
  • DECIMAL è utilizzato per memorizzare numeri decimali esatti. Ad esempio DECIMAL(10, 2) indica un numero con una precisione totale di 10 cifre, di cui 2 dopo la virgola.
  • FLOAT è utilizzato per memorizzare numeri decimali a virgola mobile (floating-point). È utile per applicazioni scientifiche o ingegneristiche dove la precisione esatta potrebbe non essere fondamentale e si desidera gestire un range più ampio di numeri decimali.
  • DATE: Memorizza date nel formato ‘YYYY-MM-DD’.
  • TIME: Memorizza un orario nel formato ‘HH:MM:SS’.
  • DATETIME: Memorizza data e ora nel formato ‘YYYY-MM-DD HH:MM:SS’.
  • TIMESTAMP: Memorizza una data e ora, ma viene convertito dal fuso orario locale al fuso orario UTC per l’archiviazione.
  • CHAR: Memorizza stringhe di lunghezza fissa. Richiede una lunghezza specificata al momento della creazione della tabella e occupa lo spazio specificato anche se il dato effettivo è più corto.
  • VARCHAR: Memorizza stringhe di lunghezza variabile. Utilizza solo lo spazio necessario per il valore effettivo, fino a una lunghezza massima specificata durante la creazione della tabella. La lunghezza massima è 255 caratteri.
  • TEXT supporta fino a 65.535 caratteri.
  • MEDIUMTEXT supporta fino a 16.777.215 caratteri.
  • LONGTEXT supporta fino a 4.294.967.295 caratteri.

Ci sono tanti altri tipi di dati che è possibile utilizzare in MYSQL, quelli indicati sono tra i più comuni.

Stringhe in PHP

Stringhe in PHP

In questa lezione studieremo le stringhe in PHP e vedremo come calcolare la lunghezza di una stringa con la funzione strlen.

Abbiamo già visto, precedentemente, come memorizzare una stringa in una variabile:

$stringa = 'Coding Creativo';

Per rappresentare le stringhe in PHP possiamo usare dunque gli apici singoli, ma anche gli apici doppi.

Stringhe in PHP – Accedere ad ogni elemento della stringa in PHP

Si può accedere a ciascuna lettera di una stringa semplicemente indicando la posizione della lettera.

Quindi ad esempio se scrivo:

echo $stringa[0];

Ottengo dunque la lettera C.

Attenzione però in realtà se inserisco delle lettere accentate ciò non vale.

  $stringa = 'sarò da te tra 5 minuti';
  echo $stringa[2];
  echo $stringa[3];
  echo $stringa[5];
  echo $stringa[6];

In questo caso si produce questo output: r� d.

Questo perché la ò, così come le altre lettere accentate, occupa 2 byte, mentre i caratteri dell’alfabeto A-Z, a-z, i caratteri ! – ? ( ) [ ] ” ‘ $ & ecc… occupano 1 byte.

Stringhe in PHP – lunghezza di una stringa

Per determinare la lunghezza della stringa posso utilizzare la funzione di PHP strlen a cui passo all’interno delle parentesi tonde la stringa da calcolare.

Facciamo dunque un esempio:

  $stringa = 'Coding Creativo';
  echo strlen($stringa);

Mi darà in output la lunghezza della stringa che in questo caso è 15.

Ma attenzione proviamo a cambiare l’ultimo carattere, cioè la o con la ò. Vedremo dunque che verrà stampato in output il valore 16. Questo perché come dicevamo prima il carattere ò occupa 2 byte rispetto agli altri.

Per ovviare al problema del calcolo della lunghezza delle stringhe in PHP si può utilizzare la libreria mb, che si occupa di gestire le stringhe multibyte. Di seguito il link della documentazione ufficiale: https://www.php.net/manual/en/book.mbstring.php

Quindi scriviamo semplicemente:

$stringa = 'Coding Creativo';
echo mb_strlen($stringa);

Attenzione affinché ciò funzioni dobbiamo includere la libreria mb in fase di installazione. Ecco di seguito la guida ufficiale per l’installazione: https://www.php.net/manual/en/mbstring.installation.php.

Conclusioni

In questa lezione abbiamo semplicemente introdotto le stringhe in PHP, nelle prossime lezioni utilizzeremo alcune funzioni delle stringhe al fine di manipolarle in base alle nostre esigenze.

Alcuni link utili

Indice tutorial linguaggio PHP

Introduzione al linguaggio PHP

Ambiente di lavoro XAMP

Variabili in PHP

Costanti in PHP

Array in PHP

Var_dump in PHP

If else PHP

If else PHP

L’istruzione if else in PHP rappresenta un esempio di istruzione condizionale e permette di decidere quale strada deve eseguire il nostro algoritmo.

In definitiva se una condizione è vera si effettuano determinate istruzioni contenuti nell’if. Altrimenti, se è falsa ed è presente l’istruzione else si eseguono le altre istruzioni contenute nell’else.

Inoltre l’istruzione if else permette di inserire altri elseif.

Da notare che l’utilizzo della sintassi else if, funzionante in molti altri linguaggi di programmazione, in PHP restituisce un errore di parsing.

If else PHP primo esempio

Facciamo dunque degli esempi per comprendere meglio il funzionamento dell’istruzione condizionale if else, elseif.

Preso in input un numero n, vogliamo visualizzare in output se è un numero positivo.

In questo caso servirà solo l’istruzione if in quanto non ci interessa valutare se il numero è negativo oppure nullo.

Dunque possiamo scrivere:

$n = 10;
  if ($n > 0){
    echo 'numero positivo';
  } 

In output verrà stampato dunque: numero positivo.

Modifichiamo adesso l’esercizio in questo modo in modo da avere anche l’istruzione else.

If else PHP secondo esempio

Prendere in input un numero n e visualizzare in output se è un numero positivo oppure no.

$n = 10;
  if ($n > 0){
    echo 'numero positivo';
  } else {
    echo 'numero non positivo';
  }

Con la sola istruzione if else non possiamo specificare in dettaglio i 3 casi. Possiamo solo dire se il numero è positivo dimmi che è positivo altrimenti dimmi che non lo è.

Per specificare i 3 casi mi occorre dunque un’altra istruzione elseif oppure una struttura nidificata, che vedremo nella prossima lezione.

Ecco dunque l’esempio completo:

  $n = 10;
  if ($n > 0){
    echo 'numero positivo';
  } else if (n == 0){
    echo 'numero nullo';
  } else {
    echo 'numero negativo';
  }

Conclusioni

In questa lezione abbiamo semplicemente introdotto le istruzioni condizionali if else in PHP, nelle prossime lezioni proporrò tanti esempi al fine di comprenderne meglio l’utilizzo.

Alcuni link utili

Indice tutorial linguaggio PHP

Introduzione al linguaggio PHP

Ambiente di lavoro XAMP

Variabili in PHP

Costanti in PHP

Array in PHP

Var_dump in PHP

Variabili in PHP

Variabili in PHP

Le variabili in PHP sono, come del resto anche negli altri linguaggi di programmazione, degli spazi di memoria dove memorizzare dei dati, ovvero delle informazioni.

È chiaro che il valore delle variabili può successivamente cambiare, in vari modi, all’interno dei nostri programmi.

In PHP le variabili si utilizzano anteponendo al nome il simbolo del $. Dopo, per assegnare un valore si utilizza l’operatore di assegnamento ( = ) ed il valore corrispondente.

Vediamo dunque degli esempi pratici per capire come utilizzarle all’interno dei nostri script.

Nomi validi di variabili in PHP

Le variabili in PHP sono definite in modo tale che al simbolo del $ deve seguire una lettera oppure l’underscore ( _ ).

Vediamo alcuni esempi di nomi validi:

$nome = 'Coding';
$nome1 = 'Coding';
$_nome = 'Coding';
$_1nome = 'Coding';
$nome_1 = 'Coding';

Invece non solo validi questi esempi:

$1nome = 'Coding';
$1_nome = 'Coding';
$145 = 'Coding';

In sostanza il nome della variabile non può iniziare con un carattere numerico.

Inoltre i nomi delle variabili sono case-sensitive, dunque la variabile $nome è diversa dalla variabile $NOME o ancora da $Nome.

I caratteri ammessi sono tutti i caratteri a-z, A-Z, 0-9 ed il carattere _, non sono ammessi altri caratteri.

Stampare le variabili in PHP

In PHP si possono stampare le variabili in vari modi.

Primo metodo

Ad esempio se devo stampare semplicemente la variabile posso richiamare semplicemente la variabile senza apici o virgolette con il costrutto echo. Dunque, in questo modo:

$nome = 'Coding';
echo $nome;

Secondo metodo apici singoli

Oppure, un altro modo per stampare le variabili in PHP all’interno di una frase, consiste nell’utilizzo degli apici singoli e la concatenazione della variabile con il punto.

Ecco dunque un esempio:

$nome = 'Coding';
echo 'Il mio nome è ' .$nome;

Terzo metodo apici doppi

Si possono usare anche gli apici doppi e questo metodo offre il vantaggio di non dover concatenare la variabile con il punto.

Ecco quindi un esempio:

$nome = 'Coding';
echo "Il mio nome è $nome ";

Prossimamente vedremo altri metodi che consente di visualizzare le variabili ed in particolare le notazioni HEREDOC e NOWDOC, molto comode per la stampa delle stringhe e variabili.

Alcuni link utili

Indice tutorial linguaggio PHP

Introduzione al linguaggio PHP

Ambiente di lavoro XAMP

Var_dump in PHP

Explode

Explode

La funzione explode in PHP manipola una stringa e restituisce un array che contiene gli elementi della stringa.

Per separare questi elementi si può inserire un delimitatore, il quale specifica, dunque, in base a cosa deve essere suddivisa la stringa.

Inoltre si può indicare anche un terzo parametro che indica il limite massimo di elementi dell’array.

La sintassi è dunque questa:

explode (delimitatore (string) , stringa [, limite])

Come già detto, la funzione restituisce un array.

Esempio explode in php

Prendiamo quindi la seguente stringa di esempio:

$stringa = 'Imparare a programmare con Coding Creativo';

Possiamo dunque decidere di suddividere gli elementi in base allo spazio vuoto.

Quindi utilizziamo la funzione explode, dove come primo parametro (delimitatore) inseriamo lo spazio vuoto, mentre come secondo parametro inseriamo la nostra variabile stringa:

$array_stringa = explode(' ', $stringa);

Adesso facciamo il var_dump dell’array ottenuto con l’operazione di explode:

var_dump($array_stringa);

In output abbiamo un array di 6 elementi, dunque visualizzeremo il seguente risultato:

array(6) { [0]=> string(8) "Imparare" [1]=> string(1) "a" [2]=> string(11) "programmare" [3]=> string(3) "con" [4]=> string(6) "Coding" [5]=> string(8) "Creativo" } 

Secondo esempio explode in php

In questo secondo esempio abbiamo una stringa, che contiene delle virgole, come questa:

$stringa = 'Impara a programmare con Coding Creativo, segui i tutorial presenti sul sito.';

Decidiamo dunque di separare gli elementi utilizzando il delimitatore virgola.

$array_stringa = explode(‘,’, $stringa);

array(2) { [0]=> string(40) "Impara a programmare con Coding Creativo" [1]=> string(36) " segui i tutorial presenti sul sito." } 

Terzo esempio explode in php

In questo terzo esempio dividiamo un percorso utilizzando il delimitatore \ .

In questo caso dobbiamo prestare maggiore attenzione, in quanto per scrivere il carattere \ dobbiamo utilizzare gli apici.

Ecco dunque l’esempio completo:

$stringa = "C:'\'codingcreativo'\'php'\'explode'\'index.html";

$array_stringa = explode("'\'", $stringa);

var_dump($array_stringa);

Quarto esempio explode in php

Come detto si può impostare anche un terzo parametro che indica il numero massimo di elementi che può contenere l’array.

Dunque facciamo un esempio:

$stringa = 'jazz,rock,pop,blues,metal';

$array_stringa = explode(",", $stringa,2);

var_dump($array_stringa);

In output possiamo visualizzare un array che contiene 2 elementi, dove il primo conterrà jazz mentre l’ultimo conterrà i restanti stili musicali.

array(2) { [0]=> string(4) "jazz" [1]=> string(20) "rock,pop,blues,metal" } 

Conclusioni

In questa lezione abbiamo introdotto la funzione explode in PHP che ha dunque il compito di suddividere una stringa in base al delimitatore desiderato e di restituire un array con quegli elementi.

Alcuni link utili

Indice tutorial linguaggio PHP

Introduzione al linguaggio PHP

Ambiente di lavoro XAMP

Variabili in PHP

Costanti in PHP

Array in PHP