Come realizzare delle select concatenate con PHP e jquery?

Documenti analoghi
Come creare un modulo per Joomla?

Come trasformare Nivo Slider in un widget per Wordpress?

Come realizzare un template Joomla? (prima parte)

Joomla: come inserire una galleria di immagini nel nostro sito?

La strutturazione dei database: Il modello relazionale (3/3)

WooCommerce: Configurare le aliquote di imposta Standard

ERMES DIRECT MARKETING ELETTRONICO E PERSONALIZZATO

Come aggiungere al nostro sito web il login basato su Facebook

WooCommerce opzioni spedizione: spedizione gratuita e tariffa unica internazionale

CENTRO MUSICALE. Corso di laurea: informatica umanistica. Progetto esame per il corso di Progettazione e Laboratorio web. Studente: Giorgio Mauro

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

Esercitazione Google Maps

Appunti della lezione di Database del 3/11/2016 (pomeriggio)

Impaginare con InDesign: le tabelle

WooCommerce 2.6: configurare le zone e i metodi di spedizione

5 Invio di Integrazioni e Conformazioni (per pratiche già trasmesse)

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Corso sul PACCHETTO OFFICE. Modulo Access

Relazione sul progetto CronoMeteo: Un particolare viaggio nel tempo.

WooCommerce: come aggiungere attributi per i prodotti

Come realizzare gratis e in breve tempo il vostro negozio online? Joomla & Virtuemart

La stampa unione in Word 2007

CORSO DI PROGRAMMAZIONE

La strutturazione dei database: la normalizzazione

Compilazione Programma Musicale Digitale. Tutorial MioBorderò- Direttore dell Esecuzione

SERVIZIO DI HELPDESK - ISTRUZIONI PER L USO

Connessione con MySQL

Tutorial Calcolatrice

I temi child permettono di personalizzare un tema senza dover modificare il tema originale.

Canva: come creare una grafica accattivante.

Il tag form indica l'inizio della costruzione di un modulo. Necessita del tag di chiusura

Guida a WordPress. 1. Iscrizione a Wordpress

Close To Me manuale d'uso. 1. Introduzione.

Advanced Scratch: Gatto Raccogli Stelle

Esercizi Scratch: Sensori

In-app billing per comuni mortali puntata 1

MANUALE DI UTILIZZO WINCAR PER GESTIONE PRATICHE FIAT

Come creare una presentazione di immagini con NavImm

EURITMO. Manuale di utilizzo. IN.TE.S.A. S.p.A. V 1.0.0

Modulo o Form in Html

Ciascun Fornitore di beni e servizi puo candidarsi spontaneamente per le Categorie merceologiche che Sogin mette a disposizione.

Android lezione 9 Le listview

Tesina esame Programmazione di Sistemi Mobile Realizzato da Roberto Giuliani Matricola icloud. Inserimenti, modifiche e cancellazioni

7 - Calibrazione di una mappa in formato raster per n punti

MANUALE DI CARICAMENTO DELLE EPIGRAFI

Tabella dei contenuti

Knowledge base. Per accedere alla tabella, scegliere dal menù 9-Tabelle > Tabelle Bolle Doganali > Tributi

WORD PROCESSING.

Come trasferire il vostro sito in Joomla da locale in remoto?

Impostazioni Gigaset T440/T640 PRO

WooCommerce: come creare un marketplace dove i venditori pagano una fee una tantum per vendere

Guida rapida. Indice: Creare un progetto Gestire e modificare un progetto Visualizzare i risultati di un progetto o una valutazione

Eurapoint Dealer. Manuale d uso

Trame di Illustrator: come colorare un disegno? (parte 1)

Qual è l editor migliore con cui scrivere il proprio codice? Ecco una lista dei più utilizzati dai webdesigner

Come misurare e valutare il successo di un sito dopo il lancio?

Con un DB vuoto (non proprio visto che alcuni campi sono valorizzati di default) il sito si presenta come nell immagine 1.

Corso sul PACCHETTO OFFICE. Modulo Access

WooCommerce: come creare un prodotto di tipo semplice sul tuo store

WordPress: Come creare una rete di siti?

Informatica A.A. 2004/2005 Esempio di Progetto (Fumetto) 1/1 FUMETTO ANIMATO

REGISTRO DELLE IMPRESE

Edilim Realizzare libri multimediali interattivi. Ivana Sacchi

Microsoft Outlook Di Nunziante Esposito. `*************` Quinta parte: Come gestire la rubrica (contatti). `***********`

Phpmyadmin. Creazione Database

GUIDA APPLICATIVA LIBRO UNICO - DELEGA TENUTA INTERMEDIARIO

14Ex-Cap11.qxd :20 Pagina Le macro

Access 2007 Colonna di ricerca

MANUALE UTENTE UPLOADER JAVA

WooCommerce: come configurare le categorie e i tag dei prodotti

Sesta parte: Come creare una lista di distribuzione e come gestirla dalla rubrica.

Modifica Pagina Web. Pulsante LogOut: cliccare per uscire dall'ambiente di amministrazione

COS E? COME? SELEZIONARE LA PRESTAZIONE SANITARIA CHE DEVI FARE SCEGLIERE LA STRUTTURA CONVENZIONATA INVIARE UNA RICHIESTA DI APPUNTAMENTO

Cloud GDrive, Dropbox

Gestire le Spese Famigliari e personali in modo efficace Parte 2 - aggiungere tabelle statistiche automatiche

13 Le funzioni di ricerca e riferimento

PORTALE PARERI TECNICI MANUALE ENTI E LOTTIZZANTI

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Infor LN Guida utente per Cataloghi prodotti

Manuale utente PIATTAFORMA WEB M3S

ARCHITETTURA FISICA DEL SISTEMA

Manuale per l utilizzo del backend FIDAL.IT. Versione 1.0

Visual basic base Lezione 13. Ancora su ListBox e cicli

Cloud GDrive, Dropbox

OPERAZIONI PER INSIEMI DI IMPIANTI

GUIDA ALL INSERIMENTO DI TESTI E DOCUMENTI NEL NUOVO SITO DEL COMUNE DI CERVIA Versione 1.0

ISTRUZIONI IN BREVE SULL USO DEL SITO JOOMLA FASE 1 : REGISTRARSI

GUIDA APPLICATIVA NUMERAZIONE UNITARIA INTERMEDIARIO

Guida alla variazione dei dati e alla compilazione della Scheda per il mantenimento requisiti di iscrizione nel Registro regionale

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST

Tutorial Applicazione PdM

WEBMAIL ODCECTA.IT. Guida all uso

Documentazione di Powerful Form Generator

2.4. Creare ed operare con le query

WooCommerce: vendere fiori con servizio di consegna a domicilio e dedica (come Interflora)

GIORNALE dell INSEGNANTE

Area Gestione Reddituale 1. Campagna RED Italia. Manuale operativo della procedura di acquisizione

Piattaforma gare ISTRUZIONE OPERATIVA UTILIZZO PIATTAFORMA TELEMATICA GARE. Pag. 1

GUIDA APPLICATIVA. Denuncia Nuovo Lavoro Temporaneo INTERMEDIARIO VERSIONE 2.0

Collocamento ARCHIVI DI BASE PRATICHE COLLOCAMENTO COLLOCAMENTO PRATICHE

Transcript:

Come realizzare delle select concatenate con PHP e jquery? In questo articolo tratteremo del concatenamento di select detto anche select a cascata. Si tratta di un procedura che possiamo trovare spesso nel web e che consiste nel dare all'utente la possibilità di trovare un dato specifico attraverso alcuni passaggi: in pratica scegliendo una categoria nella prima select, la seconda verrà popolata con i dati relativi alla categoria scelta. Si pensi ad esempio ad una prima select dove è possibile scegliere tra moto e automobili; una volta selezionata la categoria automobili si dovrà popolare la seconda select con le marche disponibili di automobili. Selezionando infine una marca, la terza select verrà popolata con i modelli disponibili per questa marca. In questo articolo vedremo un esempio molto semplice ma che fornirà le basi per comprendere la procedura da attuare anche in caso di cascate molto più complesse. Quello che realizzeremo è visionabile in questa pagina di esempio. Premetto che l'argomento è piuttosto avanzato e presuppone delle conoscenze medio-avanzate di PHP e di MySql. Come puoi vedere, l'esempio è molto minimalista. Una prima select che richiede la categoria, nella quale figurano: colori, fiori e attrezzi. Ed una seconda select, nella quale una volta selezionata la categoria, troveremo un elenco di voci riguardanti quella categoria. Siccome nel caso reale i dati saranno molti di più e molto più complessi, immaginiamo ad esempio la classica cascata regione/provincia/comune, utilizzeremo un database MySql. A proposito di questa cascata: è così classica e richiesta, che abbiamo deciso di metterla a disposizione come risorsa gratuita. Il file da scaricare contiene l'esempio già pronto (come questo) e, molto utile, il database con le tre tabelle (regioni, province e comuni). Ma torniamo al nostro tutorial ed iniziamo a creare la struttura del database. Creare la struttura del database Creeremo dunque una tabella denominata categorie con i campi id_cat nome Ed un'altra tabella denominata tipo con i seguenti campi id_tipo id_cat nome In questo modo possiamo stabilire la corretta relazione tra le tabelle 1 / 6

Crea dunque il database selectexample ed esegui la query che ho preparato per facilitarti il compito. Oltre a creare le tabelle necessarie, inserisce anche i dati che ci serviranno per l'esercizio. Preparazione della pagina principale Passiamo ora a preparare il file principale ovvero select.php Come vedi ho incluso jquery. Infatti andremo a popolare la seconda select grazie ad una chiamata ajax. Ho dichiarato un form contenente la prima select senza nessuna option e la seconda select contenente unicamente un'option, ovvero "scegli ". Infine abbiamo un un elemento con id result nel quale alla fine inseriremo la scelta che è stata effettuata. Creare il file con i parametri di connessione 2 / 6

Creaimo ora il file db_config.php che conterrà i parametri di connessione al database. Naturalmente dovrai assegnare i parametri del tuo database. Il file php per la gestione delle richieste Iniziamo a questo punto a creare la classe PHP che avrà il compito di gestire l'elaborazione delle informazioni e di restituire i risultati. Il file si chiamerà select.class.php. Iniziamo con il dichiarare la classe, in seguito la proprietà $conn che conterrà la risorsa di connessione al database, ed infine il metodo costruttore, che per il momento lasciamo vuoto. Ora scriviamo il metodo per la connessione al database. Come vedi, dopo avere incluso i parametri procedo con la connessione e quindi con la selezione del database. Ora procediamo con la creazione del metodo ShowCategory() che sarà responsabile di creare le option della prima select. Questo metodo verrà eseguito direttamente al caricamento della pagina, vedremo in seguito come. Come puoi vedere eseguo una query che mi seleziona tutte le righe della tabella categorie. In seguito inserisco nella variabile $category la prima option, contenente un messaggio che invita l'utente ad effettuare una scelta. Infine aggiungo alla variabile $category tante option quante le voci presenti nella tabella, avendo cura di indicare come value l'id della categoria e come contenuto del tag option il nome stesso della categoria. Ora passiamo a scrivere l'ultimo metodo che si occuperà di intercettare il valore passato dalla prima select (l'id della categoria) e di popolare la seconda in base al valore passato dalla prima In questo caso tramite la query andremo a selezionare le righe della tabella tipo che hanno come id_cat il valore passato tramite POST (questo valore sarà passato con una chiamata ajax, ma non l'abbiamo ancora scritta, poi vedremo). Il seguito è del tutto simile al metodo precedente. Ora, visto che qualunque operazione svolga questa classe è necessaria la connessione al 3 / 6

database, possiamo invocare il metodo DbConnect() direttamente nel metodo costruttore. Inoltre possiamo, per comodità, instanziare la classe direttamente in questo file. Ed ecco dunque la classe completa: Ora torniamo a lavorare sul file principale (select.php) Al momento che questo file viene caricato dovrà essere popolata la prima select. Lo faremo inserendovi il metodo ShowCategory() in questo modo: Come vedi, includiamo la classe già istanziata nell'oggetto $opt. In seguito, tra i tag select, stampiamo il risultato del metodo ShowCategory(), che saranno le option correttamente popolate con i valori presi dal database. Puoi provare lo script e constatare che la prima select si popola correttamente. Implementare le funzionalità ajax Ora, quello che dobbiamo fare tramite jquery è intercettare quanto verrà scelto in questa select ed inviare il dato (l'id della categoria) al metodo ShowType() che ci restituirà le option da inserire nella seconda select. Il tutto naturalmente con una chiamata ajax. Il codice (come sempre con jquery è molto semplice) è il seguente (che va inserito nella funzione $(document).ready). Cosa significa? Al verificarsi dell'evento change nella select con id categorie, esegui questa funzione che: Valorizza la variabile id con l'attributo value dell'opzione selezionata. Invia tramite POST la variabile id al file select_type.php (che non abbiamo ancora scritto, ma lo faremo subito). Quanto restituito da questa chiamata inseriscilo nella select con id tipo. Creare un file di servizio Ovviamente il file select_type.php sarà un file di servizio che semplicemente invocherà il metodo ShowType(). 4 / 6

A questo punto puoi provare lo script. Ora selezionando una categoria, la seconda select si popolerà correttamente. Migliorare l'usabilità Adesso facciamo una piccola aggiunta. Ricordate la questione sull'usabilità esposta nel precedente articolo su ajax? Bene, credo che la seconda select vada disabilitata al caricamento della pagina. All'inizio della chiamata si potrebbe sostituire "scegli" con "attandere...". Una volta che la chiamata è stata eseguita, la select può essere riabilitata. Questo é corretto dal punto di vista dell'usabilità. Modifichiamo dunque il codice in questo modo: Adesso non ci resta che stabilire cosa succede quando si preme su invia. Nel nostro caso scriveremo la scelta effettuata nell'elemento #result. Dovremo anche tenere conto (usabilità) di cosa dovrebbe succedere se il bottone invia viene premuto prima che siano state fatte tutte le scelte. Questo è il codice che in seguito spiegherò Al verificarsi dell'evento submit, prendiamo il valore dell'attributo value delle due select. Se questi valori sono entrambi maggiori a zero (quindi è stata fatta una scelta nelle due select), prendiamo il contenuto della select con id tipo e lo stampiamo nell'elemento #result. Se invece non sono state fatte le due scelte, nell'elemento #result stampiamo il messaggio di errore. Ecco select.php completo con tutte le modifiche. Qui puoi scaricare un esempio dello script applicato alle regioni, province e comuni, uno dei casi più comuni di utilizzo di select concatenate. Conclusione In questo articolo abbiamo visto un'applicazione di ajax molto utile e richiesta. Trattandosi di una funzionalità avanzata è chiaro che può risultare complessa a chi non ha una certa padronanza di php, ma d'altra parte non si può fare più semplicemente di così. Bisogna comunque dire che, per una corretta applicazione dei criteri di accessibilità, dovremo prevedere una soluzione che permetta l'utilizzo di questo sistema, anche senza l'utilizzo di 5 / 6

Powered by TCPDF (www.tcpdf.org) Your Inspiration Web javascript (e quindi di jquery). E tu cosa ne pensi? Hai trovato questo articolo troppo complesso? Utilizzerai questi principi nei tuoi siti? 6 / 6