Nella realizzazione di una pagina web, soprattutto se si tratta di un'applicazione, può essere molto utile richiamare delle funzioni specifiche usando il menu contestuale. Normalmente nella pagina in qualunque punto si clicchi col tasto destro del mouse verrà attivato il menu contestuale di default del browser. Ma se noi vogliamo che, cliccando col tasto destro del mouse, si attivi un menu contestuale con funzioni personalizzate e specifiche della nostra applicazione, ecco che ci viene in aiuto javascript. Di per sé la personalizzazione del menu contestuale non è un'operazione particolarmente complicata. Se cercate su internet potrete certamente trovare soluzioni persino sin troppo sofisticate, ma che risolvono sempre e solo il problema generale: un menu contestuale personalizzato per l'intera pagina oppure specifico per una zona della pagina. Bene, direte questo basta, perché se ho bisogno di voci diverse in aree diverse, basterà duplicare il codice relativo alle diverse zone. Ma se non sapete quanti siano gli elementi sui quali il tasto destro del mouse deve presentare un menu personalizzato che agisca specificatamente su quell'elemento e non su altri? A titolo di esempio, se abbiamo una galleria di immagini che varia nel numero a seconda della pagina e, se per esempio nel menu contestuale vogliamo voci tipo 'Cancella questa immagine', come possiamo scrivere una routine che funzioni indipendentemente dal numero delle immagini?

La velocità di esecuzione dei nostri scripts è sempre più importante per la fruizione dei servizi offerti ed inoltre influisce anche sui parametri di indicizzazione di Google. Di conseguenza se la normale interazione dell'utente costringe lo script ad accedere al database per aggiornare una parte della pagina, poter aggiornare senza ricaricare l'intera pagina diventa assai utile. Un esempio classico è quando abbiamo un form di selezione dati che devono poi essere elencati all'interno della stessa pagina. Anziché usare 'action' nel form per far ricaricare la pagina php si può usare uno script php separato che carica i dati dal nostro database inserendo nella pagina una chiamata Ajax allo stesso script. Vediamo come possono essere usati Javascript e Ajax in un esempio come quello indicato precedentemente.
Chiunque voglia informazioni relative ad un file video, sa che con il programma open source Mediainfo può ottenere tutte le informazioni relative al formato video, risoluzione, codec ecc. e così analogamente tutte le informazioni relative alle tracce audio. Tuttavia se volete determinare queste informazioni all'interno di una vostra applicazione, è necessario ricorrere ad una libreria specifica per il linguaggio scelto. Qui vi descriviamo una soluzione PHP che utilizza la libreria di classi GetID3. Sul sito web trovate tutte le specifiche e la descrizione delle potenzialità di questa libreria relativamente ai formati audio e video riconosciuti. La prima operazione da compiere è ovviamente scaricare la libreria ed includere la cartella 'getid3' con tutti i moduli nella vostra applicazione php. L'esempio che vi forniamo in questa pagina è relativo alle informazioni di un file video di formato mkv.

24.3.4  Eliminazione records del database

Continuamo il nostro corso PHP vedendo come eliminare dei records dal database. Il comando da usare per eliminare un record dal database è DELETE. La sintassi che troverete sul manuale è la seguente:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[PARTITION (partition_name,...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
Anche in questo caso tuttavia il più delle volte si userà solo la forma semplificata:
DELETE FROM tbl_name
WHERE nome_colonna = valore

24.3.3 Aggiornamento records del database

Una volta che il vostro database è popolato con le informazioni precedentemente inserite capiterà di doverle modificare. Ad esempio si dovrà modificare un indirizzo di un cliente, un numero di telefono ecc. Per aggiornare uno o più records di un database MySQL si usa il comando UPDATE. La sintassi che troverete sul manuale è riportata di seguito:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
24.3.2 Inserimento di nuovi records nel database Per inserire uno o più records in una tabella di database si usa il comando INSERT. La sintassi del comando è la seguente:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
Anche per INSERT così come per la SELECT l’uso comune del comando è assai più semplice di quel che appare dalla sintassi riportata dal manuale. La forma più comune di INSERT è la seguente:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
Per utilizzare un database MySQL all’interno di una pagina PHP, la prima cosa da fare è quindi richiamare il nostro file di configurazione descritto precedentemente, mediante il quale si effettuerà l’accesso al database. Se utilizziamo Mysqli scriveremo quindi all’inizio di ogni pagina che dovrà accedere al database :
<?php
session_start();
include_once("includes/ config_mysqli.php ");
?>
Se invece utilizziamo l’estensione PDO scriveremo:
<?php
session_start();
include_once("includes/config.pdo.php");
?>
A questo punto saremo abilitati ad effettuare le query necessarie al funzionamento del nostro programma.
24.3  Accedere a MySQL da PHP Per creare il nostro database sul nostro servizio di hosting bisognerà seguire i seguenti passi in sequenza:
  1. Creazione del Database
  2. Crezione nuovo utente
  3. Creazione password utente
  4. Associazione utente a database
  5. Assegnazione diritti all’utente
E’ sufficiente cliccare su ‘Creazione database’ nel proprio pannello di controllo e poi seguire gli step come richiesti dal sistema. Un esempio dei primi 4 passi del processo è mostrato nelle due figure seguenti. Creazione nuovo database Creazione nuovo database