laboratorio5

L'esercitazione ha come obiettivo quello di permettere allo studente di acquisire familiarità con il linguaggio PHP. L'esercitazione nel suo complesso richiede più tempo di quello a disposizione. 

Si presuppone la conoscenza della parte teorica discussa a lezione. Si consiglia di leggere tutto il testo prima di iniziare lo svolgimento. Dubbi su MySQL e sul linguaggio php possono essere risolti riferendosi rispettivamente alla MySQL Reference Guide e al PHP Manual.


Operazioni e informazioni preliminari

  • Accedere con il proprio nome utente e password al proprio account nel sistema operativo Linux
  • Il server web è ospitato nella stessa macchina del server MySQL, ovvero basidati. A questo potete connettervi con il vostro login e password su studenti.
  • Sul server basidati, nella vostra home, avete a disposizione uno spazio web basi-dati/public_html, che è poi visibile all'indirizzo
    http://basidati/basi-dati/~login
    dove login va sostituito dal vostro login.

    Se ad esempio create un file prova.php che contiene solo

        <html>
    <head><title>Basi di dati</title></head>

    <body>
    <?php echo "Buongiorno!" ?>
    </body>
    </html>

    nella directory public_html su basidati (oppure lo create in remoto e lo copiate con scp prova.php basidati:basidati/public_html/. oppure usate fish - vedere ad es. KIO) potete accedervi tramite un browser all'indirizzo http://basidati/basi-dati/~login/prova.php.

Quesiti

1) Stampare la seguente stringa:

"Tizio, Caio e Sempronio"

Poi create due variabili una per la parola "Tizio" e l'altra per la parola "Sempronio". Stampare la stessa stringa utilizzando le variabili.
Cambiare il valore delle variabili a piacere e fare una terza stampa. Ricordarsi di fare apparire i diversi risultati su righe diverse.

2) Creare le seguenti variabili
 
$x=10;
$y=7;
 
Scrivere il codice in modo tale che venga stampato quanto segue, utilizzando solo i valori delle variabili sopra e una terza variabile. 
 
10 + 7 = 17
10 - 7 = 3
10 * 7 = 70
10 / 7 = 1.4285714285714
10 % 7 = 3

3) Utilizzando gli operatori di assegnamento aritmetico (e.g. +=, *=...) 
e un'unica variabile scrivere uno script che produca il seguente output.
 
Valore corrente: 8.
Sommo 2. Valore corrente: 10.
Sottraggo 4. Valore corrente: 6.
Moltiplico per 5. Valore corrente: 30.
Divido per 3. Valore corrente: 10.
Incremento di uno. Valore corrente: 11.
Decremento di uno. Valore corrente: 10.
 
 
4) Utilizzando la variabile $a="around", le virgolette singole e l'operatore 
di concatenazione stampare il seguente output.
 
What goes around, comes around. 
 
 
5) Creare una variabile e eseguire diversi assegnamenti in modo tale che 
l'output coincida con quello indicato sotto.
 
Il comando di stampa potra' solo contenere le parole "Il valore e' di tipo".
Utilizzare la funzione gettype per ritornare il tipo di una variabile. 
 
Il valore e' di tipo string.
Il valore e' di tipo double.
Il valore e' di tipo boolean.
Il valore e' di tipo integer.
Il valore e' di tipo NULL.
 
6) Scrivere uno script che estrae il mese corrente e stampa uno dei seguenti statement a seconda che sia Agosto oppure no.
 
E' Agosto, fa molto caldo.
Non e' Agosto, quindi non siamo ancora al picco di caldo.
 
Suggerimento: Per estrarre il mese corrente utilizzare la funzione 
'date('F', time())'.
 
7) Scivere uno script che genera il seguente output:
 
abc abc abc abc abc abc abc abc abc
 
xyz xyz xyz xyz xyz xyz xyz xyz xyz
 
1 2 3 4 5 6 7 8 9
 
   1. Item A
   2. Item B
   3. Item C
   4. Item D
   5. Item E
   6. Item F
 
In particolare creare la riga degli 'abc' con un while, la riga degli 'xyz' con un do-while e le ultime due parti con for. Non utilizzare arrays.
 
8) Utilizzando un loop, creare una lista di equazioni corrispondenti ai quadrati per i numeri da 1 a 12. Ogni equazione sara' del tipo "1 * 1 = 1", 
Assicurarsi che ogni formula sia in una riga separata.
 
9) Utilzzando due cicli for innestati, creare la seguente tabella delle 
moltiplicazioni (non occorre che sia di colore giallo). 
 

1 2 3 4 5 6 7
2 4 6 8 10 12 14
3 6 9 12 15 18 21
4 8 12 16 20 24 28
5 10 15 20 25 30 35
6 12 18 24 30 36 42
7 14 21 28 35 42 49



10) Definire una variabile di tipo array contenente le condizioni metereologiche con i seguenti valori: pioggia, sole, nuvoloso, grandine, nebbia e neve. Utilizzando questa variabile produrre il seguente output.
 
In questo mese si sono verificate le piu' disparate condizioni metereologiche.
All'inizio del mese abbiamo avuto grandine e vento. Poi c'e' stato sole, alternato a tempo nuvoloso e a qualche giorno di pioggia. Per fortuna non ci sono state ne' neve ne' nebbia.
 
11) Create un array con i seguenti valori: Tokyo, Mexico City, New York City, Mumbai, Seoul, Shanghai, Lagos, Buenos Aires, Cairo, Londra. (Sono alcune tra le piu' grandi citta' del mondo).
Stampate questi valori separati da una virgola utilizzando un ciclo.
Ordinate l'array, e stampate i valori in una lista utilizzando un ciclo.
Aggiungete le seguenti citta': Los Angeles, Calcutta, Osaka, Pechino. 
Ordinate l'array, e stampate nuovamente i valori in una lista utilizzando un ciclo.
 
12) Creare due file separati. Il primo conterra' una form con un campo dove l'utente inserisce la sua citta' preferita. Utilizzare il metodo "post" per il passagio dei parametri.
Anche se non contiene codice php, dare comunque estensione .php al file in modo che possa chiamare il secondo file con successo.
 Il secondo file conterra' le istruzioni da eseguire per elaborare la risposta dell'utente. In particolare, dopo che l'utente ha clickato "submit", dovra' essere stampato il seguente output:
 
La tua citta' preferita e' [nome_della_citta_inserita] 
 
Suggerimento, utilizzare la variabile array $_POST['name'] dove 'name' e' il nome del campo di input, per contenere l'input dall'utente.
 
13) Riottenere il risultato dell'esercizio precedente utilizzando un unico file e il costrutto if-then-else.
Per capire se la form e' stata sottomessa utilizzare isset().
 
14) Creare una form dove l'utente puo' inserire informazioni riguardanti il tempo in mese di  sua scelta. In particolare, richiedere in campi separati la citta' il mese e l'anno.
Sotto mostrare una serie di checkboxes corrispondenti alle 
condizioni meteo dell'esercizio N. 10. Fare in modo che la form crei un array con gli elementi selezionati. 
 In risposta, creare un array utilizzando la citta', il mese e l'anno indicati.
Stampare il seguente output:

In $citta' nel mese di $mese $anno, hai osservato le seguenti condizioni metereologiche:
-lista puntata delle condizioni selezionate.
 
15) Creare un array contente mezzi di trasporto quali: automobile, aereo, nave e metro. 
Stampare il seguente output.
 
Tra i diversi mezzi di trasporto vi sono i seguenti:
-lista ottenuta iterando sull'array creato.  
 
Poi fornire all'utente una text box e chiedere all'utente di aggiungere altri mezzi di trasporto separati da una virgola. Quando verra' clickato GO, fare in modo che venga spedito l'array con le eventuali aggiunte. Inlcudere inoltre un'altra  text box con il testo "Altre aggiunte?" e un altro bottone "Sumbit". Quando l'utente clicka su questo bottone la pagina si deve ricaricare con le nuove aggiunte. Il codice deve permettere all'utente di fare aggiunte a piacere.
 
16) Considerare la seguente lista, dove, oltre alle citta' sono indicati anche i rispettivi paesi.
 
Tokyo, Japan; Mexico City, Mexico; New York City, USA; Mumbai, India; Seoul, Korea; Shanghai, China; Lagos, Nigeria; Buenos Aires, Argentina; Cairo, Egypt; London, England.
 
Create un array associativo utilizzando i paesi come chiavi e le citta' 
come valori.  Creare una form in cui viene richiesto all'utente di selezionare una citta' da un menu' a tendina con le 10 citta'.
Quando l'utente clicka su Submit, ritornare lo statement: 
$citta' si trova in $paese.
 
17) Creare una funzione con due argomenti (base e altezza) 
che calcola l'aerea di un rettangolo e ritorna il seguente output:
 Un rettangolo con base $base e altezza $altezza ha un'area pari a $area.
 
18) Riscrivere la funzione precedente in modo tale che accetti la base e l'altezza in input dall'utente. 
Usare una form con due text boxes.