Newsgroup: it.comp.www.php
Titolo: consiglio aggiornamento classifiche di calcio

Salve a tutto l'ng.
Sono alle prese con la classifica di un campionato di calcio a 7 a gironi.
Ho una tabella Classifica su mysql che contiene tutte le info del caso (nome
squadra, giocate, vinte, nulle, perse, ecc). Il problema sorge con
l'aggiornamento della tabella. Mi spiego meglio.
Vorrei evitare di dover beceramente andare a modificare i campi nella
tabella classifica a mano e quindi l'ideale sarebbe inserire le partite con
i relativi risultati in un form che richiami uno script di aggiornamento
della tabella Classifica. L'aggiornamento è cosa elementare, il mio problema
è il form di inserimento ed il mantenimento della associazione
partite-squadre-risultato : come strutturarlo per inserire partite e
risultati?
Avete qualche idea o suggerimento?
Grazie mille a tutti.
Lex

> Avete qualche idea o suggerimento?
Io ho fatto un sistema simile per la pallavolo
1) crei una tabella con le gare. Ad ogni gara devi associare una gara (es:
id partita se univoco, oppure girone+gara+stagione, ecc.ecc). Sarebbe anche
ottimo se inserissi una chiave per identificare le squadre
2) Inserisci un modulo con un meccanismo di aggiornamento
3) all'invio del modulo viene aggiornato il db gare
4) se l'aggiornamento gare è avvenuto, viene eseguito uno script per
l'aggiornamento della classifica che opera cos':
   - cancella una eventuale riga legata alla partita dalla tabella
classifica (così usi lo script anche per gli aggiornamenti e correzione dei
risultati)
  - inserisci una riga per ciascuna squadra della gara, con i valori che
movimentatno la gara.
Mi spego:
nel risultato della partita 1 del giorne A: squadraa (codice: 1) - squadrab
(codice:2) 3-0 generi 2 record come segue
|idgara|codicesquadra|nomesquadra|punti|giocate|vinte|nulle|perse|golfatti|g
olsubiti|girone|
|1       |                   1|squadraa       |3     |         1|     1|
0 |     0 |        3 |         0  |      A|
|1       |                   2|squadraa       |0     |         1|     0|
0 |     1 |        0 |         3  |      A|
Naturalmente potresti affinare la classifica gestendo la differenza tra gare
in casa e fuori, ecc.ecc.
Ora classifica verrà mostrata da una sql tipo:
select nomesquadra,sum(punti) as punti, sum(giocate) as giocate, sum(vinte)
as vinte,..............
 from classifica
group by nomesquadra (* meglio se codicesquadra e lo inserisci anche in
tabella)
order by sum(punti) desc, (sum(golfatti)-sum(golsubiti)) desc
Spero di esserti stato di aiuto
Andrea



Anche se non sono un espertone la butto lì perché il problema mi piace
(e magari imparo pure qualcosa).
Fai 2 tabelle: "squadre" e "partite".
"squadre"
| id | squadra | giocate | vinte | perse | punti |
"partite"
| id | data | squadra1 | goal_squadra1 | squadra2 | goal_squadra2 |
Dopo aver generato il campionato (cioè dopo aver riempito i campi id,
data, squadra1 e squadra2 di "partite") crei una maschera di
inserimento record in "partite" che richiama un'intera giornata (su
base data o id) in cui devi solo inserire i goal segnati da ogni
squadra in quella partita, dopo di che, in fase di aggiornamento, php
fa tutto il resto andando ad aggiornare di conseguenza anche la
tabella squadre generando dinamicamente classifica, statistiche, etc
etc.
Esempio:
crei una variabile di differenza ($diff, tanto per dire) e le assegni
il valore (goal_squadra1 - goal_squadra2) e nell'aggiornamento fai uno
switch per cui se $diff è positiva significa che ha vinto squadra1, se
è zero che hanno pareggiato e se è negativa che ha vinto squadra2 e di
conseguenza calcola i punti da assegnare alle quadre, e così via per
ogni record di "partite" con quella data o quell'id.
Da un altro punto di vista, forse non c'è neanche bisogno di creare i
campi | giocate | vinte | perse | punti | in "squadre" perché puoi
generare tutto dinamicamente lì per lì.
Vabè, ci ho provato.

Ciao,
Leningrad Cowboy wrote:
io la penserei in maniera differente....
visto che il numero di partite giocate, vinte e perse , goal fatti e 
subiti sono tutti campi calcolati non ha senso dal punto di vista DB 
creare una tabella che contenga questi dati...
è sufficiente avere:
1) tabella squadre (IDSquadra, NomeSquadra)
2) tabella incontri (IDIncontro,IDSquadra1,IDSquadra2, GoalSquadra1, 
GoalSquadra2... eventuali altre info tipo arbitro, data incontro e 
quello che ti pare)
La squadra 1 è quella che gioca in casa, altro non serve
volendo una variante potrebbe essere l'aggiunta della tabella calendario:
tabella calendario (IDCalendario, DataIncontro, IDSquadra1, IDSquadra2),
in questo caso la tabella incontri avrà
tabella incontri (IDIncontro, IDCalendario,GoalSquadra1, GoalSquadra2)
Tutto il resto viene da sé con un po' di SQL....
Ciao Gianfranzo
-- 
ICQ#: 21258924 Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra
"dopo tutto, gli angeli non sono altro che dei volatili" D. Pennac

tabella incontri (IDIncontro, IDCalendario,GoalSquadra1, GoalSquadra2)
A me sembra ridondante rispetto alla mia idea, ma può darsi mi sbagli.
Come ho detto non sono esattamente un guru.

 | id | squadra | giocate | vinte | perse | punti |
in questo caso la tabella squadre è scorretta dal punto di vista DB 
visto che contiene campi calcolati (giocate|vinte|perse|punti manca 
pareggi ) e questo mi ha indotto a mangiare anche il non :)
la tabella calendario l'ho inserita semplicemente perché normalmente il 
calendario è definito all'inizio stagione e potrebbe rendere più 
semplice l'inserimento dei risultati:
in pratica la domenica X vengono elencati gli incontri di quella 
giornata a calendario e con una sola query inserisci tutti i risultati
come hai giustamente scritto anche tu (anche se non ho ben capito perché 
dovrebbero essere generate a priori tutte le partite lasciando i campi 
reti vuoti fino al momento in cui la partita non ha luogo con 7 squadre 
probabilmente non ha alcun effetto, ma con 24 squadre, un po' di serie e 
gironi....).



Preziosissimo come tutti qui nel ng.
Grazie
Lex

 "dopo tutto, gli angeli non sono altro che dei volatili" D. Pennac
P.s. carino il sito e anche interessante. l'ho segnalato ad un amico
appassionato di acquari, anche se credo che al momento si sia dedicato agli
acquari tropicali in acqua salata (se si dice così...perdonami ma non ne
capisco nulla :-) )

 capisco nulla :-) )
si dice tropicali marini :) non sono però la mia passione, preferisco 
tropicali d'acqua dolce :)
Grazie per i complimenti.
Ciao Gianfranzo


 Ciao Gianfranzo
Ciao
Lex