Appunti di Programmazione

Creative Commons License

Pagina 1 2 3 4 5 6 7 8

Creiamo un DataBase con MySQL e PHP

Mio figlio gioca nella locale squadra di Mini-Basket, e io mi diverto a filmare ogni sua partita, per poi rivedermela con calma e raccogliere in varie Tabelle tutti i dati relativi agli incontri disputati: nome, cognome e numero di maglia dei giocatori, data evento, squadra affrontata, categoria e tipologia del match, risultati parziali e risultato finale, canestri realizzati suddivisi per valore (2 punti e tiri liberi, poiché nel MiniBasket non vi sono canestri da 3 punti), classifica realizzatori e registro presenze. Non si tratta di un referto completo della partita, ma una serie di dati riguardanti soltanto i ragazzi della squadra di mio figlio.

Fino ad oggi ho sempre utilizzato i fogli di calcolo, ma la gestione delle informazioni è soggetta ad errori. Mi riferisco, in particolare modo, all’aggiornamento delle presenze e al totale dei canestri realizzati da ciascun ragazzo, valori che devono essere variati manualmente di partita in partita e purtroppo a volte mi è accaduto di inserire un numero al posto di un altro, costringendomi, quando me ne accorgo, di ricontrollare ogni cosa dall’inizio.

Esempio:
Supponete che abbia appena terminato di riprendere con la telecamera una partita di campionato, quando torno a casa la salvo sul computer e me la riguardo segnandomi in una Tabella vuota i nomi dei bambini della nostra squadra che hanno disputato l'incontro e quanti canestri hanno totalizzato ciascuno di loro suddivisi per valore e per tempo giocato (Tabella Partita).

Tabella Partita

Tabella Partita

Rossi Alessandro (numero maglia 20) ha giocato nel primo tempo realizzando 2 canestri da 2 punti e 2 canestri da 1 punto; poi ha giocato di nuovo nel terzo tempo infilindo 3 canestri da 2 punti.

Al termine della compilazione della Tabella sopra riportata, devo aggiornare il Registro Presenze, la Classifica dei canestri totalizzati e la Tabella Campionato in cui sono riepilogate tutte le partite disputate e i punteggi ottenuti. In questo modo:
Se mio figlio in 7 partite ha realizzato 23 canestri da 2 punti e 9 da 1 punto avrà totalizzato 55 punti. Se durante l’ottavo incontro effettua altri 7 canestri da 2 punti, MANUALMENTE devo aggiornare il valore e portarlo da 23 a 30 lasciando inalterato quello dei tiri liberi (il punteggio totale da 55 a 69 si aggiorna automaticamente). Stessa cosa devo farla per il registro presenze aumentando di 1 il numero di incontri a cui ha presenziato. La medesima operazione devo ripeterla per ogni ragazzo che ha disputato il match.
Poi passo ad annotare le info della partita appena giocata nella Tabella riepilogativa del Campionato.

Registro Presenze e Canestri Realizzati

Registro Presenze e Canestri Realizzati

Tabella Campionato

Tabella Campionato

Come ho scritto in precedenza, questa operazione, non è immune ad errori e, anche se poche volte, mi è accaduto di commetterli. Per esempio ho erroneamente assegnato i canestri realizzati da un giocatore ad un altro; oppure ho segnato la presenza di un ragazzo in una data in cui non era iscritto a referto, o ancora, ho trascritto, nella Tabella Campionato, un risultato parziale errato (esempio 10-18 anziché 10-8), inserendo in questo modo un'incongruenza fra i dati della Tabella Partita e quella di Campionato.

A fronte di questa situazione, e sopratutto perché il numero degli incontri è aumentato considerevolmente (mio figlio insieme a tutti i nati nel 2006 venivano fatti giocare in 2 campionati: Aquilotti e Esordienti), dopo tre anni di Tabelle con i fogli di calcolo, mi sono messo alla ricerca di uno strumento più; specifico per la gestione delle informazioni e ovviamente la scelta è caduta sui DataBase. Possibilmente free.
Dopo avere cercato in rete e provato alcune soluzioni mi sono imbattuto in MAMP, un ambiente di sviluppo PHP e MySQL con server Apache in locale per MAC (possiedo un Mac Book Pro 13” del 2011).
Ho progettato il mio piccolo DataBase e ho iniziato a inserire tutti i dati necessari, però dopo poco ho scoperto che con gli strumenti messi a disposizione dal pacchetto software, non era possibile realizzare alcun tipo di Report né Maschere per l’inserimento dei dati.
Per chi non fosse pratico, i “Report” sono delle schermate riassuntive che raccolgono dati provenienti da Tabelle diverse e formattati sullo schermo nel modo più; idoneo per la comunicazione delle informaazioni . Le “Maschere”, similmente, sono schermate in cui inserire i dati nel modo specifico cosicché attraverso una sola finestra sia possibile inserire info su più; Tabelle.
Come fare dunque?
Dopo vari tentativi di programmazione del mio DB per aggirare il problema, e aver provato qualche software aggiuntivo per la creazione dei Report, ho pensato che potevo usare PHP per realizzare quello di cui avevo bisogno senza usare strumenti esterni.

Progettazione DataBase Basket

Come si può evincere dalle Tabelle sopra riportate, nel mio archivio avevo la necessità di memorizzare le seguenti informazioni:

Numero Maglia, Cognome, Nome, Anno di Nascita (determina la categoria di appartenenza) di ciascun bambino.

Numero Partita, Data, Squadra Affrontata, Categoria (Aquilotti o Esordienti), Tipologia (Amichevole, Campionato, Torneo), Risultati Parziali per ciascun tempo, Risultato Finale, e Numero dei Canestri da 1 e 2 punti suddivisi per tempo giocato da ciascun ragazzo.

Inoltre volevo creare una classifica dei realizzatori, una per ciascuna categoria, così come per il registro presenze. In più, volevo avere una Tabella riassuntiva degli incontri disputati comprensiva dei risultati parziali e finale e un elenco dettagliato delle partite giocate con tutti i bambini che vi hanno partecipato.
Dopo vari tentativi andati a vuoto sono giunto a questa soluzione:

TABELLA GIOCATORI
- Numero Maglia (Chiave Primaria)
- Cognome Giocatore
- Nome Giocatore
- Anno di Nascita

TABELLA CAMPIONATO
- Codice Partita (Chiave Primaria)
- Data Partita
- Squadra di Casa
- Squadra Ospite
- Tipologia (Amichevole, Campionato, Torneo)
- Categoria (Aquilotti, Esordienti)
- Risultato Finale
- Parziale 1° Tempo
- Parziale 2° Tempo
- Parziale 3° Tempo
- Parziale 4° Tempo
- Parziale 5° Tempo
- Parziale 6° Tempo
- Parziale 7° Tempo
- Parziale 8° Tempo

I tempi da giocare sono 6 da 6 minuti per gli Aquilotti e 4 a 8 minuti per gli Esordienti.
Ne ho previsti 8 per inserire i dati relativi ad eventuali tempi supplementari.

TABELLA PARTITA
- Indice (Chiave Primaria)
- Codice Partita (Relazionata con Tabella Campionato)
- Numero Maglia (Relazionata con Tabella Giocatori)
- Canestri 2 Punti 1° Tempo
- Canestri 1 Punti 1° Tempo
- Canestri 2 Punti 2° Tempo
- Canestri 1 Punti 2° Tempo
- Canestri 2 Punti 3° Tempo
- Canestri 1 Punti 3° Tempo
- Canestri 2 Punti 4° Tempo
- Canestri 1 Punti 4° Tempo
- Canestri 2 Punti 5° Tempo
- Canestri 1 Punti 5° Tempo
- Canestri 2 Punti 6° Tempo
- Canestri 1 Punti 6° Tempo
- Canestri 2 Punti 7° Tempo
- Canestri 1 Punti 7° Tempo
- Canestri 2 Punti 8° Tempo
- Canestri 1 Punti 8° Tempo

Pagina 1 2 3 4 5 6 7 8