![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ informatica triennale (http://www.dsy.it/forum/forumdisplay.php?forumid=211)
-- progetto da consegnare a settembre. (http://www.dsy.it/forum/showthread.php?threadid=38969)
progetto da consegnare a settembre.
Io sono alle prime armi cn php e mysql; e devo consegnare il progetto a settembre..
Sono a buon punto ma vorrei avere un parere sulla gestione dei turni.
Mi spiego meglio: Il testo dice ke un giocatore quando non è di turno può visualizzare i suoi dati (la nazione, quanti pi, quante citta e cosi via...) quindi nn lo posso sloggare ma allo stesso tempo gli devo togliere la possibilità d fare azioni..
Cosa avete fatto voi?
GRAZIE
un bel flag sul db (attivo, non attivo)??? se attivo è il suo turno altrimenti vede solo le statistiche.
__________________
by Ð@rk§h@ÐØw
ok ma quindi tu nn hai considerato i connessi e i nn connessi ma semplicemente tutti..
x fare finire il turno hai messo un semplice bottone o anke una scadenza d tempo della sessione?
Originally posted by carla86
ok ma quindi tu nn hai considerato i connessi e i nn connessi ma semplicemente tutti..
x fare finire il turno hai messo un semplice bottone o anke una scadenza d tempo della sessione?
__________________
by Ð@rk§h@ÐØw
Io ho fatto in questo modo:
Il giocatore fa il login e si trova in modalità di sola visualizzazione. Se vuol iniziare il turno preme il bottone "inizio turno". Se non c'è nessun altro giocatore attualmente in turno comincia, altrimenti rimane in coda fino a quando il giocatore che è in turno preme il bottone "termina turno".
Posso confermarti che Montanelli è abbastanza flessibile su questa cosa dei turni, perchè non è prettamente inerente all'sql. Un bottone "termina turno" va più che bene.
@darkshadow --> Intendevo ke tu hai un solo flag attivo/nn attivo;
nn hai anche un flag connesso nn connesso.
Semplicemente su tutti quelli registrati controlli il flag attivo non attivo...
Io invece volevo mettere un flag x i connessi xo' ho paura d incasinarmi la vita!
@R1cky --> grazie!! invece su cosa montanelli è intransigente!
GRAZIE A TUTTI!!!!!
Originally posted by carla86
@R1cky --> grazie!! invece su cosa montanelli è intransigente!
una domanda forse un po banale ma ve la faccio lo stesso.
Per le citta: Voi considerate il nome come unico a livello globale o solo a livello di nazione??
la metto in modo diverso: nel vostro db possono esistere citta con lo stesso nome ma di nazioni diverse??
stessa domanda per gli eserciti.
__________________
by Ð@rk§h@ÐØw
nel mio db no.. nel senso ke era uno dei primi problemi ke mi ero posta, sia x quanto riguarda i nomi d citta sia x quanto riguarda i nomi degli eserciti e avevo chiesto a montanelli.
La sua risposta è stata ke il nome deve essere unico, deve identificare la città..
quindi unico a livello globale??
__________________
by Ð@rk§h@ÐØw
si unico a livello globale, tant'è ke l'ho scelto come chiave primaria.
mi sono appena messa su i trigger e le funzioni (ho fatto prima la parte web) ma ho dei dubbi:
1. nelle funzioni sql nn posso usare le tuple NEW e OLD, se nn ho capito male le posso usare solo nel trigger, giusto?!
2. ma nel trigger nn posso dichiarare variabili, vero?
3. nei trigger nell'if posso avere più d un'istruzione?
4. un utente sposta i pi dalla nazione alla citta. come faccio a fare partire un update su tutte e due le tabelle?
se qualcuno ke ha gia consegnato potesse mettere un esempio sarebbe molto utile..
grazie
1. Da quel che mi risulta no.
2. Si, si possono dichiarare.
3. Si, è come nei normali linguaggi di programmazione puoi usare i connettivi AND OR e la negazione (Not).
4. Prima controlli che i dati inseriti nella tabella che ha attivato il trigger siano giusti poi al suo interno fai una normale update nella tabella nazione per aggiornare (aggiungere/togliere) i PI assegnati alla città.
__________________
by Ð@rk§h@ÐØw
scusami ti scrivo un trigger che ho provato a inserire e ke mysql mi da errore d sintassi:
(ho una tabella citta e una tabella nazione)
create trigger prova
before update on citta
for each row
begin
declare diff integer
declare nome varchar(20)
if new.vi>old.vi then
diff=new.vi-old.vi
nome=nazione
update nazione set pi=pi-diff where nomenazione=nome
update citta set new.ab=old.ab+3 and new.ra=old.ra-3 and new.rn=old.rn-3
endif
end;
mi sai dire se è corretto? grazie
che errore ti da??
__________________
by Ð@rk§h@ÐØw
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'end'
at line 7
xo' forse ho trovato ke sia il delimiter ke mi sono dimenticata e poi cn end if.
ho anche un'altra domanda, scusa ke t sto subissando d domande ma è la prima volta ke metto mano su mysql:
in un campo posso aggiungere una percentuale? ossia x esempio:
set new.ab=old.ab+10%;
??
grazie ancora...
direi di no.. penso ke la percentuale la devi calcolare. o al massimo se esiste usare una funzione ke te le calcola.
cmq io non sto usando mysql.
__________________
by Ð@rk§h@ÐØw
ma quindi tu x fare gli aumenti metti direttamente il numero?!?!
Io volevo usare la percentuale xke volevo aumentare i valori in base a quanti pi spostava...
anchio uso le percentuali.. quello che volevo dire è che non si può fare...
colonna = colonna + 10%
quel 10% lo devi calcolare
non so per esempio dichiari una funzione che ti calcola la percentuale
e quindi fai : colonna = colonna + funzionePercentuale()
__________________
by Ð@rk§h@ÐØw
o sono diventata pazza o nn arrivo a determinate cose..
delimiter //
create function percentuale(integer val, integer percento) return integer as
begin
declare risultato integer;
risultato = (val*percento)/100;
return risultato;
end;
//
cosa c'è d sbagliato? x qaunto ho cercato su internet (in cui nn ci sono esempi concreti ma parla solo d sintassi..) dovrebbe essere giusto..
Originally posted by carla86
o sono diventata pazza o nn arrivo a determinate cose..
delimiter //
create function percentuale(integer val, integer percento) return integer as
begin
declare risultato integer;
risultato = (val*percento)/100;
return risultato;
end;
//
cosa c'è d sbagliato? x qaunto ho cercato su internet (in cui nn ci sono esempi concreti ma parla solo d sintassi..) dovrebbe essere giusto..
__________________
by Ð@rk§h@ÐØw
mysql> create function percentuale(integer val,integer percento) returns integer
as
-> begin
-> declare risultato integer;
-> set risultato=(val*percento)/100;
-> return risultato;
-> end;
-> //
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'integ
er val,integer percento) returns integer as
begin
declare risultato integer' at line 1
questo è ciò ke faccio in mysql tralatro cn l'utente root quindi proprio nn capisco dov'è l'errore...
mi sa ke mi toccherà inviare una mail a montanelli e chiedergli un colloquio,altrimenti me lo sogno d consegnare il progetto..
spero tu sia messo meglio..
grazie dell'aiuto!
delimiter //
create function percentuale(integer val, integer percento) returns integer as
begin
declare risultato integer -> Il ; non ci va nella declare
SET risultato = (val*percento)/100;
return risultato;
end
//
__________________
by Ð@rk§h@ÐØw
niente da fare anche togliendo il punto e virgola nn funziona uguale... sempre stesso errore..
Che editor usi?
Ti consiglio di scaricare http://www.webyog.com/en/downloads.php#sqlyog, è molto comodo.
Comunque se vai da montanelli non dirgli che hai fatto prima la parte web e poi la parte db altrimentti tin inforca ![]()
no beh
cmq prima d andare faccio anke gli altri trigger
cosi gli chiedo xke nessuno va..
cmq come editor uso scite..
l'errore ke mi da è sempre questo.. ma nn è ke ce da mettere qualche cosa tra apici??
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'integ
er val,integer percento) returns integer as
begin
declare risultato integer' at line 1
EVVAIIIII
C'E' L'HO FATTAAAAA
era un problema d parametri..
la pubblico in caso possa servire a qualcuno..
create function percentuale (val integer,percento integer) returns integer
begin
declare risultato integer;
set risultato=((val*percento)/100);
return risultato;
end;
Originally posted by carla86
scusami ti scrivo un trigger che ho provato a inserire e ke mysql mi da errore d sintassi:
(ho una tabella citta e una tabella nazione)
create trigger prova
before update on citta
for each row
begin
declare diff integer
declare nome varchar(20)
if new.vi>old.vi then
diff=new.vi-old.vi
nome=nazione
update nazione set pi=pi-diff where nomenazione=nome
update citta set new.ab=old.ab+3 and new.ra=old.ra-3 and new.rn=old.rn-3
endif
end;
mi sai dire se è corretto? grazie
__________________
I wish for this night-time to last for a life-time
la new la puoi usare x la insert e x l'update.
la old la puoi usare x l'update e x la delete.
ok, buono a sapersi che lì funziona
come non detto, funziona così anche qui, ora mi chiedo
"cosa diavolo avrò fatto per farmi credere che non fosse così?" >_<
__________________
I wish for this night-time to last for a life-time
voi cosa avete usato o cosa userete x fare lo schema ER da consegnare al prof? lo fate a mano (tanto va consegnato cartaceo) o lo fate con qualche programma particolare??
grazie.
x ora l'ho fatto su carta.
Una domanda...
cosa fate nel caso in cui una naziona vada in deficit?? cioè se scende sotto i -2000 PI.
1) eliminate la nazione e quindi anche tutte le citta/strade/eserciti da lui create?
2) eliminate la nazione e mette null in tutti i suoi riferimenti??
il giocatore direi che non va eliminato per evitare di rifare la registrazione.
__________________
by Ð@rk§h@ÐØw
io cancello la nazione cn tutte le citta e gli eserciti.
le strade onestamente le lascio xke nn c'avevo pensato..
cancello il giocatore (e a cascata sparisce tutto il resto)
__________________
I wish for this night-time to last for a life-time
Originally posted by carla86
voi cosa avete usato o cosa userete x fare lo schema ER da consegnare al prof? lo fate a mano (tanto va consegnato cartaceo) o lo fate con qualche programma particolare??
grazie.
__________________
I wish for this night-time to last for a life-time
un altra domanda voi come fate il meccanismo d premiazione, penalizzazione?? nel senso ke io nn riesco a mantenere il valore dei vecchi abitanti e dei vecchi rn quindi quando vado a cercare d calcolare se abitanti ed rn sono cresciuti nn riesco...
da premettere ke io per capire se un utente è connesso ho un campo nella tabella nazione e x capire quando sei d turno ho un altro campo sempre nella tabella nazione (prima erano nella tabella giocatore ma mi incasinavo d più la vita..).
quindi al trigger io faccio controllare se new.attivo=0 and old.attivo=1 vuol dire ke ha terminato il turno e devo calcolargli il premio ma nn so come controllare l'incremento o il decremento degli abitanti e delle rn.
grazie.
Io all'inizio del turno memorizzo nella tabella "turni" i valori iniziali degli abitanti e delle risorse naturali. Al termine del turno faccio il confronto con i nuovi valori raggiunti.
Anch'io ho una domanda...
Ma come avete fatto a calcolare le varie strade esistenti e i punti movimento necessari allo spostamento? Io proprio non riesco e penso che lo consegnerò così com'è... :-(
probabilmente da qualche parte ce gia scritto...
posso in qualche modo da php richiamare le funzioni d mysql ke mi sono creata io?
se si come posso fare?
e posso mettere il risultato d questa chiamata in qualche variabile php?
grazie!!
Originally posted by marcooo
Io all'inizio del turno memorizzo nella tabella "turni" i valori iniziali degli abitanti e delle risorse naturali. Al termine del turno faccio il confronto con i nuovi valori raggiunti.
Anch'io ho una domanda...
Ma come avete fatto a calcolare le varie strade esistenti e i punti movimento necessari allo spostamento? Io proprio non riesco e penso che lo consegnerò così com'è... :-(
PARLO ANCORA DELLA STORIA PREMIAZIONE/PENALIZZAZIONE
Originally posted by marcooo
Io all'inizio del turno memorizzo nella tabella "turni" i valori iniziali degli abitanti e delle risorse naturali. Al termine del turno faccio il confronto con i nuovi valori raggiunti.
Originally posted by carla86
probabilmente da qualche parte ce gia scritto...
posso in qualche modo da php richiamare le funzioni d mysql ke mi sono creata io?
se si come posso fare?
e posso mettere il risultato d questa chiamata in qualche variabile php?
grazie!!
__________________
I wish for this night-time to last for a life-time
Originally posted by carla86
ma quindi tu fai una tabella turni apposta? e come la metti nello schema er?
xke x come ho fatto io nn mi serve nessuna tabella in più x calcolare i turni...
ma poi nn so come rimmetterli in una funzione mysql o meglio nn so come fare il trigger che li aggiorni automaticamente se li prendo da php... uff
__________________
I wish for this night-time to last for a life-time
per gli scontri ho moltiplicato
(atk.va * atk.truppe) - (def.vd * def.truppe)
più un [-15,+15] %
è ho ragionato sul risultato:
__________________
I wish for this night-time to last for a life-time
Originally posted by marcooo
Anch'io ho una domanda...
Ma come avete fatto a calcolare le varie strade esistenti e i punti movimento necessari allo spostamento? Io proprio non riesco e penso che lo consegnerò così com'è... :-(
sì, come una query normale
ricordati però gli [']
SELECT funzione( 'par1', 'par2', ....)
__________________
I wish for this night-time to last for a life-time
Originally posted by Metteus
il metodo piu elegante ma anche piu difficile è implementare l'algoritmo di dijkstra per calcolare il cammino minimo tra due citta![]()
Originally posted by R1cky`
Beh in realtà non è necessario scomodare tale algoritmo perchè essendo che il costo del cammino tra una città e l'altra è sempre 1 è suffiente fare una ricerca in ampiezza con qualche piccolo accorgimento![]()
ragazzi ma secondo voi il 30 fino a che ora si può consegnare?
x forza al mattino?
qualcuno ha usato in php
header('refresh: 30; url=pagina.php');
x fare il refresh della pagina?
Originally posted by Metteus
cioè cosa intendi ?
)__________________
I wish for this night-time to last for a life-time
Originally posted by carla86
qualcuno ha usato in php
header('refresh: 30; url=pagina.php');
x fare il refresh della pagina?
__________________
I wish for this night-time to last for a life-time
Originally posted by Sacratix
rispondo io ^^
a noi non serve il cammino minimo, ma un cammino che che non superi un certo numero di archi (che poi sono i pm)
l'importane è che la città sia raggiungibile, all'esercito non cambia il fatto che la meta sia a distanza 1 o 30 (se i pm sono maggiori di 30 >_> )
con una semplice visita in ampiezza, ad ogni passata, mi allontano di 1 pm dalla città base, e questo basta (e avanza ma al perchè ci pensate voi)
Originally posted by carla86
qualcuno ha usato in php
header('refresh: 30; url=pagina.php');
x fare il refresh della pagina?
Originally posted by -Oblivion-
Si utilizzato diverse volte. Molto meglio di javascript.
Originally posted by Metteus
ok grazie !
in pratica inizializzo un contatore, e se alla fine della visita in ampiezza il cont è minore dei pm l'esercito si puo muovere ,,, giusto !
__________________
I wish for this night-time to last for a life-time
Originally posted by carla86
lo posso mettere dove mi pare nella pagina o lo devo mettere x forza all'inizio??
Grazie!
| All times are GMT. The time now is 05:39. | Show all 56 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.