Indice generale
Prefazione ...............................................................................................xiii
A chi si rivolge il libro .................................................................................. xiv
Struttura e contenuti del libro ....................................................................... xiv
Dove trovare aiuto ....................................................................................... xvii
Le newsletter di SitePoint ........................................................................... xviii
I vostri commenti ....................................................................................... xviii
Convenzioni adottate in questo libro .......................................................... xviii
L’autore ......................................................................................................... xx
SitePoint ....................................................................................................... xx
Capitolo 1
Installazione .......................................................................1
Un server web personale.................................................................................. 2
Installazione su Windows ................................................................................. 3
Impostare la password di root MySQL in XAMPP ................................. 9
Installazione su Mac OS X ............................................................................ 10
Impostare la password di root MySQL in MAMP................................. 15
Installazione su Linux .................................................................................... 17
Che cosa chiedere al provider di hosting web ................................................. 17
Il primo script PHP ....................................................................................... 18
La cassetta degli attrezzi è piena, le mani sono sporche.................................... 21
Capitolo 2
Introduzione a MySQL .....................................................23
Introduzione ai database ................................................................................ 23
Usare phpMyAdmin per eseguire query SQL ................................................ 25
SQL (Structured Query Language) ................................................................ 30
Creare un database......................................................................................... 31
Creare una tabella .......................................................................................... 33
Inserire dati in una tabella .............................................................................. 36
Visualizzare i dati registrati in un database ...................................................... 37
Modificare i dati registrati nel database ........................................................... 40
Eliminare i dati registrati nel database............................................................. 40
Lasciate fare a PHP ........................................................................................ 41
Capitolo 3
Introduzione a PHP ..........................................................43
Sintassi e istruzioni di base ............................................................................. 45
Variabili, operatori e commenti ...................................................................... 47
Array ............................................................................................................ 48
libro_php.indb v
9/3/2012 6:25:53 PM
vi
Sviluppare applicazioni con PHP e MySQL
Interazione con l’utente e moduli .................................................................. 49
Passare variabili all’interno di collegamenti ........................................... 50
Passare variabili nei moduli .................................................................. 57
Strutture di controllo ..................................................................................... 60
Un breve riepilogo ........................................................................................ 70
Evitare di rendere pubbliche le proprie scelte in merito alla tecnologia .... 70
Usare i template PHP .......................................................................... 71
Molti template, un unico controller ...................................................... 73
Verso i database ............................................................................................. 76
Capitolo 4
Pubblicare dati di MySQL sul Web ..................................77
Uno sguardo d’insieme .................................................................................. 77
Creare un account utente MySQL ................................................................. 78
Connettersi a MySQL con PHP .................................................................... 81
Corso accelerato di programmazione orientata agli oggetti ................... 84
Configurare la connessione .................................................................. 86
Inviare query SQL con PHP.......................................................................... 92
Gestione di risultati ottenuti con SELECT..................................................... 95
Inserire dati nel database .............................................................................. 100
Eliminare dati da un database ....................................................................... 109
Missione compiuta ...................................................................................... 115
Capitolo 5
Progettazione di database relazionali ........................ 117
A ciascuno i suoi meriti ............................................................................... 117
Regola empirica: mantenere separate le entità .............................................. 119
SELECT con più tabelle .............................................................................. 122
Relazioni semplici ....................................................................................... 127
Relazioni molti a molti................................................................................ 128
Uno per molti, molti per uno ...................................................................... 131
Capitolo 6
Programmazione PHP strutturata ............................... 133
File inclusi ................................................................................................... 134
Includere contenuti HTML ............................................................... 134
Includere codice PHP ........................................................................ 136
Tipi di inclusioni ............................................................................... 140
File inclusi condivisi........................................................................... 142
Funzioni personalizzate e librerie di funzioni ............................................... 143
Ambito di variabili e accesso globale .................................................. 146
La struttura in pratica: funzioni ausiliarie per template .................................. 149
La via migliore ............................................................................................ 152
Capitolo 7
Un sistema di gestione dei contenuti (CMS) ............... 155
La prima pagina........................................................................................... 156
Gestione degli autori ................................................................................... 159
Eliminare gli autori ............................................................................ 161
Aggiungere e modificare autori .......................................................... 166
Gestione delle categorie............................................................................... 170
Gestione dei joke......................................................................................... 175
Cercare i joke .................................................................................... 175
Aggiungere e modificare joke ............................................................ 181
Eliminare joke ................................................................................... 192
Riepilogo .................................................................................................... 193
libro_php.indb vi
9/3/2012 6:25:53 PM
Indice generale
Capitolo 8
vii
Formattare il contenuto con le espressioni regolari ....195
Le espressioni regolari .................................................................................. 196
Sostituzione di stringhe con espressioni regolari ........................................... 203
Enfatizzare il testo .............................................................................. 203
Paragrafi ............................................................................................ 207
Collegamenti ipertestuali ................................................................... 209
Mettiamo insieme il tutto .................................................................. 211
Invio di contenuti nel mondo reale .............................................................. 214
Capitolo 9
Cookie, sessioni e controllo d’accesso......................... 215
Cookie ........................................................................................................ 215
Sessioni PHP ............................................................................................... 220
Un semplice carrello della spesa elettronico ........................................ 222
Controllo d’accesso ..................................................................................... 229
Progetto del database.......................................................................... 230
Il codice del controller ....................................................................... 233
Libreria di funzioni ............................................................................ 238
Gestione di password e ruoli .............................................................. 245
Una sfida: la moderazione dei joke ..................................................... 254
L’unico limite è il cielo ................................................................................ 256
Capitolo 10
Amministrazione di MySQL ......................................... 257
Creare copie di backup di un database MySQL ............................................ 258
Creare copie di backup di un database utilizzando phpMyAdmin ....... 258
Effettuare il backup di un database con mysqldump ............................ 259
Effettuare backup incrementali utilizzando i log binari ....................... 260
Suggerimenti per il controllo degli accessi a MySQL ................................... 263
Problemi relativi ai nomi di host ........................................................ 263
Chiusi fuori? ...................................................................................... 265
Indici .......................................................................................................... 266
Indici a più colonne ........................................................................... 270
Chiavi esterne ............................................................................................. 270
La prudenza non è mai troppa ..................................................................... 273
Capitolo 11
Query SQL avanzate ..................................................... 275
Ordinare i risultati delle query SELECT ...................................................... 275
Impostare LIMIT ........................................................................................ 277
Transazioni di database................................................................................. 278
Alias per i nomi di colonne e tabelle ............................................................ 280
Raggruppare i risultati di SELECT .............................................................. 283
LEFT JOIN ................................................................................................ 284
Limitare i risultati con HAVING ................................................................. 288
Riepilogo e letture consigliate ..................................................................... 289
Capitolo 12
Dati binari ...................................................................... 291
Pagine semidinamiche ................................................................................. 291
Gestire il caricamento dei file ...................................................................... 296
Assegnare nomi univoci ai file ............................................................ 299
Inserire nel database i file ricevuti ................................................................ 300
Tipi di colonna per i dati binari ......................................................... 301
Archiviare file .................................................................................... 302
Visualizzare i file archiviati ................................................................. 304
libro_php.indb vii
9/3/2012 6:25:53 PM
viii
Sviluppare applicazioni con PHP e MySQL
Mettere insieme il tutto ............................................................................... 308
Considerazioni sui file di grandi dimensioni ................................................. 313
Dimensioni dei pacchetti in MySQL .................................................. 314
Limitazione dell’uso della memoria in PHP ....................................... 314
Timeout degli script PHP .................................................................. 314
Conclusione ................................................................................................ 314
Appendice A Istruzioni per l’installazione manuale ......................... 317
Windows ..................................................................................................... 317
Installazione di MySQL ..................................................................... 317
Installazione di PHP .......................................................................... 319
OS X .......................................................................................................... 326
Installazione di MySQL ..................................................................... 326
Installazione di PHP .......................................................................... 328
Linux .......................................................................................................... 332
Installazione di MySQL ..................................................................... 333
Installazione di PHP .......................................................................... 336
Appendice B Guida di riferimento della sintassi di MySQL ............. 341
Istruzioni SQL implementate in MySQL ..................................................... 342
ALTER TABLE ................................................................................. 342
ANALYZE TABLE............................................................................ 344
BEGIN.............................................................................................. 345
COMMIT ......................................................................................... 345
CREATE DATABASE ...................................................................... 345
CREATE INDEX............................................................................. 345
CREATE TABLE .............................................................................. 345
DELETE ........................................................................................... 347
DESCRIBE/DESC ........................................................................... 348
DROP DATABASE........................................................................... 348
DROP INDEX ................................................................................. 348
DROP TABLE .................................................................................. 348
EXPLAIN ......................................................................................... 349
GRANT ........................................................................................... 349
INSERT ............................................................................................ 349
LOAD DATA INFILE ....................................................................... 350
OPTIMIZE TABLE .......................................................................... 351
RENAME TABLE ............................................................................ 351
REPLACE ........................................................................................ 352
REVOKE.......................................................................................... 352
ROLLBACK ..................................................................................... 352
SELECT............................................................................................ 352
SET ................................................................................................... 357
SHOW .............................................................................................. 358
START TRANSACTION ................................................................ 359
TRUNCATE .................................................................................... 359
UPDATE........................................................................................... 359
USE .................................................................................................. 360
libro_php.indb viii
9/3/2012 6:25:53 PM
Indice generale
ix
Appendice C Funzioni MySQL ............................................................ 361
Funzioni di controllo del flusso .................................................................... 361
Funzioni matematiche ................................................................................. 362
Funzioni per le stringhe ............................................................................... 365
Funzioni data e ora ...................................................................................... 370
Funzioni varie ............................................................................................. 376
Funzioni usate con le clausole GROUP BY ............................................... 379
Appendice D Tipi di colonne MySQL .................................................. 381
Tipi numerici .............................................................................................. 382
Tipi carattere ............................................................................................... 386
Tipi data/ora ............................................................................................... 391
Indice analitico...................................................................................... 395
libro_php.indb ix
9/3/2012 6:25:53 PM