Entries Tagged 'PHP/MySQL' ↓
February 4th, 2013 — PHP/MySQL
Scusandomi il tardare della lezione ecco a voi la nuova lezione sulle strutture di controllo in PHP. Nella precedente lezione, abbiamo studiato le variabili: come dichiararle, come usarle e come PHP le utilizza, etc… Questa lezione invece è dedicata alle strutture di controllo come: IF-ELSE, WHILE e i cicli come: FOR e SWITCH. Ovviamente inizieremo senza ombra di dubbio dall’istruzione di condizione if per poi analizzare l’if-else. L’istruzione if è la prima istruzione che si può incontrare quando si parla di codici sorgenti con dei “salti condizionati” o per far prendere delle decisioni al programma. Decisioni ovviamente scelte da noi. Il PHP per l’istruzione if ha una sintassi di base come questa quasi equivalente al C:
if(<condizione>) {
<codice>
}
Infatti la <condizione> è ciò che rende il codice tra parentesi vero oppure falso. Se è vero in questo caso esegue, il codice contenuto tra parentesi graffe, mentre se è falso esegue il codice successivo alla condizione. Per comprendere meglio questo concetto vediamo un esempio… Poniamo come condizione che se uno studente ha una media scolastica pari a 60 viene ammesso all’esame altrimenti viene bocciato (che ometteremo nel sorgente):
<?php
// code
if($grade >= 60){
echo “Promosso”; // spero per voi che siate in questo ramo 😉
}
// Codice non appartenente all’if
?>
Bene, questo codice è molto chiaro perché fa capire che se la variabile $grade è maggiore o uguale al voto stabilito (quindi 60) il codice che verrà mostrato in output, sarà la stringa “Promosso”, ma se un docente di una scuola o di università ci chiede di stampare anche la stringa “Bocciato”? È qui che entra in gioco l’istruzione else e se ci sentiamo in grado di inserirla c’è anche l’istruzione else if con una condizione in più. Come si usano queste istruzioni? Semplicemente aggiungendo all’if anche la condizione else, mi spiego meglio con un esempio:
<?php
$if($grade >= 60){
echo “Promosso”;
}
else{
echo “Bocciato”;
}
?>
Questo è un tipico esempio di condizione if-else. Quindi che SE l’istruzione è maggiore o uguale a 60 stampa “Promosso” mentre se è minore di 60 stampa “Bocciato”. L’istruzione else if invece dicevo che viene inserita una condizione in più per un motivo ben preciso:
<?php
if($name_1 == ‘Ghiro’) // Prima condizione
{
echo “Ciao $name_1, ti ha cercato $name_2”;
}
elseif ($name_2 == ‘Carlo’){ // Seconda condizione
echo “Ciao $name_2, $name_1 non c’è”;
}
else{
echo “Exit.”// Esci se l’utente non è $name_1 o $name_2
}
?>
Questo esempio è molto simile a un login di un forum o di un qualsiasi software richieda un login. Quando l’utente $name_2 si collega dice che utente $name_1 è momentaneamente assente se entra $name_1 dice che l’ha cercato $name_2, con ciò ne deduciamo che SE si collega X il programma stampa una cosa ALTRIMENTI SE si collega Y stampa che X non è in linea ALTRIMENTI esci dal software. Come potete vedere il codice sorgente di questo esempio è stato semplificato apposta per il livello di conoscenza del PHP. Ora che abbiamo incontrato sia l’istruzione if che la else iniziamo a conoscere l’istruzione while.
IL COMANDO DI ITERAZIONE WHILE:
While è un’istruzione che serve a iterare una porzione di codice per n volte fino a che alcune condizioni rimarranno vere. Infatti solitamente nella vita quotidiana quante volte ci è capitato di dire la frase “Nella mia lista della spesa ci sono ancora altre pietanze compra queste pietanze e poi dirigiti verso la cassa”? Tantissime 🙂 e così è la programmazione finché un certo numero di condizioni non saranno terminate continua a iterare! Ecco un rapido esempio di come si itera per 10 volte un numero:
<?php
$val = 1;
while ($val <= 10)
{
$val++;
echo $val;
}
?>
Output:
1
2
3
4
5
6
7
8
9
10
11
IL COMANDO FOR:
Sia il comando while che il comando for sono due iterazioni… Ma cos’è che li distingue tra loro? Il comando for è più versatile anche più sfruttato nel PHP, infatti in C con il comando while ci possiamo scrivere un software che prenda in input un valore flag (o sentinella) per iterare n volte finchè non inserisci tale valore infatti while (x != y) mentre in PHP con l’istruzione for abbiamo la seguente sintassi:
<?php
for (espressione_iniziale; test; espressione_finale) {
codice;
}
?>
La sintassi qui sopra riportata è solo uno schema base dell’istruzione for, infatti espressione iniziale viene prima di tutte le altre, per poi procedere con l’espressione test…questa espressione valuta in forma booleana, quindi se da come output un valore logico TRUE allora viene eseguita il codice nelle parentesi! Se invece come output viene fuori FALSE ritorna l’espressione_iniziale. Un esempio di script in PHP del ciclo for è:
<?php
for ($i = 1; $i <=$a; $i++)
{
print $i;
}
?>
IL COMANDO SWITCH:
Il comando switch viene chiamato ‘comando di selezione multipla’ infatti questa istruzione ha diversi casi con istruzione break per terminare l’esecuzione alla fine di ogni caso. Quando infatti bisogna strutturare un programma come un ATM bancomat bisogna prendere in considerazione anche la scelta dell’istruzione switch! Lo switch prende decisioni sulla base di valori presi da un’espressione e notiamo che appunto nella condizione dell’esempio che sto per mostrarvi c’è la variabile $pippo all’interno dello switch!
<?php
$toons = 3;
switch($toons)
{
case 1:
$disney = “pippo, pluto, paperino”;
break;
case 2:
$warner_bros = “daffy duck, gatto silvestro, titti, w. coyote”;
break;
case 3:
$pixar = “toy story, nemo, etc..”
break;
default:
$other = “altri cartoni”;
}
print “Che cartone animato ho scelto?”
?>
L’interprete di PHP studia innanzitutto l’espressione nello switch in questo caso la variabile $toons, quindi controlla quella variabile e se c’è un case uguale a tale valore. Se non trova il valore che sta cercando, opta per l’ultimo caso ovvero il DEFAULT. Nel nostro caso l’output sarà case3 quindi la pixar. Fate molta attenzione ai break nei casi, queste dichiarazioni terminano ogni caso, l’inserimento di questi break non sono obbligatori ma in loro assenza quando esiste un caso corretto verrebbero eseguiti comunque gli altri casi! Il caso default neanche è obbligatorio perché se viene omesso lo script esce dall’esecuzione.
Lezione aggiuntiva: OPERATORE TERNARIO IN PHP
L’operatore ternario è molto simile all’if-else ma con un “vantaggio” in più che può essere inserito su una linea, quindi risparmiare spazio e linee di codice! L’operatore ternario valuta le sue espressioni tramite valori booleani. La sua sintassi è: condizione ? test_vero : test_falso dove test_vero e test_falso mostrano un output come valori FALSE e TRUE. Un esempio banale è riportato qui sotto:
<?php
$a = 3;
$b = 4;
$a <= b ? print “Ciao” : print “Addio.”
?>
February 4th, 2013 — PHP/MySQL
Una variabile è come un grande contenitore, la sua funzione è appunto quella di memorizzare valori alfanumerici con: un tipo, un nome e un ambito. Tutte le variabili sono dichiarate e assegnate con questa sintassi: $nome_variabile = valore;. Come sempre notiamo che l’istruzione ha bisogno del punto e virgola perché altrimenti non accetterà istruzioni future. Le variabili nel PHP sono case-sensitive ovvero che A1 e a1 sono due variabili distinte. Il tipo di una variabile sta a significare che i valori che possono essere assegnati a tale variabile sono: interi, con virgola mobile, char(caratteri). Ma la bellezza del PHP sta proprio in questo, una variabile non ha bisogno di avere una dichiarazione di che tipo è, visto che PHP associa le variabili in un singolo contenitore codificandole tutte di un solo tipo. Vediamo un esempio di dichiarazione di variabile in C e in PHP:
In C:
#include<stdio.h>
int main()
{
int x = 32; /* comunica al compilatore che la x è intera */
printf(“%d”, x); /* stampa il valore contenuto nella variabile x */
return 0;
}
Come vediamo in C la variabile x è stata prima definita come intera e poi le è stato assegnato il valore 32! In PHP viceversa, usiamo questa metodica:
In PHP:
<?php
$var1 = 124; // numero intero
$var2 = 34,23; // variabile con virgola mobile
$result = $var1 + $var2; // somma la variabile a alla variabile b
echo $result;
?>
Come ben notiamo invece, nel PHP usiamo solamente il nome della variabile e il numero che le assegnamo, però in PHP possiamo anche assegnare un carattere o una stringa di lettere oltre ai numeri, come? Beh semplicemente inserendo delle virgolette, vediamo nell’esempio qui sotto:
<?php
$var_1 = 12; // variabile intera
$var_2 = 12,3; // variabile a virgola mobile
$txt = “Sono ghiro”; // variabile stringa
?>
Come vediamo le differenze di dichiarazione variabile sono minime, a eccezione della variabile $txt che inserisce le virgolette. Voglio però far presente che variabili con valore numerico posso essere utilizzate nelle comuni operazioni matematiche, mentre le variabili stringa hanno solamente un operatore, ovvero quello di concatenamento(.), come nell’esempio qui riportato:
<?php
$txt_1 = “Ciao ”;
$txt_2 = “Ghiro”;
echo $txt_1.$txt_2;
?>
Vediamo appunto che il risultato che si otterrà da questa operazione sarà: Ciao Ghiro. Inoltre una opzione del PHP molto comoda è la gestione degli errori (come dicevo nell’introduzione al PHP, questa opzione risiede nel file php.ini). Infatti se nel file php.ini si abilita la voce error_reporting e si modifica da ciò che troviamo attualmente a E_ALL si avrà il responso di tutti gli errori che avvengono nei nostri script e inoltre se si abilita anche la voce display _errors mediante la riga display_errors = OFF (naturalmente dobbiamo settarla a ON) per visualizzare sullo schermo l’output per gli errori. Questi due parametri sono molto importanti nello sviluppo in PHP perché ci presentano gli errori che avvengono di nascosto, naturalmente una volta finito il lavoro rimettiamo tutto ad OFF poiché un possibile web hacker, potrebbe usare queste informazioni come vulnerabilità per l’attacco al nostro sito. Ma la gestione degli errori la vedremo più approfonditamente nei capitoli di debug e gestione degli errori! Ritornando sul concetto delle variabili una funzione che il PHP possiede è IsSet e l’istruzione unset. La funzione IsSet determina se la variabile $var1 è impostata con un proprio valore numerico oppure se non le è stato mai assegnato alcun valore. IsSet comunica tramite valore logico TRUE(1) che la variabile ha già ricevuto precedentemente un’assegnazione mentre con valore logico FALSE(0) che non è mai stata usata. Mentre l’istruzione unset ha il compito di riportare la variabile ad uno stato NON assegnato. Vediamo adesso un suo utilizzo:
<?php
$var1 = 10;
$var2 = 23;
$result = $var1 + $var2;
echo $result;
/* Ora utilizziamo l'istruzione IsSet per verificare se la variabile $result è settata */
echo “La variabile result è settata?<br />” /* Se l'output sarà 1 allora il valore è true */
echo IsSet($result);
?>
OUTPUT:
33
1
Come vediamo la somma di 10+23 da come risultato 33 mentre l’uno che vediamo in output è il risultato della nostra richiesta alla funzione IsSet. Se ora usiamo l’istruzione unset per azzerare la variabile $result, IsSet con una variabile vuota come si comporterà? Presto detto, scriviamo qui sotto un codice d’esempio e mostriamone l’output:
<?php
$var_1 = 12;
$var_2 = 25;
$result = $var_1 * $var_2;
unset($result);
echo “La variabile result è settata?<br />”;
echo IsSet($result);
?>
OUTPUT:
300
La variabile result è settata?
Come ben vediamo non abbiamo avuto alcuna risposta, ciò perché è stata settata a 0 con l’istruzione unset! E IsSet quando riceve un valore FALSE(0) non mostra alcun risultato!
February 4th, 2013 — PHP/MySQL
Come tutti sapete il linguaggio in questione è un linguaggio lato server, ciò significa che il browser chiede la pagina(nel nostro caso index.php) al server e il server gli rimanda la pagina chiesta, contenente solo codice HTML. Ma come fa l’interprete PHP a comprendere quale codice deve compilare per l’esecuzione di codice HTML per il browser(ovvero l’utente)? Beh innanzitutto, sappiamo che il PHP è un linguaggio di scripting, giusto? E allora tutti I linguaggi di scripting non hanno bisogno di essere compilati ma interpretati(come python, perl, etc…). Ma chi è che interpreta questi script allora? Semplice è il server su cui risiede l’interprete PHP. Il codice PHP agisce sul server, che come pocanzi detto rimanda l’output al browser per vedere meglio il risultato chiediamo al browser di domandare al server 192.168.1.130 di richiedere la pagina hello.php contenente questo codice:
<?php
echo “Ciao mondo!”;
?>
Quando il server riceverà la richiesta del browser, dirà: il broswer Firefox mi ha domandato se ho la pagina hello.php[ovviamente cel’ha], carico la pagina hello.php, leggo qual’è il linguaggio nello script, genero HTML e restituisco la pagina da lui richiesta. La frase “Leggo che tipo di linguaggio è” come viene eseguita dal server? Semplice, grazie ai due tag <?php e ?> il server comprende che è PHP il linguaggio, perché se I tag erano <% %> era ASP e così via per ogni script di linguaggio differente. Il PHP offre una vasta gamma di voci per la modifica e personalizzazione di come configurare il proprio server PHP attraverso un piccolo ma potente file! Il php.ini. Questo file molto spesso sui server condivisi (come Altervista) non viene creato. Perciò se vogliamo avere una configurazione del nostro server con l’opzione error_reporting = E_ALL come facciamo? Basta creare uno script, chiamato pippo.php (un nome casuale) con al suo interno questo codice:
/* questo codice mostra una pagina con tutte le informazioni della configurazione del nostro server */
<?php // apre il tag e questo è un commento a riga singola
phpinfo(); # anche questo è un commento a riga singola e l'istruzione visualizza le info di PHP
?> # Chiudo tag
Iniziamo però con l’analizzare più approfonditamente il codice di questi script. Qui vi sono molte informazioni elementari ma utili del PHP, incominciamo dal primo: /* commento */, questo commento lo incontriamo anche in C e Java! Linguaggi da cui PHP ha preso spunto per i commenti, mentre // commento è un commento a riga singola usato in C++ come vediamo in Python invece questo è proprio un # commento in Python. I commenti non vengono interpretati da PHP ma sono utilissimi per ricordare qual’è lo scopo di un’istruzione. Il comando phpinfo(); è innanzitutto una istruzione e come in C e in altri linguaggi ogni istruzione necessita di un ‘;’ per terminare e successivamente iniziarne una nuova. Per il resto phpinfo() visualizza che versione del PHP utilizza il server, quale opzioni sono attive e quali no e altre… Se vediamo il codice sorgente di questa pagina pippo.php è solamente codice HTML, ciò perché l’interprete PHP converte il linguaggio in HTML. Vediamo in oltre che nel precedente script hello.php il risultato ottenuto è solamente Ciao mondo, come mai? Perché l’istruzione echo serve per stampare a video stringhe di codice o variabili o altro.Come tutti sapete il linguaggio in questione è un linguaggio lato server, ciò significa che il browser chiede la pagina(nel nostro caso index.php) al server e il server gli rimanda la pagina chiesta, contenente solo codice HTML. Ma come fa l’interprete PHP a comprendere quale codice deve compilare per l’esecuzione di codice HTML per il browser(ovvero l’utente)? Beh innanzitutto, sappiamo che il PHP è un linguaggio di scripting, giusto? E allora tutti I linguaggi di scripting non hanno bisogno di essere compilati ma interpretati(come python, perl, etc…). Ma chi è che interpreta questi script allora? Semplice è il server su cui risiede l’interprete PHP. Il codice PHP agisce sul server, che come pocanzi detto rimanda l’output al browser per vedere meglio il risultato chiediamo al browser di domandare al server 192.168.1.130 di richiedere la pagina hello.php contenente questo codice:
<?php
echo “Ciao mondo!”;
?>
Quando il server riceverà la richiesta del browser, dirà: il broswer Firefox mi ha domandato se ho la pagina hello.php[ovviamente cel’ha], carico la pagina hello.php, leggo qual’è il linguaggio nello script, genero HTML e restituisco la pagina da lui richiesta. La frase “Leggo che tipo di linguaggio è” come viene eseguita dal server? Semplice, grazie ai due tag <?php e ?> il server comprende che è PHP il linguaggio, perché se I tag erano <% %> era ASP e così via per ogni script di linguaggio differente. Il PHP offre una vasta gamma di voci per la modifica e personalizzazione di come configurare il proprio server PHP attraverso un piccolo ma potente file! Il php.ini. Questo file molto spesso sui server condivisi (come Altervista) non viene creato. Perciò se vogliamo avere una configurazione del nostro server con l’opzione error_reporting = E_ALL come facciamo? Basta creare uno script, chiamato pippo.php (un nome casuale) con al suo interno questo codice:
/* questo codice mostra una pagina con tutte le informazioni della configurazione del nostro server */
<?php // apre il tag e questo è un commento a riga singola
phpinfo(); # anche questo è un commento a riga singola e l'istruzione visualizza le info di PHP
?> # Chiudo tag
Iniziamo però con l’analizzare più approfonditamente il codice di questi script. Qui vi sono molte informazioni elementari ma utili del PHP, incominciamo dal primo: /* commento */, questo commento lo incontriamo anche in C e Java! Linguaggi da cui PHP ha preso spunto per i commenti, mentre // commento è un commento a riga singola usato in C++ come vediamo in Python invece questo è proprio un # commento in Python. I commenti non vengono interpretati da PHP ma sono utilissimi per ricordare qual’è lo scopo di un’istruzione. Il comando phpinfo(); è innanzitutto una istruzione e come in C e in altri linguaggi ogni istruzione necessita di un ‘;’ per terminare e successivamente iniziarne una nuova. Per il resto phpinfo() visualizza che versione del PHP utilizza il server, quale opzioni sono attive e quali no e altre… Se vediamo il codice sorgente di questa pagina pippo.php è solamente codice HTML, ciò perché l’interprete PHP converte il linguaggio in HTML. Vediamo in oltre che nel precedente script hello.php il risultato ottenuto è solamente Ciao mondo, come mai? Perché l’istruzione echo serve per stampare a video stringhe di codice o variabili o altro.