Refreh onclick non funzionante postato il 25/08/2018 20:14:18 nel forum programmazione, gdrcd, open source, hosting
Sera a tutti!
Stavo lavorando oggi su una modifica sostanziale al sistema di spesa punti esperienza di gdrcd per l'acquisto delle abilità,nel concreto cancellando quasi tutto il form pre-esistente per riscriverlo con un form ad input in php che si compone di un piccolo input type submit che una volta cliccato esegue una query mysqli aggiornando il database ed aggiungendo un punto alla abilità interessata.Tutto questo a patto che il check svolto da una if condition confermi che ci sono abbastanza punti esperienza per livellare la skill
FIn qui tutto bene:il form funziona e fila liscissimo, il problema sorge però dopo aver cliccato:infatti fino a che non si clicca una seconda volta sul submit la schermata, almeno in lato client, non si aggiorna il che è un problema, visto che in questa maniera si ha a disposizione un click extra che elude il check svolto dalla if e di cui i furbetti potrebbero approfittare.
Ho già provato ad agire usando una funzione javascript onclick sul submit(in particolare location.refresh(true),location.refresh(false), window.location.refresh(true) e location.refresh(false))ma non ha risolto il problema, visto che di fatto la pagina sembra ricaricare, ma solo in alcune sue parti(elenco presenti, messaggi etc etc) che ovviamente non includono il centro della pagina.
Qualcuno ha qualche consiglio?
Allego qui di seguito la parte interessata del codice,se mai potesse essere utile.Non me ne vogliate se è un tantinello spaghettoso u.u
Pagine → 1
25/08/2018 20:21:27
Discussione spostata in "GDRCD e Open Source"
25/08/2018 20:44:44
Ma se invece fai un location.href o location.reload?
25/08/2018 20:52:14 e modificato da cybershadow il 25/08/2018 20:55:34
25/08/2018 23:45:55
location.href = '/nuova-pagina.html';
Questo fa un redirect alla pagina che metti tu.
26/08/2018 02:25:49 e modificato da cybershadow il 26/08/2018 02:32:33
26/08/2018 06:54:55
Ora ti basta farti una select ad inizio pagina che si calcola il valore aggiornato, così quando farai il reload della pagina dovrebbe ritrovarsi il valore nuovo e non quello vecchio.
26/08/2018 10:12:33 e modificato da cybershadow il 26/08/2018 11:13:32
26/08/2018 18:17:41
Il tuo problema non è un bug del sistema o del browser, è proprio un errore nella logica di quello che hai scritto. Quindi usare dei trucchi come "location.reload" per aggirarlo non risolverà il problema.
L'errore principale è molto semplice: il codice che aggiorna il grado della skill è posizionato in fondo alla pagina.
Dato che sia la query SELECT sia la stampa del form avvengono *prima* della query di UPDATE è ovvio che al primo submit i dati mostrati dalla pagina siano errati, dato che vengono stampati prima di venire aggiornati. Il problema non è che la pagina non si aggiorna (anzi la pagina di aggiorna perfettamente) è che gli stai facendo stampare delle informazioni vecchie.
Sposta la query di update fuori dal for principale e all'inizio della pagina e vedrai che le informazioni stampate saranno giuste.
Aggiungo una cosa: il tuo if che controlla se il giocatore ha abbastanza exp da spendere puoi farlo al momento della stampa (come stai facendo), ma *DEVI* anche rifarlo prima della query di UPDATE: altrimenti un giocatore che vuole fregarti potrebbe sempre fare F5 e aggiungersi tutti i gradi che vuole.
26/08/2018 18:50:36
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
Enlisted: Miglioramento dell'operazione "Leadstorm"
Lineage II: Evento di Benedizione dell'Arcangelo
Enlisted → Guida la tua squadra di soldati in combattimenti su larga scala, con fanteria, veicoli corazzati e aerei della IIa Guerra Mondiale!
I dati del generatore di rank sono stati aggiornati!
Il gestore di La Tana del Ladro ha risposto alla recensione di elyionar
Cleveland City: Nuova Organizzazione, nuove Chat e nuovi Master
Ex Gratia GDR: Revisione Poteri: Mutazione, Mentali e Utility
War Robots → Domina il campo di battaglia con War Robots: strategia, azione e mecha in un'esperienza multiplayer epica!
Il gestore di Ex Gratia GDR ha risposto alla recensione di deanna
Exclusive Villa GdR: Un morto, nessuna notizia... troppi segreti?
World of Warship: Cantiere navale: Blücher
Enlisted: Operazione "Leadstorm"
League of Angels III → Addentratevi in un MMO RPG fantasy gratuito giocabile direttamente tramite browser grazie a League of Angels!
naemaer ha recensito La Tana del Ladro
La Tana del Ladro: TdL Stories - Disegni sulle Mura di Neverwinter
Lineage II: Evento dell'altare di Merkios
Left to Survive → Left To Survive è un gioco FPS con un'ambientazione post-apocalittica in cui gli Zombi hanno schiavizzato la Terra e ne hanno preso il controllo!
Ombra di Mordor - La Terra di Mezzo: l’Ombra di Mordor è probabilmente uno dei migliori giochi ispirati a Il Signore degli Anelli!
La Via del Ninja - Intervista alla gestione del play by forum Naruto GDR La via del Ninja! Diventa un ninja!
Eternal Dream - Intervista al gestore di Eternal Dream Hunter X Hunter Story play by chat manga!
Fables of New Orleans - Intervista allo staff del play by forum Fables of New Orleans rpg
Ostrov Bermuda - Intervista alla gestione di Ostrov Bermuda un particolare Play by Chat pluri-ambientazione!
Seguici su Telegram! - Segui GDR-online.com su Telegram per essere aggiornato ovunque ti trovi!
Into the Wild - Intervista al play by chat post apocalittico ambientato in Italia: Into The Wild!
Principato di Midgar - Intervista al gestore del GdR play by chat fantasy Principato di Midgar