Ecco giunti all'ultima tappa del percorso introduttivo su HTML, PHP e gestione di dati su MySQL:
L'accesso ai dati e la visualizzazione delle informazioni contenute nel database tramite pagine dinamiche scritte in PHP.
Ecco giunti all'ultima tappa del percorso introduttivo su HTML, PHP e gestione di dati su MySQL:
L'accesso ai dati e la visualizzazione delle informazioni contenute nel database tramite pagine dinamiche scritte in PHP.
Fare con Zend Framework 2 ciò che facevo con ZF1Steve Maraspin
Introduzione a Zend Framework 2 per chi proviene da Zend Framework 1, tenuta allo Zend Framework Day di Milano del 01/02/2013. Introduzione alle nuove caratteristiche e pattern architetturali di ZF2
Zend Framework 2 non è l'evoluzione di ZF, ma un progetto nuovo: il codice è stato riscritto e poche sono le parti in comune con la versione precedente. Lo sviluppatore abituato a ZF1 non ha vita facile, ed è fondato il timore di dover imparare tutto da capo. In questo talk vediamo come cambiare le vecchie abitudini di sviluppatori ZF1, per sfruttare al meglio le potenzialità del nuovo strumento. Attraverso esempi concreti, in cui vedremo all'opera i nuovi pattern e le best practice, mostriamo come - partendo con il piede giusto - il passaggio a ZF2 possa essere meno traumatico del previsto. Il talk è orientato soprattutto a chi già conosce ZF1, ma gli argomenti affrontati possono essere utili anche a chi si avvicina a ZF per la prima volta.
jQuery è un framework javascript che permette di semplificare la scrittura di codice javascript, facilitando l'iterazione con gli elementi della pagina (controlli, stili, eventi, animazioni, ...), e permettendo di aumentare la user experience delle applicazioni, riducendone al tempo stesso la complessità di scrittura. Vista la sua diffusione e potenza, è stato anche incluso nei project templete di Visual Studio. In questa sessione vedremo cos'è jQuery, e scopriremo le potenzialità e funzionalità che offre, verificando se il motto "write less do more" sia vero o meno.
Quante volte in questi ultimi mesi abbiamo sentito parlare di AJAX?
In effetti molti articoli che ho letto presuppongono una qualche conoscenza di AJAX stesso o comunque una buona conoscenza da parte dei lettori delle tecnologie alla sua base, ad esempio Javascript.
Ho avuto la sensazione che AJAX sia percepito dai neofiti come una cosa per soli programmatori esperti e quindi ho pensato di scrivere un articolo per cercare di aiutare coloro che si avvicinano a questo mondo per la prima volta permettendogli di scrivere le loro prime semplici applicazioni.
Sperando di riuscire nel mio intento vi auguro buona lettura.
Autenticazione delle api con jwt e symfony (Italian)Marco Albarelli
A quick overview of the JWT token format and how it can be used to authenticate REST APIs even without implementing the full Openid Connect stack. The examples show also a TDD approach
MongoDB User Group Padova - Overviews iniziale su MongoDBStefano Dindo
MongoDB è un database non relazionale, orientato ai documenti. Classificato come un database di tipo NoSQL, MongoDB si allontana dalla struttura tradizionale basata su tabelle dei database relazionali in favore di documenti in stile JSON con schema dinamico (MongoDB chiama il formato BSON), rendendo l'integrazione di dati di alcuni tipi di applicazioni più facile e veloce.
Lo scopo del MongoDB User Group Padova è quello di condividere esperienze sulla tecnologia MongoDB.
Questa presentazione, usata durante il primo evento dello User Group, è stata usata per introdurre i partecipanti sulle procedure di installazione ed i concetti di base su MongoDB.
Levate l'ancora! Rotte senza problemi con ZF2Diego Drigani
Introduzione al routing di Zend Framework 2, tenuta allo Zend Framework Day del 01/02/2013 a Milano.
Avere URL pulite e ben strutturate è molto importante, sia da un punto di vista SEO, che di organizzazione delle proprie API. In Zend Framework 2 è il router ad occuparsi di gestire le richieste http, di delegare l'esecuzione delle stesse all'opportuno frammento di codice sorgente, e quindi di estrarne gli eventuali parametri. Questo talk introduce le potenti funzionalità del nuovo sistema di routing di ZF2. Grazie a esempi reali (con gestione di richiestte http, ma anche CLI), sarete in grado di utilizzare il nuovo router di ZF2 in tutta la sua flessibilità.
Questo documento rappresenta parte delle slide del corso erogato dalla Web Agency ElaMedia Group. Per maggiori informazioni: http://www.elamedia.it/corso-html-roma.html
Fare con Zend Framework 2 ciò che facevo con ZF1Steve Maraspin
Introduzione a Zend Framework 2 per chi proviene da Zend Framework 1, tenuta allo Zend Framework Day di Milano del 01/02/2013. Introduzione alle nuove caratteristiche e pattern architetturali di ZF2
Zend Framework 2 non è l'evoluzione di ZF, ma un progetto nuovo: il codice è stato riscritto e poche sono le parti in comune con la versione precedente. Lo sviluppatore abituato a ZF1 non ha vita facile, ed è fondato il timore di dover imparare tutto da capo. In questo talk vediamo come cambiare le vecchie abitudini di sviluppatori ZF1, per sfruttare al meglio le potenzialità del nuovo strumento. Attraverso esempi concreti, in cui vedremo all'opera i nuovi pattern e le best practice, mostriamo come - partendo con il piede giusto - il passaggio a ZF2 possa essere meno traumatico del previsto. Il talk è orientato soprattutto a chi già conosce ZF1, ma gli argomenti affrontati possono essere utili anche a chi si avvicina a ZF per la prima volta.
jQuery è un framework javascript che permette di semplificare la scrittura di codice javascript, facilitando l'iterazione con gli elementi della pagina (controlli, stili, eventi, animazioni, ...), e permettendo di aumentare la user experience delle applicazioni, riducendone al tempo stesso la complessità di scrittura. Vista la sua diffusione e potenza, è stato anche incluso nei project templete di Visual Studio. In questa sessione vedremo cos'è jQuery, e scopriremo le potenzialità e funzionalità che offre, verificando se il motto "write less do more" sia vero o meno.
Quante volte in questi ultimi mesi abbiamo sentito parlare di AJAX?
In effetti molti articoli che ho letto presuppongono una qualche conoscenza di AJAX stesso o comunque una buona conoscenza da parte dei lettori delle tecnologie alla sua base, ad esempio Javascript.
Ho avuto la sensazione che AJAX sia percepito dai neofiti come una cosa per soli programmatori esperti e quindi ho pensato di scrivere un articolo per cercare di aiutare coloro che si avvicinano a questo mondo per la prima volta permettendogli di scrivere le loro prime semplici applicazioni.
Sperando di riuscire nel mio intento vi auguro buona lettura.
Autenticazione delle api con jwt e symfony (Italian)Marco Albarelli
A quick overview of the JWT token format and how it can be used to authenticate REST APIs even without implementing the full Openid Connect stack. The examples show also a TDD approach
MongoDB User Group Padova - Overviews iniziale su MongoDBStefano Dindo
MongoDB è un database non relazionale, orientato ai documenti. Classificato come un database di tipo NoSQL, MongoDB si allontana dalla struttura tradizionale basata su tabelle dei database relazionali in favore di documenti in stile JSON con schema dinamico (MongoDB chiama il formato BSON), rendendo l'integrazione di dati di alcuni tipi di applicazioni più facile e veloce.
Lo scopo del MongoDB User Group Padova è quello di condividere esperienze sulla tecnologia MongoDB.
Questa presentazione, usata durante il primo evento dello User Group, è stata usata per introdurre i partecipanti sulle procedure di installazione ed i concetti di base su MongoDB.
Levate l'ancora! Rotte senza problemi con ZF2Diego Drigani
Introduzione al routing di Zend Framework 2, tenuta allo Zend Framework Day del 01/02/2013 a Milano.
Avere URL pulite e ben strutturate è molto importante, sia da un punto di vista SEO, che di organizzazione delle proprie API. In Zend Framework 2 è il router ad occuparsi di gestire le richieste http, di delegare l'esecuzione delle stesse all'opportuno frammento di codice sorgente, e quindi di estrarne gli eventuali parametri. Questo talk introduce le potenti funzionalità del nuovo sistema di routing di ZF2. Grazie a esempi reali (con gestione di richiestte http, ma anche CLI), sarete in grado di utilizzare il nuovo router di ZF2 in tutta la sua flessibilità.
Questo documento rappresenta parte delle slide del corso erogato dalla Web Agency ElaMedia Group. Per maggiori informazioni: http://www.elamedia.it/corso-html-roma.html
Il racconto a posteriori (questa presentazione fa seguito a quella tenuta poco più di un anno fa, sempre in occasione della UGIALT.net Conference) di quello che è stato effettivamente lo sviluppo e l'adozione di questo linguaggio, che ormai molti indicano come la vera piattaforma di sviluppo del futuro, il rischio che si intravede di una nuova buzzword stile "web 2.0", alcune esperienze dirette e le lezioni che ne ho potuto trarre.
Musica, illustrazione e social media: una storia da raccontareInSide Training
Gerardo Casiello è un musicista con un progetto ambizioso; Francesca Appi è una docente di Inside che ha collaborato con lui e ha studiato la sua strategia digital. Insieme ci racconteranno da dove sono partiti e dove vogliono arrivare. Speech di Creativity Day di Roma 2015
Hai mai pensato a cosa succede quando una richiesta HTTP arriva al tuo sito Drupal? Come Drupal trova il codice corretto da eseguire? Quali parti di una pagina provengono dalla cache e quali sono costruite da zero? Quante e quali query vengono eseguite sul database? E, perché no, quanto tempo e quanto memoria richiede convertire la richiesta in una risposta?
Che tu sia una persona che sviluppa moduli o solo curiosa, le risposte a queste domande ti aiuteranno a comprendere meglio come funziona internamente il tuo CMS preferito (perché se non lo è già, lo diventerà).
Per fare questo useremo il modulo Webprofiler, che ci aiuterà a capire come le varie componenti di Drupal interagiscono per convertire una richiesta in una risposta. Webprofiler raccoglie dati durante la costruzione di ogni pagina del sito e ci permette di esplorare facilmente cosa succede all’interno di Drupal.
Seguiremo il percorso di una richiesta iniziando dai middleware, passeremo dal routing al controller per finire a Twig. Scopriremo come i servizi forniscono funzionalità e come gli eventi danno la possibilità (o l’opportunità) di scrivere codice disaccoppiato. Il tutto senza perdere di vista le performance e tenendo un occhio sulle risorse, il tempo, le cache e le query.
Enrico Zimuel - PUG Milano meetup - Codemotion Milan 2017Codemotion
Meetup del PHP User Group Milano con presentazione delle attività del gruppo e dell'associazione GrUSP per la diffusione delle buone pratiche nel mondo dello sviluppo web. Durante il meetup ci sarà anche un intervento di Enrico Zimuel sulle novità del PHP 7.1 (e 7.2), con la presentazione del suo nuovo libro "Sviluppare in PHP 7. Realizzare applicazioni web e API professionali" edito da Tecniche Nuove.
Accelera lo sviluppo con il web framework! Componenti a supporto dello svilup...Tsuneo Kurihara
Framework sì o framework no?
Direi proprio di sì! In questa presentazione faccio una panoramica di quello che è un web framework, cosa offre e quali sono i vantaggi.
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
2. PHP – Hypertext Preprocessor
Motore di scripting (eseguiti sul server)
Sintassi “C-like”
Piattaforme diverse
Linguaggio potente, ricco di funzioni
Connessione a database
Modulo del Web Server
...modulo CGI
3. A cosa vogliamo arrivare
Php
Mysql
Php + Mysql >>> Applicazioni web dinamiche
4. Pagine statiche
Html = pagine statiche
Javascript migliora molto la dinamicità client
Necessario aggiornare contenuti e dati
5. Web Server
Una applicazione server: Apache, IIS, ...
Riceve richieste client
Interagisce con altre applicazioni server
Determina ed invia al client risposta con dati e/o
codice HTML
7. Iniziamo con Php
Il tag per inserire codice php:
<?php … ?>
Per scrivere nella pagina:
echo “Hello World!”
Print(“......”)
Nomi variabili:
$a, $b, $importo
Costanti
define("COSTANTE", "Ciao mondo.");
8. I cicli
while($i>0) { echo “i vale $i”; }
do {
echo "$i <br />n";
$i++;
} while ($i < 10);
for ($i=-5; $i < 5; $i++) { echo "$i <br />n"; }
10. Caratteri speciali tra apici
' singolo apice
” doppio apice
backslash
r ritorno a capo
n nuova linea
t tabulazione orizzontale
Da usare dentro una stringa tra singoli o doppi apici
esempio: “Marta disse: ”Firenze lo sa”nr”
11. Operatori
Operatori aritmetici
+ - * / % ++–
Operatori di assegnamento
+= -= *= /= %= &=
Operatori relazionali
== === < <=> >=!= !==
Operatori logici
&& AND || OR XOR !
$a%=$b equivale a $a=$a%$b
13. switch e break
Switch ($scelta) {
case “+” : $r=$a+$b;
break;
case “-” : $r=$a-$b;
break;
case “*” : $r=$a*$b;
break;
case “/” : $r=$a/$b;
break;
default: echo “operatore errato!”;
}
14. foreach
Ciclo su tutti gli elementi di un array
$a=array(“ieri”,”oggi”,”domani”,”dopodomani”);
foreach($a as $ele) {
print(“$ele <br>”);
}
15. break – continue - exit
break :
Permette l'uscita da qualsiasi ciclo
continue :
Salta all'inizio del ciclo per l'iterazione successiva
exit :
Interrompe completamente l'esecuzione dello script
16. try … catch (MyException $e) ...
try {
// istruzione che puo' causare errore
} catch (Exception $e) {
// istruzioni in caso di errore
}
17. Funzioni
Per dichiarare la funzione
function somma($a, $b) {
$c=$a+$b;
return $c;
}
per richiamarla
$somma=somma($val1,$val2);
Oppure anche
print(“la somma e' : “.somma($val1,$val2).”<br>”);
18. Visibilità Variabili
Sono LOCALI le variabili dichiarate in una funzione
global nomevariabile
attiva l'uso di una variabile definita esternamente
static $contatore=0
Dichiara una variabile locale assegnando un valore non
reinizializzato nelle successive esecuzioni
19. Parametri di una funzione utente
Passati per valore es: function swap($a,$b) {…}
O per riferimento es: function swap(&$a,&$b) {…}
Valore di default es: function swap($a,$b=0) {…}
Funzioni con numero variabile di argomenti:
...func_num_args() e func_get_arg($i)
...esempio fattoriale e funzioni dinamiche
21. Array associativi
Fondamentali in PHP
Non usano numeri per puntare agli elementi
Usano stringhe
$clienti[“nome”]=”Rossi Mario”;
$clienti[“provincia”]=”Catania”;
$clienti[“telefono”]=”095-454545”;
$cd=array(“Autore”=>”Springsteen”,
“Titolo”=>”The River”,
“Anno”=>1980);
23. Le Sessioni
La sessione è il modo più semplice per seguire un utente dal
momento in cui si collega a quando interrompe il collegamento
internet.
Il server apre una sessione con la funzione session_start() e gli
assegna un nome univoco.
Le variabili di sessione sono memorizzate in un array globale di
nome $_SESSION[]
Deposita un cookie nella macchina dell'utente e ogni volta che ne
ha bisogno, ne estrae i dati per risalire alla sessione e al file
salvato.
Iniziare la sessione con session_start() prima di ogni altro output
dal server. NESSUNA funzione di uscita deve precederla,
neppure il codice HTML!!
24. Session: funzioni e codici
session_start(); // apre una sessione
$_SESSION['nomevariabile']; //crea l'array globale che
contiene tutte le variabili di sesssione.
session_unset(); //distrugge le variabili sessione.
session_destroy(); //distrugge una sessione
session_set_cookie_params(); //imposta i secondi di inattività
oltre i quali la sessione è cancellata
25. Session: un esempio
<?php
session_start();
//Recupero username e password dal form e li salvo
$username = $_POST['user'];
$password = $_POST['pass'];
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$_SESSION['views']=1;
?>
<html>...
<body>...
26. Session: l'esempio in una pagina successiva
<?php
session_start();
If (isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>
27. I file di testo
Caratteri visualizzabili (testo)
Accesso sequenziale
Ogni riga finisce con il carattere di ritorno a capo
'n'
28. Scrittura di un file
if (!$p_file = fopen("miofile2.txt","w")) {
echo "Errore: non posso aprire il file miofile2.txt";
exit;
}
flock($p_file,LOCK_EX);
fputs($p_file,"Pippon");
fputs($p_file,"Pluton");
fputs($p_file,"Paperinon");
flock($p_file,LOCK_UN);
fclose($p_file);
29. Lettura di un file
if (!$p_file = fopen("miofile3.txt","r")) {
echo "Spiacente, non posso aprire il file";
} else {
while(!feof($p_file)) {
$linea = fgets($p_file, 255);
echo "$linea<BR>";
}
fclose($p_file);
}
30. Lettura e scrittura
$p_file = fopen("rubrica2.csv","r");
$p_file_out = fopen("miofile3.txt","w");
If (!$p_file || !$p_file_out) {
echo "Spiacente, non posso aprire uno dei file";
} else {
flock($p_file_out,LOCK_EX);
while(!feof($p_file)) {
$linea = fgets($p_file, 255);
$linea=str_replace ( ",","n",$linea );
fputs($p_file_out,$linea);
}
fclose($p_file); flock($p_file_out,LOCK_UN);
fclose($p_file_out);
}
31. Invio dati da un form
<form action=”http://127.0.0.1/mobile/registra.php” method=”post”>
Nominativo: <input type=”text” name=”nome”>
Email: <input type=”text” name=”email”>
Città: <input type=”text” name=”citta”>
<input type=”submit” value=”Invia”>
</form>
32. Ricezione dati
Il server riceverà i valori inviati dal form in un
vettore di sistema chiamato $_REQUEST
$a=$_REQUEST[nome];
$b=$_REQUEST[email];
$c=$_REQUEST[citta];
33. Esercizio - Client
Creare un form per
la selezione di una categoria di fornitori da una list
box
Generare 2 numeri interi compresi tra 1 e 100
(longitudine e latitudine)
Inserimento/modifica dei numeri generati
Inserimento dell'email utente
Invio delle 4 informazioni a ricerca.php
34. Esercizio - Server
Leggere un file di testo “fornitori.txt”
Per i soli record con categoria uguale a quella
selezionata dal Client calcolare la distanza minima
tra le coordinante client e quelle del fornitore
Visualizzare i dati del fornitore piu' vicino alla
posizione del client
35. MySQL
Potente database SQL
Utilizzato nella maggioranza dei siti dinamici sul web
Download dell'ultima versione dal sito Oracle
oppure download XAMPP
Perfettamente integrabile con Apache e Php
36. Panoramica Sql
Select - usata per interrogare 1 o più righe
Insert - usata nei nuovi inserimenti di riga
Update - usata per modificare 1 o più righe
Delete - usata per eliminare 1 o più righe
37. Interrogazione di un DB
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)
si connette al server
mysql_select_db(“rubrica”, $cs)
apre il database
mysql_close($cs);
chiude la connessione
$recSet=mysql_query("select * from rubrica", $cs);
esegue la query
$line=mysql_fetch_assoc($recSet)
copia il record puntato in un array associativo
mysql_free_result($recSet);
libera la memoria dal record set
38. Inserimento nuova riga in un DB
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)
si connette al server
mysql_select_db(“rubrica”, $cs)
apre il database
mysql_close($cs);
chiude la connessione
$recSet=
mysql_query("insert into tabella (campo1, …) values (val1,...)", $cs);
39. Modifica di una riga in un DB
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)
si connette al server
mysql_select_db(“rubrica”, $cs)
apre il database
mysql_close($cs);
chiude la connessione
$recSet=
mysql_query("update tabella set campo1=xxx, campo2=yyy...", $cs);
40. Elimina una riga in un DB
$cs=mysql_connect(“localhost”, “pippo”, “miapassword”)
si connette al server
mysql_select_db(“rubrica”, $cs)
apre il database
mysql_close($cs);
chiude la connessione
$recSet=
mysql_query("update tabella set campo1=xxx, campo2=yyy...", $cs);
42. CMS
Content Management System!
Sito dinamico
Applicazione lato server
No programmazione
Specializzati
Sfrutta un DB
Sezione di amministrazione
43. Vantaggi
No programmazione
Aspetto gestito tramite fogli di stile CSS anche già
disponibili in template (temi)
Anche i flat file CMS: solo file dati, nessun DB relazionale
47. WordPress
Download Wordpress in italiano
MySQL
Creare un db “wp”
Creare un utente “wp” con tutti i privilegi per il db
Creare c:xampphtdocswordpress
Estrarre i file dentro c:xampphtdocswordpress
48. WordPress 2
Copiare il file wp-config-sample.php in wp-config.php
Modificare il wp-config.php nei seguenti punti :
'DB NAME' 'wp'
'DB USER' 'wp'
'DB PASSWORD' 'wp'
Salvare e uscire
Browser: http://localhost/wordpress/wp-admin/install.php
Annotare la password
Collegati
49. Gli articoli
Creare una categoria
Creare un articolo - Visibilità
Pubblicare
Pubblicazione programmata
51. Gli Utenti
Amministratore: tutto + commenti
Editore: Articoli, pagine, pubblicazione (no Aspetto, e
impostazioni limitate)
Autore: articoli, pubblicazione
Collaboratore: articoli
Sottoscrittore
52. ???
Ricordate l'esercizio realizzato con localizzazione
dell'utente e individuazione del fornitore più
vicino?
Individuare i fruitori sul territorio
Individuare più frequenti richieste
54. MoULe
Back Stage:
Associazione di contenuti didattici a specifiche
localizzazioni geografiche
Acquisizione materiale multimediale e pubblicazione
online
55. Funzionalità
Ricerca di informazioni legate alla posizione
Inserimento contenuti in modo collaborativo (wiki e
mappe concettuali)
Annotazioni multimediali mediante dispositivi
mobili
Chat e forum sensibili alla posizione
Point of interest
Monitoraggio utenti