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