HTML
<!doctype html > dichiarazione che comunica al browser il tipo di documento che dovrà
interpretare, in modo che possa farlo correttamente
per fare commenti in html, racchiudere ciò che si vuole tra <!— commento —>
attributi: elementi interni ai tag, che ne specificano le informazioni o configurazioni, dopo
essere stati aperti vanno chiusi
tag cosa fa attributI che si spiegazione esempio
possono attributi
applicare
< html> tag che
</html> racchiude
l’intero
contenuto della
pagina web
<meta> tag che charset, name, charset: attributo <meta
contiene content che definisce tra charset=”UTF-8”>
soltanto doppi apici il set
metadati, dati di caratteri da <meta
relativi alla usare per la name=”viewport”
pagina web, pagina web, es: content=”width=de
che non UTF-8 è una vice=width,
appariranno codifica che usa initial-scale=1.0”>
nella pagina gruppi di byte
stessa, ma per
sono importanti rappresentare i
per trasmettere caratteri unicode
informazioni al
browser, ai
motori di ricerca
e ad altri servizi
del web.
"viewport"
fornisce al
browser
istruzioni su
come controllare
le dimensioni
della pagina e la
scala iniziale.
width=device-wi
dth: Imposta la
larghezza del
viewport (la
"finestra"
attraverso la
quale il tuo sito
web è
visualizzato)
sulla larghezza
effettiva del
dispositivo.
initial-scale=1.0:
Imposta il livello
di zoom iniziale
quando il sito
viene caricato
per la prima
volta. Un valore
di 1.0 indica
nessun
ingrandimento o
rimpicciolimento
iniziale.
Questi parametri
sono
fondamentali per
garantire che il
tuo sito web sia
visualizzato
correttamente su
una vasta
gamma di
dispositivi,
adattando la
larghezza del
contenuto alla
larghezza
effettiva dello
schermo del
dispositivo e
impostando una
scala iniziale
appropriata. In
sintesi, questi
tag
contribuiscono a
migliorare
l'esperienza
dell'utente su
dispositivi con
schermi di
diverse
dimensioni,
supportando
così il design
responsivo del
tuo sito.
<head> tag che
</head> contiene
metadati, ossia
informazioni
relative alla
pagina web,
come ad
esempio il titolo
della linguetta
che si legge
quando si apre
la pagina web
<title> </title> tag che
racchiude il
titolo che si
legge sulla
linguetta che si
vede quando si
apre la pagina
web
<style> tag in cui
</style> inserire le css
da applicare
alla pagina web
<script> tag che viene type="text/java
</script> utilizzato per script"
incorporare o funzioni
referenziare variabili
codice id
JavaScript
all'interno di tutte queste
una pagina web cose possono
essere scritte
anche:
- in head
- in body
- in un file
esterno con
estensione .js
che va incluso
negli attributi,
ad esempio:
type="text/java
script
src="percorso
file.js""
<button> tag che type, tutti gli type: attributo <button
</button> definisce un eventi che specifica il type=”button” >
pulsante tipo di bottone scritta che appare
sensibile al clic su cui premere
del mouse </button>
<body> tag entro il leftmargin, leftmargin: <body>
</body> quale sono text, attributo che leftmargin=”185”
scritti tutti gli background, imposta il text=”black”
elementi che bgcolor, margine sinistro background=”imma
definiscono il onload del contenuto gine.img”
contenuto all'interno del bgcolor=”pink”
effettivo, visibile corpo della onload=”funzione()
della pagina pagina, in base ”>
al numero scritto
dopo l’uguale, scrivo tuttecos
che indica il
numero di pixel </body>
da cui il margine
deve essere
costituito
text: attributo
che imposta il
colore delle
scritte
background:
attributo che
consente di
impostare
un’immagine
come sfondo
bgcolor: attributo
che imposta il
colore dello
sfondo
onload:attributo
che fa eseguire
la funzione
specificata in
script quando si
verifica il
caricamento
completo del tag
body della
pagina
<H1,2,3,4,5, tag che imposta
6> la formattazione
</H1,2,3,4,5, dell’intestazione
6> delle pagine
web, che
possono avere
6 dimensioni,
ordinate in
ordine
decrescente da
1a6
<p> </p> tag che align, class, align: attributo <p align=“center”
definisce un eventi, id che allinea in </p>
paragrafo, ossia una certa
un blocco di posizione un
testo standard elemento,
paragrafi,
immagini,
tabelle, ecc della
pagina web
<div> </div> tag che crea class
una divisione in
sezioni il body
della pagina,
ciascuna delle
quali funge da
contenitore per
le altre pagine
<font> tag che align, face, face: attributo <font
</font> specifica la size, color che definisce il align=“center”
formattazione carattere da face=“verdana”
del testo, quindi usare nel testo size=“4”
ne descrive color=“black”>
colore, size: attributo
grandezza ecc definisce la
del carattere grandezza del
carattere del
testo
color: attributo
che definisce il
colore del tag
<tt> </tt> tag che
permette di
scrivere in
mono
spaziatura
<br> tag che
definisce
l’interruzione di
una riga, non ha
tag di chiusura
e consente di
andare a capo
<b> </b> tag che scrive in
grassetto la
frase che
racchiude
<i> </i> tag che scrive in
corsivo la frase
che racchiude
<mark> tag che
</mark> evidenzia ciò
che il testo che
racchiude
<pre> </pre> tag che
visualizza il
testo nella
pagina web
esattamente
come è scritto
nel codice,
mantenendo gli
stessi a capo e
spazi bianchi
<u> </u> tag che scrive in
sottolineato la
frase che
racchiude
<s> </s> tag che scrive in
barrato la frase
che racchiude
<small> tag che scrive in
</small> piccolo la frase
che racchiude
<sup> tag che scrive in
</sup> alto la frase che
racchiude
<sub> tag che scrive in
</sub> basso la frase
che racchiude
<em> </em> tag enfatizza la
frase che
racchiude
<hr> tag che width, color width:attributo <hr width=“50%”
permette di che definisce lo color=“black”>
inserire una spessore della
linea orizzontale linea inserita
all’interno della nella pagina o la
pagina web larghezza di
un’immagine,
riducendo o
aumentando le
sue dimensioni
rispetto alle
dimensioni
originali
<a> </a> tag che rende href, target href: contiene il <a>
possibile percorso del link href=“https://chat.o
l’ipertestualità, penai.com/c/157a5
collegamenti o target: b0a-4648-4bb2-b6
link tra le stabilisce se il 4b-fa8ac1e4aec5”
risorse web, link viene aperto target=“_blank/_sel
quindi tra una nella stessa f” Premere su
pagina web e pagina della questo link per
un’altra pagina web vedere un gatto
originale (_self) </a>
o in un’altra
pagina (_blank)
<img> tag che src, width, src: attributo che <img
consente di height, indica il percorso src=“nome_immagi
inserire usemap de file ne.img” width=“75”
un’immagine (abbreviazione height=“75”
all’interno della di “source”, usemap=“#mappa”
pagina web origine) >
width: attributo
che definisce la
larghezza di
un’immagine,
riducendo o
aumentando le
sue dimensioni
rispetto alle
dimensioni
originali
height:attributo
che definisce la
larghezza di
un’immagine,
riducendo o
aumentando le
sue dimensioni
rispetto alle
dimensioni
originali
usemap:
attributo che
consente di
identificare
l’immagine
acquisita come
mappa
<header> tag che <header>
</header> racchiude i <h1> Pen
titoli/sottotitoli Pineapple Apple
della pagina Pen</h1>
web
<h3> un video che
<section> tag generico ha fatto la storia
</section> che definisce </h3>
una sezione di
documento, che </header>
contiene al suo
interno altri tag, <section>
ovvero article e <nav>
nav <ul>
<li>
<nav> tag che simula <a href=”#”>
</nav> un menù di Penna
navigazione </a>
</li>
<article> tag che
</article> racchiude il <li>
contenuto <a href=”#”>
principale di Mela
una pagina web </a>
</li>
<footer> tag che
</footer> contiene il testo
</ul>
a piè di pagina
</nav>
<article>
facciamo finta che
abbia scritto
davvero un articolo
</article>
</section>
<footer>
<p>
disclaimer: tutto ciò
che state leggendo
è frutto della mia
interpretazione,
non affidatevi
troppo a una come
me
</p>
</fotter>
<ol> </ol> tag che type, start type: attributo <ol type=“i”
definisce un che stabilisce start=“10”>
elenco puntato l’indice della lista <li> ananas</li>
secondo un ordinata, <li> mela </li>
indice ordinato, a=lettera, <li> penna </li>
come un i=numero </ol>
numero romano
normale, 1=numero di
romano o una partenza
lettera
start=indice di
partenza
<ul> </ul> tag che <ul>
definisce un <li> ananas</li>
elenco puntato <li> mela </li>
secondo un <li> penna </li>
indice non </ul>
ordinato, come
un pallino
<li> </li> tag che
contiene ogni
punto
dell’elenco
puntato
<dl> </dl> tag che
contiene una
<dl>
<dt> ananas 🍍 </dt>
lista descrittiva
🍎🍏
<dd> frutto giallo </dt>
<dt> mela </dt>
🖊️
<dt> </dt> tag che <dd> frutto rosso o verde</dt>
contiene i <dt> penna </dt>
termini da <dd> utensile per scrivere </dd>
definire della </dl>
lista
<dd> </dd> tag che
contiene le
definizioni dei
termini da
definire di una
lista descrittiva
<table> tag che border, border: attributo
</table> contiene l’intera cellpadding, che definisce lo <table
tabella cellspacing spessore del cellspadding=5,
align, bgcolor, bordo della cellspacing=3,
width, height tabella align=“center”,
bgcolor=“#FF0000”
cellpadding: , width=“75%”,
attributo che height=“75%”>
specifica la
spaziatura <caption> Frutti
interna delle tutti </caption>
celle all’interno <tr>
di una tabella <th> MELA </th>
<th> ANANAS
cellspacing: </th>
attributo che <th> PENNA </th>
specifica la </tr>
spaziatura tra le <!— riga di
celle di una intestazione —>
tabella <tr>
<td> frutto rosso
<tr> </tr> tag che </td>
identifica ogni <td colspan="2">
riga della frutto giallo </td>
tabella <td rowspan="2">
utensile per
<caption> tag che scrivere </td>
</caption> identifica la riga </tr>
di intestazione
della tabella
<th> </th> tag che
identifica le
intestazioni,
come ad
esempio, la
prima cella di
ogni colonna
<td> </td> tag che colspan colspan:
identifica ogni attributo che
cella cella rowspan indica quanti
contenente dei riquadri
dati nella tabella orizzontali della
(rowspan=+di tabella una
una determinata
riga)(colspan=+ cella dovrebbe
di una colonna) occupare
rowspan:
attributo che
indica quanti
riquadri verticali
della tabella una
determinata
cella dovrebbe
occupa
<img> tag che src, width, <img
consente di height, src=“nome_immagi
inserire usemap ne.estensione”
un’immagine width=“75”
all’interno della height=“75”
pagina web usemap=“#mappa”
>
<map> tag che name name: attributo <map>
</map> consente di che identifica name=“mappa”
suddividere l’immagine che </map>
un’immagine in si intende
più parti e di suddividere in
assegnare ad più aree attive
ogni parte un
link differente
<area> tag che shape, coords, shape: attributo <area>
</area> definisce l’area href che identifica la shape=“rect”
a cui si vuole forma della coords=“0,0,100,10
collegare un link mappa a cui 0”, href=“link”
associare il link </area>
considerato
<area>
coords: attributo shape=“circle”
che identifica le coords=“1,1,5”,
coordinate href=“link” </area>
precise in cui è
racchiusa l’area <area>
a cui si vuole shape=“poly”
collegare un link coords=“1,2,3,4”,
se è un href=“link” </area>
rettangolo,
quadrato,
bisogna inserire
le coordinate di
2 vertici opposti,
quello in alto a
sinistra e quello
in basso a
destra
<svg> </svg> tag che width, height RETTANGOLO
consente di <svg width=“70”
disegnare height=“75” >
percorsi,
riquadri, cerchi, <a> href=“link”
testo e target=“_blank/_sel
immagini f”</a>
grafiche e di
collegarle a dei <rect x=“5” y=“10”
link esterni. width=“70”
Vantaggi: il height=“75”
browser stroke=“red”
ricalcola, stroke-width=“5”
ricostruisce la fill=“green” >
figura in base
allo schermo <text> fill=white
che si vuole font-size=“40”
utilizzare. SI ha font-family=“verdan
quindi una a” x=45 y=50 CIAO
figura sempre </text>
ben definita </svg>
CERCHIO
<svg width=“70”
height=“75” >
<a href=“link”
target=“_blank/_sel
f”>
<circle cx=“100”
cy=“50” r=“40”
stroke=“red”
stroke-width=“5”
fill=“green” >
<text> fill=white
font-size=“40”
font-family=“verdan
a” x=45 y=50 CIAO
</text>
</a>
</svg>
ANIMAZIONE
<style>
rect {width: 100 px;
height:100 px;
background:red;
transition
duration:5s;}
rect: hover {width:
300 px;}
<style>
…
<svg width=“400”
height=“400” >
<rect x=“50” y=“20”
fill=“green”/ >
</svg>
<video> tag che width, height, controls: fa <video
</video> consente di controls, apparire i width=”450”, “360”
gestire un autoplay tradizionali controls>
filmato (facoltativo) elementi di
muted gestione del <source
(facoltativo) video src=”qual.webm”
(avvio/arresto, type=”cosa.webm/
scorrimento, ogg/mp4” >
volume e
dimensione) </video>
autoplay: fa
partire
automaticament
e il video inserito
muted: disattiva
automaticament
e l’audio del
video inserito
<audio> tag che <audio>
</audio> consente di
gestire un file <source
audio src=”qual.webm”
type=”cosa.mpeg/
wav/ogg” >
</audio>
<source> tag che effettua src, type <source
il collegamento src=”qual.webm”
al file del video type=”cosa.webm/
ogg/mp4” >
<form> tag che style <!DOCTYPE html>
</form> contiene l’intero type="text/css"> <html>
modulo fieldset{display: <head>
inline-block;} <meta
</style> charset="UTF-8">
<fieldset> tag che crea un <title>modulo
</fieldset> determina quadrato HTML</title>
l’aspetto grafico type: specifica il <style
del modulo, tipo di input type="text/css">
crea dei inserito fieldset { display:
contorni e li dall’utente., che inline-block; }
distacca dal può assumere </style>
resto della valore: </head>
pagina 1)text <body>
2)password <h3>Inserisci i
<input> tag che type 3)email: Campo tuoi dati</h3>
consente di fare name di testo per <form>
un inserimento autofocus l'inserimento di <fieldset>
value un indirizzo <p>nome</p>
placeholder email. <input
required type="text"
4)radio:
id (Pulsante di name="nome"
opzione per le autofocus>
<select> tag che mostra name opzioni di
</select> un menù a value selezione <p>nazione</p>
tendina singola in un <select
gruppo.) name="nazione">
<option> tag all’interno 5)submit:Pulsant <option
</option> del quale si e di invio per value="Italia">Italia
racchiudono le inviare i dati del </option>
opzioni possibili modulo al server <option
del menù a 6)reset: Pulsante value="Svizzera">
tendina per ripristinare i Svizzera</option>
valori del modulo <option
ai loro valori value="altro">altro
<legend> tag che al posto name </option>
predefiniti.
</legend> del riquadro fa </select>
7)file: Per il
una cornice <p>anno di
caricamento di
grafica nascita</p>
file tramite un
modulo. <input
<textarea> tag che rows(righe),
8) number: type="text"
</textarea> permette di cols(colonne)
Campo di testo name="anno"
creare nel
per l'inserimento placeholder="AAA
modulo una
di numeri. A">
casella di testo
html </fieldset>
(ad esempio in
9) date: Per <br><br>
cui l’utente può
<fieldset>
inserire un selezionare una
<p>e-mail</p>
commento) data <input
10)checkbox: type="email"
(Casella di name="email">
controllo per le
opzioni di <p>password</p>
<input
selezione
type="password"
multipla) name="pwd"
11)url: Campo di required>
testo per </fieldset>
l'inserimento di <br><br>
un URL. <fieldset>
name: specifica <input
il campo type="submit"
dell’input value="INVIA">
autofocus:attribu <input
to che fa sì che type="reset"
all’apertura di value="CANCELLA
una pagina il ">
cursore si trovi </fieldset>
già in quella </form>
casella così che <h3>Inserisci un
l’utente possa PIN (4 cifre)</h3>
già iniziare a <input type="text"
digitare senza id="num"
dover prima autofocus>
<br><br>
spostare il <button
cursore sulla type="button"
casella onclick="verifica()"
value: attributo >VERIFICA</butto
che permette di n>
specificare un <p
testo di default, id="feedback"></p
(poi viene >
comunque data <script>
la possibilità di function
confermare o verifica() {
cancellare il var x, y, avviso;
testo) x=
placeholder: document.getElem
attributo che entById("num").val
permette di ue.length;
specificare un y=
testo di colore document.getElem
sbiadito per il entById("num").val
modello di ue;
compilazione (il if (y.indexOf(" ")
testo sparisce >= 0)
appenal’utente y=
inizia< a document.getElem
compilare) entById("num").val
submit si usa ue;
soolo all’interno if (y.indexOf(" ")
dei moduli e e >= 0) {
serve solo per avviso =
l’invio dei dati al "Attenzione:
server rimuovi gli spazi
reset genera un bianchi!";
pulsante che ha } else if (x != 4)
la funzione di {
cancellare tutto avviso =
ciò che è stato "Attenzione: il PIN
inserito nei deve essere di 4
campi del cifre";
modulo per } else if
ricominciare la (isNaN(y)) {
compilazione, avviso =
required: "Input non valido:
attributo che deve essere
rende numerico";
obbligatoria la } else {
compilazione del avviso = "OK,
campo se si l'input è valido";
prova a inviare i }
dati lasciando
vuota una document.getElem
casella entById("feedback"
).innerHTML =
avviso;
}
</script>
<br><br>
<fieldset>
<legend> Paese
d’origine </legend>
<select
name="nazione">
<option
value="Italia">Italia
</option>
<option
value="Svizzera">
Svizzera</option>
<option
value="altro">altro
</option>
</select>
</fieldset>
<fieldset>
<legend>
Confermo di
essere
maggiorenne
</legend>
<input
type="radio"
name="anni"
value="mag">si<br
>
<input
type="radio"
name="anni"
value="min">no<br
>
</fieldset>
<fieldset>
<legend> Lascia
un commento:
</legend>
<textarea></textar
ea>
<input
type="radio"
name="anni"
value="mag">si<br
>
<input
type="radio"
name="anni"
value="min">no<br
>
</fieldset>
</body>
</html>
colori in html
codifica cosa fa sintassi
nome del colore in inglese applica all’elemento in cui è color=“white”
posto l’attributo il colore
scritto
codice rgb applica all’elemento in cui è color=rgb(0,146,98)
posto l’attributo un colore tra
i 256^3 possibili nella scala
cromatica, in base alla
quantità di rosso, verde e
blu, stabilità rispettivamente
dai 3 numeri tra parentesi,
che sono compresi tra 0 e
255
codice esadecimali applica all'elemento in cui è color=#FF0000
posto l’attributo un colore
descritto dai 6 cifre
esadecimali, da 00 a FF,
ogni 2 cifre corrispondono
ad uno dei 3 valori del
codice rgb
CSS: linguaggio dei fogli di stile che permette di trasformare l’aspetto visivo delle pagina
web, curandone l’estetica
pseudoclasse: consente di settare un tag in relazione al suo stato, nella pseudoclasse ci
sono due punto e non uno come nelle classi
per differenziare un link già visitato da uno da visitare, colorare il link, inserire nell’head il tag
style interviene sul colore del link,
CSS (che straminch!ia stiamo facendo? ovviamente)
<style> <body>
sfondo-1:hover { <div class=“sfondo-1”>
background-color: red; </div>
} <div class=“sfondo-2”>
.sfondo-2:hover { </div>
background-color: orange; <div class=“sfondo-3”>
} </div>
.sfondo-3:hover { <div class=“sfondo-4”>
background-color:yellow </div>
} <div class=“sfondo-5”>
.sfondo-3:hover { </div>
background-color:green <div class=“sfondo-6”>
} </div>
.sfondo-5:hover { <div class=“sfondo-7”>
background-color:blue </div>
} </body>
.sfondo-6:hover { l’”*” indica che la regola scritta tra {} va
background-color:purple applicata a tutte le parti del programma
} considerabili come boxe, per cui tutte le
.sfondo-7:hover { parti di programma che contengono almeno
background-color:pink un attributo tra: margin, padding, height,
} width, border
a:link{color:red} <!--link non visitato=rosso> Quello che è scritto tra {} indica che la
dimensione dei boxe Questo significa che
a:visited{color: green} <!--link l'altezza e la larghezza di un elemento
visitato=verde> includeranno il bordo e il padding, e non
a:hover{color:pink} <!--link con mouse solo il contenuto.
sopra=rosa> indica che tutto il testo contenuto in body
a:active{color:black} <!--link nel momento in sarà di tipo arial
cui è premuto=nero> i titoli saranno messi su uno riquadro verde,
a 10px di distanza dai bordi, allineati al
(link rela"stylesheet" types"text/ess" centro e bianchi
hrefa"still/responsivo.oss"> il menù dei comandi è spostato a sinistra,
infatti l’attributo float definisce la posizione
* {box-sizing: border-box;} di un elemento rispetto al suo contenitore
body {font-family: Arial;} lo spazio dal boxe è il 30% dello spazio
header {background-color: green; totale dello schermo
padding: 10px; l’altezza viene impostata a 250 px
text-align: center; il tipo di carattere viene impostato a 18px, lo
color: white;} sfondo è del colore che corrisponde a
nav {float: left; quelle cifre esadecimali e lo spazio tra le
width: 30%; scritte e le celle è 15px
height: 250px;
font-size: 18px; rimuove i punti elenco e lo spazio dai bordi
background: #cccccc; degli elementi non ordinati all’interno della
padding: 15px;} barra di navigazione
nav ul {list-style-type: none; allinea a sinistra la sezione principale della
padding: 0;} pagina, aggiunge 20px dal bordo sinistro,
imposta la larghezza della sezione al 70%,
article {float: left; imposta il colore dello sfondo e l’altezza a
padding: 20px; 200 px
width: 70%;
background-color: #f1f1f1; mette uno sfondo giallo al piè di pagina, lo
height: 200px;} allinea a sinistra, imposta la larghezza al
massimo, il padding a 10px, allinea il testo
footer {background-color: yellow; al centro e rende il testo blu
float:left;
width: 100%; stabilisce che, quando si verifica la
padding: 10px; condizione tra (), in questo caso quando la
text-align: center; larghezza della pagina è 550px, viene
color: blue;} applicata la regola posta tra {}, in questo
caso la larghezza di nav e article diventa il
@media (max-width: 550px) 100% della pagina e l’altezza è deteminata
{nav, article {width:100%; height:auto;}} automaticamente in base al contenuto
</style>
BOX MODEL tag che costituisce un modello a riquadri in
cui ogni tag contenitore è considerato come
un tag a sé stante
attributi:
width: lunghezza contenuto
height: altezza contenuto
border: spessore cornice contento
padding: spazio tra il contenuto e la sua
cornice
margin: spazio tra la cornice e gli altri box
della pagina
altezza complessiva box:
height+2*(margin+border+padding)
responsive web design: tecnica di progettazione di pagine web flessibili che si
adattino in modo automatico ai diversi schermi dei dispositivi con cui le si consulta
JAVASCRIPT: linguaggio di programmazione scripting, lato client, a eventi, orientato
agli oggetti, case sensitive
Scripting perché è un linguaggio che rimane semplice testo (script) che è interpretato ed
eseguito a runtime, senza essere compilato e trasformato in codice binario.
Lato client,perchè è eseguito dal browser dell'utente e non dal server web che ospita il sito
visitato
a eventi: basato sulle interazione che avvengono attraverso l'interfaccia grafica del browser
orientato agli oggetti: gli oggetti in JavaScript possono contenere proprietà (dati) e metodi
(funzioni) che definiscono il comportamento dell'oggetto, ma il linguaggio non comprende le
classi
case sensitive: fa distinzione tra lettere maiuscole e minuscole
GERARCHIA OGGETTO PRINCIPALE
DOM DOCUMENT
● document object model ● oggetto principale del DOM
● rappresentazione gerarchica e associato alla pagina web corrente.
strutturata di una pagina web che ● Attraverso esso è possibile
consente agli script, come quelli accedere agli elementi della pagina,
scritti in JavaScript, di accedere modificarne il contenuto, la struttura
dinamicamente e manipolare il o gli attributi e gestire eventi.
contenuto, la struttura e lo stile di ● document.getElementById(nome_id)
una pagina web. può essere utilizzato per ottenere un
● Rappresenta la pagina come un riferimento a un elemento HTML con
albero di oggetti, dove ogni nodo un determinato ID, infatti viene
dell'albero rappresenta un elemento invocato il metodo getElementById
della pagina (come tag HTML) e gli dell’oggetto document e gli viene
oggetti forniscono metodi e proprietà passato come parametro “id”, che è
per manipolare quegli elementi. il tag su cui si vuole agire
BOM: WINDOW
● browser object model oggetto chiave nel BOM che fornisce
● gerarchia di oggetti manipolabili un'interfaccia per interagire con la finestra
attraverso JavaScript che del browser e gestire vari aspetti
rappresentano l'interfaccia grafica dell'ambiente di esecuzione del JavaScript
del browser. all'interno di una pagina web
● comprende oggetti come document
e window
codice descrizione
<!doctype html> type="text/javascript" attributo che
<meta charset="UTF-8"> specificare il tipo di contenuto all'interno
<html> del tag <script>
<head> function nomefunzione: La funzione
`nomefunzione` in questo caso è utilizzata
<!--> EVENTI DEL MOUSE<-> per visualizzare un messaggio di
<script type="text/javascript"> benvenuto attraverso un popup di avviso
function nomefunzione() (`alert`)
{alert ("benvenuti nel mio sito");} alert: metodo che fa apparire nella pagina
web un riquadro contenente la scritta
specificata come argomento tra doppi apici
function funzioneMouseOver(obj) obj : oggetto su cui si è verificato l'evento.
{
obj.innerHTML = "ciaooo" obj.innerHTML: modifica il contenuto
} HTML dell'oggetto utilizzando la proprietà
function funzioneMouseOut(obj) innerHTML scrivendo "ciaooo" al posto di
{ quanto scritto nel paragrafo in cui è stata
obj.innerHTML = "tutto bene?" chiamata la funzione onmouseover
}
In generale, questo codice sembra essere
function funzioneOnClick(obj) un esempio di gestione di eventi in
{ JavaScript per cambiare dinamicamente il
obj.innerHTML = "io più o meno" contenuto di un elemento quando il mouse
} si trova sopra di esso
funzioneMouseOver: funzione che viene
function funzioneContextMenu(obj) chiamata quando si verifica l'evento
{ "onmouseover", ovvero quando il puntatore
obj.innerHTML = "anche se..." del mouse entra in un elemento
}
function funzioneDoubleclick(obj) ra in un elemento
{
obj.innerHTML = "devo dire" onmouseout:
} evento che si verifica quando il puntatore
del mouse si sposta fuori da un elemento .
function funzioneMouseDown(obj) onclick: evento si verifica quando l'utente
fa clic su un elemento HTML
{
oncontextmenu:
obj.innerHTML = "vorrei essere ovunque evento che si verifica quando l'utente fa
tranne che a fare info" clic con il pulsante destro del mouse su un
} elemento HTML per aprire il menu
contestuale
function funzioneMouseEnter(obj) ondblclick: evento che si verifica quando
{ l'utente fa doppio clic su un elemento
HTML
obj.innerHTML = "non so come fare a
onmousedown:
prendere 6" evento che si verifica quando un utente
} preme un pulsante del mouse su un
elemento HTML
function funzioneMouseLeave(obj) onmouseenter: evento si verifica quando il
{ puntatore del mouse entra in un elemento
onmouseleave: evento si verifica quando il
obj.innerHTML = "mi affido al padre
puntatore del mouse lascia un elemento
eterno anche sta volta"
}
</script>
</head>
<!--> EVENTI DEL MOUSE<->
<body onload="nomefunzione()">
<p
onmouseover="funzioneMouseOver(this)" style serve per fare un quadrato
style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center"> stato iniziale: scritta che compare nel
stato iniziale quadrato prima dell’evento
</p> this: parola chiave che indica che l’oggetto
<p onmouseout="funzioneMouseOut(this)" al cui interno la si usa
style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center">
stato iniziale
</p>
<p onclick="funzioneClick(this)"
style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center">
stato iniziale
</p>
<p
oncontextmenu="funzioneContextMenu(this)
" style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center">
stato iniziale
</p>
<p ondblclick="funzioneDblClick(this)"
style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center">
stato iniziale
</p>
<p
onmousedown="funzioneMouseDown(this)"
style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center">
stato iniziale id=attributo HTML utilizzato per
</p> assegnare un identificatore unico a un
<p elemento all'interno di un documento
onmouseenter="funzioneMouseEnter(this)"
HTML.
style="background-color:pink; width:150px;
height:20px; padding:40px; text-align:
center"> il metodo getElementById individua tramite
l’id il tag nome id (che è scritto in p) e gli
stato iniziale
assegna il testo tra “”
</p>
<p innerHTML viene quindi utilizzata per
onmouseleave="funzioneMouseLeave(this)" impostare il contenuto (innerHTML)
style="background-color:pink; width:150px; dell'elemento selezionato.
height:20px; padding:40px; text-align:
center">
stato iniziale
</p>
<!--> EVENTI CON BUTTON<-> il testo dopo l’uguale tra “” viene assegnato
<script> al paragrafo che ha come id quello tra
function nomefunzione() { parentesi e viene quindi stampato a video
alert("benvenuti nel mio sito");
} var: parola chiave per dichiarare una
variabile. La
stessa variabile può assumere valori
function funzioneMouseOver(obj) { diversi
obj.innerHTML = "ciaooo";
} x: variabile a cui viene assegnata la
larghezza della pagina misurata dalla
function funzioneMouseOut(obj) {
proprietà del BOM innerWidth
obj.innerHTML = "tutto bene?";
} y: variabile a cui viene assegnata la
lunghezza della pagina misurata dalla
function funzioneOnClick(obj) {
obj.innerHTML = "io più o meno"; proprietà del BOM innerHeight
}
z:variabile in cui viene memorizzato
l’elemento HTML ottenuto con l’ID
function funzioneContextMenu(obj) {
“dimensioni” e che rappresenta il paragrafo
obj.innerHTML = "anche se..."; su cui si vuole agire
}
typesElement: variabile uguagliata a vari
function funzioneDbliclick(obj) { valori con la proprietà innerHTML
obj.innerHTML = "devo dire";
} typeof: operatore che restituisce il tipo di
dato dei valori anche se nessuna variabile
è stata dichiarata
function funzioneMouseDown(obj) {
obj.innerHTML = "vorrei essere nome: variabile string (sequenze di
ovunque tranne che a fare info"; caratteri tra “”), inizializzato a Isa
}
numero: variabile number, numeri decimali
e non, inizializzato come 17 per l’età e
function funzioneMouseEnter(obj) {
1,65 per l’altezza
obj.innerHTML = "non so come fare
a prendere 6"; true/false: variabile boolean
}
nullValue : variabile assegnata a null,
function funzioneMouseLeave(obj) { ovvero un valore assegnabile
obj.innerHTML = "mi affido al padre intenzionalmente per indicare l'assenza di
un valore o un riferimento nullo
eterno anche sta volta";
} indefinita: variabile undefined
</script>
</head> la variabile somma viene inizializzata alla
<body onload="nomefunzione()"> somma di età+compleanno, può essere sia
<button quella aritmetica che la concatenazione di
onmouseover="funzioneMouseOver(this)" > due stringhe, perchè:
stato iniziale LE VARIABILI IN JAVASCRIPT
</button> POSSONO ASSUMERE VALORI DI TIPO
<button DIVERSI
onmouseout="funzioneMouseOut(this)" >
+:operatore usato per concatenare
stato iniziale
- variabili
</button> - funzioni
<button onclick="funzioneOnClick(this)" > - tag
stato iniziale distingue la sua funzione in base alle
</button> variabili a cui è applicato
<button
oncontextmenu="funzioneContextMenu(this) =: operatore di assegnamento, si può
comporre in +=, -=, *=, /=, %= (var1+=var2
">
è uguale a dire var1=var2+var1)
stato iniziale
</button> ai aggiunge agli operatori logici NOT(!)
<button
ondblclick="funzioneDbliclick(this)" > operatori di confronto, che controllano che
stato iniziale due dati siano uguali o diverse sia il valore
</button> che in tipo sono: === e !==
<button
TUTTI GLI ALTRI OPERATORI SONO
onmousedown="funzioneMouseDown(this)" UGUALI
style="background-color:pink; width:150px;
height:60px;">
stato iniziale
</button>
<button
onmouseenter="funzioneMouseEnter(this)">
stato iniziale
</button>
<button
onmouseleave="funzioneMouseLeave(this)>
stato iniziale
</button>
</body> numeri_angelici: stampa a video sulla
<!-->DOCUMENT<-> pagina web tutto l’array
<p id="uno"> </p>
numeri_angelici[1]; per stampare a video
<script>
un elemento preciso dell’array, si scrivono
document.getElementById("uno").innerHTM le stesse cose che servono per stampare a
L="testo inserito con javascript"; video tutto l’array,ma si indica il suo indice
</script> tra [ ]
<!-->WINDOW<->
<p id="window"></p> somma Numeri: variabili destinata a
<script> contenere la somma degli elementi
var x = window.innerWidth; dell’array,si può scrivere la somma come
var y = window.innerHeight; nel primo modo, “manualmente”, facendo
var z = la somma di tutti gli elementi associati
all’indice tra [ ] oppure con un ciclo for
document.getElementById("window");
length: metodo che restituisce il numero di
z.innerHTML = "La finestra è larga " + x + elementi presenti nell’array
" px e alta " + y + " px";
</script>
<!-->VARIABILI IMPLICITE<->
<p id="types 1"></p>
<script>
var typesElement =
document.getElementById("types 1");
typesElement.innerHTML =
typeof "Isa" + "<br>" +
typeof 17 + "<br>" + push: metodo che aumenta di uno la
typeof 165.5 + "<br>" + dimensione dell’array ed inserisce nella
typeof true + "<br>" + cella aggiunta l’elemento tra (“ ”), se si fa
typeof "Isa"; stampare a video in questo modo riporta 4,
</script> ovvero la dimensione dell’array
<!-->VARIABILI ESPLICITE<->
unshift: metodo che aggiunge un elemento
<p id="types 2"></p> allinizio dell’array
<p id="types 3"></p>
<p id="types 4"></p> sort: metodo che ordina l’array in ordine
<p id="types 5"></p> alfabetico o numerico, funziona anche con
<p id="types 6"></p> array misti
<script>
var nome = "Isabella"; shift: metodo che elimina il primo elemento
var età = 17; dell’array e restituisce l’elemento eliminato
var altezza = 160.5;
var boolean = true; pop: metodo per eliminare l’ultimo
var nullValue = null; elemento dell’array
var indefinita;
var compleanno=23112006;
document.getElementById("types
2").innerHTML = età+compleanno + "viene elenco è una variabile a cui viene
stampato come una somma perché il primo assegnato il tag ol, cioè quello che dà
elemento che compare è la somma tra le inizio ad una lista ordinata, viene
variabili numeriche che quindi vengono interpretata come stringa
interpretate come numeri"; i: variabile contatore
var somma=età+compleanno; for: ciclo iterativo per stampare a video
document.getElementById("types l’elenco
3").innerHTML = "somma tra la mia età ed il
mio compleanno: "+somma;
compleanno="23112006";
somma=età+compleanno;
document.getElementById("types
4").innerHTML = "somma tra la mia età ed il
mio compleanno: "+somma;
document.getElementById("types
5").innerHTML = "somma tra la mia età ed il
mio compleanno: "+età+compleanno+". In proprietà dell’oggetto
questo caso invece, siccome età e variabili con cui si esegue il ciclo for/in, che
compleanno non sono le prime variabili a - non ha un indice numerico
comparire vengono interpretate come - esegue in modo iterativo le
stringhe da accodare"; istruzioni tra {} ripetendole una
document.getElementById("types volta per ogni oggetto
6").innerHTML = Questa riga non verrà
stampata a video perchè vanno sempre
messi gli apici!!+età+compleanno;
</script>
<!-->ARRAY<->
</script>
<p id="unoo"></p>
<p id="due"></p>
<p id="tre"></p>
<p id="quattro"></p>
<p id="cinque"></p>
<p id="sei"></p>
<p id="sette"></p>
<p id="otto"></p>
<p id="nove"></p>
<p id="dieci"></p>
<p id="undici"></p>
<script>
var numeri_angelici = [111, 222, 333];
var misto = [111, "ananas", 33.3];
document.getElementById("unoo").innerHT
ML = numeri_angelici;
document.getElementById("due").innerHTM
L = numeri_angelici[1];
var sommaNumeri = numeri_angelici[0] +
numeri_angelici[1] + numeri_angelici[2];
document.getElementById("tre").innerHTML
= sommaNumeri;
for(var i=0; i<numeri_angelici.length; i++)
{
document.getElementById("quattro").innerH
TML = sommaNumeri;
}
document.getElementById("cinque").innerH
TML = numeri_angelici.length;
var frutti = ["mela", "ananas", "pera"];
document.getElementById("sei").innerHTML
= frutti;
document.getElementById("sette").innerHT
ML = frutti.push("arancia");
document.getElementById("otto").innerHTM
L = frutti.unshift("pesca");
document.getElementById("nove").innerHT
ML = frutti.sort();
document.getElementById("dieci").innerHTM
L = frutti.shift();
document.getElementById("undici").innerHT
ML = frutti.pop();
</script>
<!-->ELENCHI<->
<p id=”elenco”> </p>
<script>
var elenco = "<ol>";
var i;
var frutti = ["mela", "ananas", "pera"];
for (i = 0; i < frutti.length; i++) {
elenco = elenco + "<li>" + frutti[i] + "</li>";
}
elenco = elenco + "</ol>";
document.getElementById("elenco").innerH
TML = elenco;
</script>
<!-->OGGETTO, ESEMPIO
SENZA METODI <->
<p id=”obj”> </p>
<script>
var oggetto= {nome=”rettangolo”,
lunghezza:16.5, larghezza:8.5};
var x, testo=” ”;
for (x in oggetto)
{
testo=testo+oggetto[x]+ “ ”;
}
document.getElementById("oggetto").innerH
TML =testo;
</script>
<!-->OGGETTO, ESEMPIO
CON I METODI<->
<p id="funzione"></p>
<script>
var oggetto =
{
nome: "Isabella",
anni: 17,
altezza: 160.5,
stampa: function()
{
return this.nome + " ha " + this.anni + " anni
ed è alta " + this.altezza + " cm";
}
};
document.getElementById("funzione").inner
HTML = oggetto.stampa();
</script>
<!-->OGGETTO 2, ESEMPIO
CON I METODI<->
<p id="obj2"></p>
<script>
var oggetto2 =
{
nome2: "Anna",
anni2: 16,
altezza2: 170.5,
stampa2: function(nome2, anni2,
altezza2)
{
return nome2 + " ha " + anni2 + " anni ed è
alta " + altezza2 + " cm";
}
};
document.getElementById("obj2").innerHTM
L = oggetto2.stampa2(oggetto2.nome2,
oggetto2.anni2, oggetto2.altezza2);
</script>
<!-->METODO COSTRUTTORE<->
<p id="m1"></p>
<p id="m2"></p>
<script>
function MetodoCostruttore (nome, anni,
altezza)
{
this.nome=nome;
this.anni=anni;
this.altezza=altezza;
};
var Elisa = new MetodoCostruttore("Elisa",
17, 165.5);
var Emma = new
MetodoCostruttore("Emma", 17, 162.5);
document.getElementById("m1").innerHTML
= Elisa.nome+" ha "+Elisa.anni+" anni ed è
alta "+Elisa.altezza;
document.getElementById("m2").innerHTML
= Emma.nome+" ha "+Emma.anni+" anni ed
è alta "+Emma.altezza;
</script>
PHP: linguaggio di programmazione scripting, lato server,case sensitive (non sempre),
software open source, debolmente tipizzato
Scripting perché è un linguaggio che rimane semplice testo (script) che è interpretato ed
eseguito a runtime, senza essere compilato e trasformato in codice binario.
Lato server,perchè ogni codice PHP risiede su un web server, che interpreta i comandi del
linguaggio e produce pagine web poi inviate al browser del client, interpretato da XAMPP
case sensitive ma non sempre:
- nome funzione può essere scritto come si vuole, viene sempre interpretato
correttamente
- nomi di variabili devono iniziare tutte con “$”
software open source:
- libero
- in continuo sviluppo
- eseguibile da tanti programmi per ogni sistema operativo
debolmente tipizzato: non è necessario dichiarare negli script il tipo di dato contenuto nelle
variabili perché l’interprete lo riconosce al momento dell’esecuzione del programma
quindi ha 2 vantaggi:
1) sgrava il browser dell’utente dal compito di eseguire script che potrebbero rallentare
il caricamento della pagina
2) evita problemi di compatibilità tra il linguaggio e il browser del client
CODICE DESCRIZIONE
<!DOCTYPE html> apertura e chiusura del tag php
<html> dichiarazione di una variabile numerica
<head> funzione che stampa la stringa nella pagina web
<meta charset="UTF-8"> Stringa di testo che contiene il testo "x = 5/2 = ".
<title>PHP: tipi di dato</title> operatore di concatenazione (.), che viene utilizzato per
</head> unire la stringa di testo alla variabile $x.
<body> istruzione che viene stampata nella pagina web
<?php La funzione gettype restituisce il tipo di dato della variabile
$x=5/2; x
echo "x = 5/2 = ".$x."<br>"; dichiarazione di una variabile string
echo "Il tipo di dato di x è " .gettype($x). "<br><br>"; funzione che restituisce il numero di caratteri della stringa
$y = 1; (spazi compresi)
echo "Il tipo di dato di y è " .gettype($y).“<br>"; variabile string a cui viene assegnato un carattere della
$frase= “Buongiorno a tutti”; stringa
echo strlen($frase). “<br><br>”; funzione che ricerca una sottostringa
$lettera=$frase{3}; “or”: sottostringa da ricercare
echo $lettera.“<br><br>”; funzione che permette di mandare a capo il testo così da
echo stristr($frase, “or”).“<br>”; rispettare un margine prefissato
$frase: stringa su cui agire
echo wordwrap($frase, 8, “<br>”); 8:numero massimo di caratteri per riga
<br>”: carattere da usare a fine riga
echo str_word_count(“ciaooo sono isa”).“<br>”; restituisce il numero di parole che compongono la stringa
tra parentesi in base al riconoscimento degli spazi bianchi
echo strpos(‘ciaooo sono isa’, ‘isa’).“<br>”; trova la prima occorrenza della sottostringa specificata
nel secondo argomento all’interno della prima
sostituire la parte di stringa indicata nel primo argomento
echo str_replace(“ciaooo”, “oooooo”, ‘ciaooo sono con quello che è indicato nel secondo
isa’).“<br>”; per stampare il contenuto di una variabile si usa la dot
notation
$k=true;
echo "il valore di y è ".$y. "<br><br>";
$z=10;
echo "Il tipo di dato di z è " .gettype($z). ";<br>"; dichiarazione di una variabile booleana
echo "il valore di z+5 è ".($z+5). "<br><br>";
echo "Il tipo di dato di k è " .gettype($k). ";<br>";
echo "il valore di k è ".$k;
operatore di comparazione di valore
if($x==$y) {echo “x e y sono uguali”.”<br><br>”}
else {echo “x e y NON sono uguali”.”<br><br>”}
if($x===$y) {echo “x e y sono identiche”.”<br><br>”} operatore di comparazione dei tipi
else {echo “x e y NON sono identiche”.“<br><br>”}
function rettangolo($lato1, $lato2)
{
echo “il lato 1 misura ”.$lato1. “<br> “il lato 2
misura”.$lato2.“<br> l’area misura ”.lato1*lato2;
}
rettangolo(10,20); inizializzazione degli attributi
$x=11; variabile globale: variabile dichiarata all’esterno delle
function mia_funz() funzioni, con ambito di visibilità limitato all’intero script php
{ escluse le funzioni, per farla visualizzare all’interno delle
echo “la variabile vista dentro la funzione è x= ”.$x; funzioni bisogna precedere la dichiarazione della variabile
con “global”
}
mia_funz();
echo “<br><br>”; non visualizzabile perchè l’ambito di visibilità della
echo “la variabile vista fuori dalla funzione è x= ”.$x; variabile globale non si estende all’interno della funzione,
per visualizzarla va resa global anche all’interno della
funzione
variabile locale: variabile dichiarata all’interno di uno script
php, con ambito di visibilità limitato alla funzione
static: parola chiave da precedere alla dichiarazione di una
variabile per far sì che quando viene chiamata essa
contenga ancora il valore che le era stato assegnato
dall’ultima esecuzione della funzione
$giorni = array ("lunedi","martedi", "mercoledì") ; array classico: strumento che permette di visualizzare dati
di tipo diverso, come string e integer, associati ad un
indice numerico che parte da 0(se non si scrive nulla
relativamente agli indici viene assegnato ad ogni elemento
dell’array un indice numerico in modo automatico)
$giorni = array (1=>"lunedì", 2=>"martedì", array associativo: strumento che permette di visualizzare
3=>"mercoledì") dati di tipo diverso, come string e integer, associati ad un
indice a scelta numero o stringa, che parte da un indice
scelto, da specificare
$giorni = array (“day1”=>"lunedì", “day2”=>"martedì",
“day3”=>"mercoledì") indice=key
struttura iterativa che fintantoché nell'array $giorni trova
foreach($giorni as $chiave => $valore) una chiave $chiave a cui è associato un valore $valore,
{ esegu le istruzioni racchiuse tra parentesi graffe
echo $chiave.“: ”.$valore.“<br>”;
ogni valore è associato ad una chiave
}
=>: operatore che stabilisce la relazione tra chiave e
valore e è permette al ciclo di non confondersi
sort($giorni);
print_r($giorni); ordina gli array classici in ordine crescente
rsort($giorni);
ordina gli array classici, in ordine decrescente dei valori;
print_r($giorni);
asort($giorni);
print_r($giorni); ordina l'array per valori: rimescola quindi le lettere così che
siano in ordine alfabetico
visualizza a schermo il contenuto di un array,
semplicemente passandone il nome come argomento alla
funzione;
foreach(range(0,100,10) as $decine) range: funzione che si usa se si vuole creare un array i cui
elementi formano una sequenza con intervalli regolari, es:
{
tabellina del 10
echo $decine.” ”;
} 0: valore di partenza
100: valore finale
10: frequenza dell’intervallo
restituisce la dimensione di un array, contando il numero
$numero_elementi = count($giorni); dei suoi elementi, ed è utile per «ciclare» gli array
echo "Numero di elementi nell'array giorni: " . indicizzati
$numero_elementi; numericamente
opera in modo analogo, ma per ogni elemento visualizza
anche il tipo di dato, oltre al valore.
$misto = array ("Isabella”, 17, 1.65, true)
var_dump($giorni).“<br>”;
ordina gli array associativi, in base ai valori degli elementi,
in ordine crescente
ordina gli array associativi in base ai valori degli elementi,
in ordine decrescente
asort($giorni);
ordina gli array associativi in base alle chiavi degli
print_r($giorni); elementi, in ordine crescente
arsort($giorni); ordina gli array associativi in base alle chiavi degli
print_r($giorni); elementi, in ordine decrescente
ksort($giorni);
print_r($giorni);
krsort($giorni);
print_r($giorni);
criterio di accessibilità
metodo getter per accedere all’età private
class persona
{
public $nome = "";
private $anni= "17";
public function getAnni() metodo setter per accedere all’età private
{
return $this->anni." ";
}
dichiarazione di un oggetto
public function setAnni($nuovo) inizializzazioni attributi dell’oggetto
{
$this->anni = $nuovo;}
}
$studente1 = new persona; variabile automatica o superglobale: variabile predefinita a
$studente1->nome="Anna"; cui si può accedere dall’interno dello script, incluse le
funzioni, consente di memorizzare informazioni utili ai
echo $studente1->nome." ha
creatori di siti web a personalizzare i contenuti delle
".$studente1->getAnni()."anni<br><br>"; pagine web:
- sui file in esecuzione
echo $_SERVER['PHP_SELF']; - sulla sessione internet
echo "<br>"."<br>"; - sulla trasmissione di dati tra client e server
in particolare questa è un array associativo di variabili, in
cui tra [‘ ’] sono specificate le sue chiavi
'PHP_SELF': chiave che contiene il nome e la posizione
del file in esecuzione
'HTTP_HOST': chiave che contiene il nome del server host
che esegue lo script
'HTTP_USER_AGENT': chiave che contiene il sistema
operativo e il browser del client
'SERVER_PORT':chiave che contiene la porta di accesso
al server
echo $_SERVER['HTTP_HOST']; 'SERVER_SIGNATURE': chiave che contiene il software
echo "<br>"."<br>"; utilizzato dal server
echo $_SERVER['HTTP_USER_AGENT']; 'SERVER_PROTOCOL': chiave che contiene il protocollo
echo "<br>"."<br>"; di trasmissione utilizzato
'REQUEST_TIME':chiave che contiene l’istante di tempo
echo $_SERVER['SERVER_PORT']; in cui è stata inviata la richiesta
echo "<br>"."<br>"; 'HTTP_ACCEPT_LANGUAGE': chiave che contiene le
echo $_SERVER['SERVER_SIGNATURE']; lingue accettate dal client in ordine di preferenza
echo "<br>"."<br>"; substr: funzione che permette di selezionare una stringa a
echo $_SERVER['SERVER_PROTOCOL']; partire da una sottostringa, ha come parametri
echo "<br>"."<br>"; 1) stringa di partenza
2) posizione iniziale della sottostringa
echo $_SERVER['REQUEST_TIME']; 3) numero di lettere della sottostringa
echo "<br>"."<br>";
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)
MODULO LATO CLIENT DESCRIZIONE
<div>
<center><h1>Compila il modulo</h1>
<form action="http://localhost/prove_PHP/moduli_php.php"
method="get" target="_blank"> percorso del file php
<fieldset style="display:inline"> metodo del php usato per l’invio dei dati
<p>Nome:</p><input name="nome"><br>
<p>Nazione di provenienza</p>
<select name="nazione">
<option value="Italia">Italia</option>
<option value="Spagna">Spagna</option>
<option value="Francia">Francia</option>
<option value="Germania">Germania</option>
<option value="USA">USA</option>
<option value="Canada">Canada</option>
<option value="Portogallo">Portogallo</option>
<option value="Inghilterra">Inghilterra</option>
<option value="Belgio">Belgio</option>
<option value="Danimarca">Danimarca</option>
</select>
<p>e-mail</p><input type="email" name="email">
<p>Password </p><input type="password" name="pwd">
<p>Lascia un commento</p><textarea name="scrivi"
cols="25" rows="10"></textarea><br><br>
</fieldset></form> </center>
</div>
</body></html>
MODULO LATO SERVER DESCRIZIONE
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LATO SERVER</title>
<style>
header{
background-color: blue;
padding: 10px;
color: white;
}
aside{
background-color: #e0e0d1;
font-size: 20px;
padding:10px;
width:500px;
}
</style>
</head>
<body >
<header>
<h1 align="center">Ecco il risultato della compilazione del
tuo modulo!</h1></header>
<aside>
<?php tag utilizzato per contenuti accessori o non centrali rispetto
echo "<br> <b>L'utente: </b>".$_GET["nome"]." al contenuto principale della pagina
".$_GET["cognome"]." <br><b>E' nato in data: $_GET: variabile superglobale, quindi un array associativo
</b>".$_GET["datanascita"]; in cui la chiave identifica il dato trasmesso al server,
echo "<br><b>Maggiorenne: </b>".$_GET["anni"]; alternativa: POST
echo "<br> <b>Proviene dal/dall': </b>".$_GET["nazione"];
echo "<br> <b>Ecco la sua e-mail: </b> ".$_GET["email"];
echo "<br><b> Ecco la sua password:</b>
".$_GET["pwd"];
echo "<br><b>Ecco il suo commento:
</b>".$_GET["scrivi"];
?>
</aside>
</body>
</html>
COOKIE DESCRIZIONE
<?php funzione PHP che restituisce la data e l'ora corrente
$nome = "mio_cookie"; secondo un particolare formato
$valore = "ultima visita: ".date(DATE_W3C); funzione che crea un cookie, lo invia al browser del cliente
setcookie($nome, $valore); e lo recupera, va chiamata prima dell'apertura della pagina
?> web dal client
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP e i cookie</title>
</head> isset: funzione che ha come argomento in contenuto del
<body> cookie restituito da $_COOKIE, variabile superglobale
<br> che memorizza il contenuto del cookie
<?php
if(!isset($_COOKIE[$nome]))
{echo "Cookie non settato.";}
else
{echo "Cookie settato! <br> ";
echo $_COOKIE[$nome];}
?>
</body>
</html>
INFORMAZIONE 1. materia prima che si ottiene relazionando,
interpretando e correlando in modo opportuno più
dati
2. può essere trasformata in sistemi informativi
3. Costituisce una risorsa per qualsiasi
organizzazione il cui valore effettivo è stabilito dalla
categoria in cui si può collocare
VALORE INFORMAZIONE inversamente proporzionale alla quantità di
informazioni di quel tipo disponibili, infatti, in un
grafico che mette sull’asse x la quantità di
informazione disponibile e sull’asse y il valore
dell’informazione si può notare che le informazioni
meno disponibili salgono di valore
ORDINE DI IMPORTANZA DELLE INFORMAZIONI A 1. Fonti informative primarie o dati grezzi
PARTIRE DAL BASSO 2. informazioni selezionate
3. report
4. indicazioni strategiche
FONTI INFORMATIVE PRIMARIE O DATI GREZZI informazioni più disponibili e con meno valore, che
possono essere considerate informazioni solo se
interpretate nel modo corretto
INFORMAZIONI SELEZIONATE informazioni molto disponibili, ma che hanno poco
valore
REPORT informazioni non molto disponibili con un certo valore
INDICAZIONI STRATEGICHE informazioni rare e preziose, date dall’elaborazione di
dati grezzi
SISTEMA INFORMATIVO componente di un’organizzazione che ha il compito di
gestire le informazioni
COS’E’ LA GESTIONE DELLE INFORMAZIONI 1. acquisizione
2. produzione
3. elaborazione
4. conservazione
5. distribuzione
SISTEMA INFORMATICO sottoinsieme automatizzato di un sistema informativo,
costituito dalle tecnologie informatiche e di automazione,
come le applicazioni automatiche di un elaborato
elettronico, che rendono il sistema informativo
computerizzato e più efficiente
COME GESTISCE LE INFORMAZIONI IL SISTEMA attraverso la rappresentazione codificata di un database
INFORMATICO?
COS’E’ UN DATABASE? una collezione di dati gestite da un DBMS
COS’E’ UN DBMS? sistema software che gestisce grandi masse di dati, di
ordine di gigabyte e terabyte, condivise da più applicazioni
ed utenti, e di cui ne garantisce la persistenza per cui la
loro sopravvivenza di fronte a malfunzionamenti dei
programmi
CHE REQUISITI DEVONO SODDISFARE I SERVIZI 1. attenzione ai problemi di efficienza per ottimizzare
OFFERTI DA UN DBMS? le richieste di ricerca nei dati
2. l’autenticazione e controllo degli accessi ai dati, per
garantire la persistenza, la condivisione dei dati e
la loro integrità, quindi la
non-modifica/danneggiamento dei dati
3. la disponibilità di funzionalità che permettono di
semplificare la trascrizione dei dati, lo sviluppo
delle applicazioni e l’amministrazione dei database
CHE SVANTAGGI HA UN FILE SYSTEM RISPETTO AD ● i meccanismi di condivisione sono più limitati, in
UN DBMS? particolare, il file non può essere modificato
simultaneamente da più persone
● ci potrebbero essere descrizioni errate e
inconsistenti perché l’accesso ai file condivisi
richiede che i file stessi siano descritti nel codice
sorgente della applicazioni
● non può rendere disponibili molti servizi offerti solo
dal DBMS
RIDONDANZA ripetizione dovute a copie multiple di uno stesso dato,
che costituisce un problema per più ragioni:
● spreca memoria di massa e tempo di calcolo
utilizzato per propagare le modifiche su tutte le
copie di un dato
● può generare problemi di inconsistenza delle
diverse copie di dati
ACCESSIBILITA’ DBMS le autorizzazioni all’accesso dei dati di un database
vengono associate in modo distinto a seconda del
tipo di utente e il criterio con cui si consente
l’accesso è stabilito dall’amministratore del
database
ARCHITETTURA DBMS 1. dispositivi della memoria di massa in cui sono
memorizzati i dati
2. programmi di gestione chiamati manager per
- l’immagazzinamento dei dati chiamato storage
- la memorizzazione temporanea chiamata buffer
- l’indicizzazione chiamata index
3. query manager per
- analizzare
- autorizzare
- ottimizzare
- eseguire
richieste
4. transaction manager per coordinare l’invio delle
richieste
5. concurrency manager per gestire gli accessi
concorrenti ai dati
6. logging per la protezione dai guasti
FASI DI PROGETTAZIONE DI UN DATABASE 1. CONCETTUALE: rappresentazione astratta delle
categorie dei dati in esame e delle correlazione tra
loro
2. LOGICA: progettazione strutturale di un modello
dei dati che descrive come vanno organizzati e che
vincoli devono rispettare
3. FISICA: memorizzazione di dati e strumenti
hardware e software necessari per gestirli e
renderli accessibili agli utenti
MODELLO E-R modello entity-relationship, quindi entità-associazione,
strumento usato per modellare la realtà nella fase
di progettazione concettuale dei database
ENTITY categoria/classificazione di cose che presentano
proprietà comuni e riguardo alle quali sono
disponibili dati da trattare
RELATIONSHIP ⇒ ASSOCIAZIONE Legame Tra 2 o più entità caratterizzato da una
cardinalità
CARDINALITA’ ciò che indica quanti legami possono esistere tra le
COS’E’ istanze delle 2 entità
QUANTI E QUALI TIPI ESISTONO 3
ESEMPI uno-a-uno, uno-a-molti, molti-a-molti
ATTRIBUTI descrizioni delle caratteristiche rappresentabili in forma
di dati, che possono essere assegnate a ogni
entità ed ad ogni associazione, nella
rappresentazione tabellare diventa l’intestazione di
una colonnna
CHIAVE PRIMARIA attributo che identifica univocamente ogni istanza di
un’entità
CHIAVE ESTERNA O FOREIGN KEY attributo che permette di rappresentare l’associazione
tra entità
ISTANZA esempi specifici di un entità, corrispondono al valore
che ciascun attributo di un modello razionale può
assumere, quindi al contenuto effettivo delle celle
MODELLO LOGICO DEI DATI l'astrazione logica che descrive la struttura dei dati, le
associazioni tra loro e i vincoli che devono
rispettare con lo scopo di tradurre in uno schema
logico le informazioni contenute nel modello e-r.
MAPPING processo di traduzione del modello e-r nel modello
logico-razionale
MODELLO RELAZIONALE modello logico di dati che traduce il modello e-r in
tabelle
COMPONENTI RELAZIONE 1) parte intensionale, data dallo schema del
database, che descrive la struttura di dati e
permette di interpretare i dati dell’istanza
2) parte estensionale, data dall’istanza, cieè i dati
inseriti nello schema
SCHEMA ciascuno corrisponde ad ogni entità
INTESTAZIONE COLONNA attributo
TUPLA riga istanziata della tabella, insieme degli attributi
3 LINGUAGGI ASSOCIATI AL DBMS DDL, DML, DCl
DDL linguaggio che
- definisce gli schemi logici del database
- definisce e modificare la struttura delle tabelle e i
vincoli intra-tabella, cioè interni a una tabella, e
inter-tabella, cioè tra tabelle diverse
DML linguaggio che
- permette di interrogare il database
- modificarne le istanze
- compiere operazioni semplici su singole tabelle e
per la modifica dei dati delle tabelle
- effettuare operazioni su più tabelle mediante
l'operatore JOIN.
DCL linguaggio che consente di impartire comandi
gestionali, per esempio il controllo degli accessi al
database
SQL 1) settoriale: serve solo per i database, i database, le
tabelle e le relazioni tra tabelle ma non per altro
2) non è standard, ogni sua parte ha delle regole
diverse
3) query language ⇒linguaggio strutturato per l’
interrogazione al database, per ricavare
informazioni dai dati
4) linguaggio dichiarativo, non computazionalmente
completo, manca di alcune strutture tipiche del
linguaggio
5) crea le strutture: diversamente dai linguaggi di
programmazione procedurali, cioè, non specifica la
sequenza di operazioni da compiere per ottenere il
risultato; si limita invece a descrivere il risultato
desiderato, supponendo che l'elaboratore conosca
già la sequenza di azioni da compiere per ottenerlo
MODELLO RELAZIONALE - ha l’obiettivo di rendere possibile l'indipendenza
fisica e logica dei dati
- permette all'amministratore e al progettista di
intervenire sul database - con modifiche che di
norma mirano a migliorare l'efficienza dei
programmi applicativi - senza interferire con ciò
che vede l'utente finale.
INDIPENDENZA FISICA si ha quando una riorganizzazione dei dati nei
dispositivi di memorizzazione non ha effetti
collaterali sui programmi applicativi, che
continuano a funzionare come prima, quindi
l'utente finale del database non noterà alcun
cambiamento
INDIPENDENZA LOGICA si ha quando perfino un cambiamento dello schema
logico del database (che comporterà
necessariamente anche modifiche a livello fisico)
è trasparente per l'utente, cioè non è visibile
nell'interfaccia del DBMS, che rimane immutata.
MODELLO GERARCHICO O RETICOLARE - modello fortemente influenzato da considerazioni
di natura fisica
- a differenza del modello relazionale, esiste una
vera e propria teoria relazionale che si può usare
per progettare i database, per definire i linguaggi e
per ottimizzare le richieste di informazione da parte
dell'utente.
RELAZIONE - in linguaggio informatico è sinonimo di tabella
- è un insieme di tuple
- in essa tutt le tuple sono distinte tra loro e il loro
ordinamento non è importante
- nel modello relazionale dve essere nella prima
forma normale, i domini di ogni attributo devono
essere atomici, non ulteriormente suddivisibili
NULL - simbolo speciale che denota l’assenza di un valore
nel dominio d non è un valore del dominio stesso
- dato che NULL non corrisponde ad alcun valore,
due attributi che hanno entrambi valori NULL sono
diversi
- una chiave primaria non può essere NULL perchè
ciò renderebbe inutile la tupla
VINCOLO DI INTEGRITA’ proprietà che deve essere soddidfatta dalle istanze e
rende integri i dati di una tabella
VINCOLO DI TUPLA vincolo che esprime condizioni su ciascun record di
una tabella , indipendentemente dagli altri record.
Nel caso in cui è presente, i dati della tupla non
possono essere del tutto indipendenti tra loro
VINCOLO DI DOMINIO O VINCOLO SUI VALORI - caso particolare dei vincoli sulla tupla
- vincolo che si riferisce ai valori ammissibili
- Può essere ad esempio il dominio di una colonna,
cioè i valori per cui una colonna è limitata, es, nella
colonna voti, le istanze possono assumere valori
tra 1 e 10
VINCOLO DI CHIAVE vincoli che vieta la presenza di tuple distinte in cui certi
attrbuti hanno lo stesso valore
VINCOLO REFERENZIALE
colonna che deve essere chiave primaria ID_ nomeclasse