[GDRCD 5.5] Aumento dei parametri del personaggio [RISOLTO]
[GDRCD 5.5] Aumento dei parametri del personaggio [RISOLTO] postato il 30/12/2021 11:41:06 nel forum programmazione, open source e hosting e modificato da dorian il 09/01/2022 03:45:20
Ciao a tutti.
Sono passato a provare a creare un pagina dedicata all'aumento dei singoli parametri, ma sono incappato in un problema.
All'inizio mi sono concentrato su un parametro nuovo che ho inserito nella tabella della razza (chiamato "fatica", un parametro razza legato) che però può essere incrementato, dal singolo personaggio, pagando in esperienza ed aumentando un altro parametro che ho aggiunto alla tabella del personaggio chiamato "bonus_fatica". La somma di "fatica + bonus_fatica" mi viene restituita correttamente in scheda. Il codice per l'aumento del parametro quindi si basa sul "bonus_fatica" del personaggio visto che il parametro "fatica" è costante.
Il codice che ho inserito è questo:
<?php
/*Verifico exp del pg*/
$row = gdrcd_query("SELECT esperienza, bonus_fatica FROM personaggio WHERE nome='".$_SESSION['login']."'");
$money = $row['esperienza'];
$bonus = $row['bonus_fatica'];
?>
dopo aver definito questi parametri
<?php /*Acquisto bonus*/
if($_POST['op'] == 'buy') {
/*Controllo se ha l'exp*/
if($money >= 3) {
$query = "UPDATE personaggio SET bonus_fatica = bonus_fatica + 1 WHERE nome = '".$_SESSION['login']."'";
}
/*faccio l'acquisto*/
gdrcd_query($query);
/*Scalo l'exp*/
gdrcd_query("UPDATE personaggio SET esperienza = esperienza - 3 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
?>
<div class="warning">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['buyed']); ?>
</div>
<?php } else { ?>
<div class="error">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['cant_do']); ?>
</div>
<?php } ?>
e sebbene questo codice pare funzioni (perché mi aumenta effettivamente il parametro "bonus_fatica" in scheda e mi fa diminuire l'esperienza di 3 ad ogni click come voglio), quando accedo alla pagina in questione mi compare subito, senza che io abbia clikkato sul tasto "compra", il div che dovrebbe comparire unicamente se l'if dell'esperienza inferiore a 3 non è verificato al momento del click sul tasto compra.
Se clikko sul tasto "compra" e ho l'esperienza necessaria, mi da la giusta corretta dicitura "acquistato con successo", ma se finiscono l'esperienza non mi restituisce l'errore che vorrei io, ma mi da proprio una schermata di errore alla riga 20 (mi dice:
"GDRCD MySQLi Error [File: provaaumenti.inc.php; Line: 31]
Error Code: 0
Error String:
Error Detail:"
)
mentre io vorrei che mi restituisse la stringa
<div class="error">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['cant_do']); ?>
</div>
non sono particolarmente esperto di programmazione, quindi non capisco dove sto sbagliando.
sono un po' in crisi
Pagine → 1
02/01/2022 23:12:45
Gentile utente,
il problema che riscontri è dovuto alla posizione errata delle parentesi graffe.
Il codice soddisfa parzialmente quello che intendi fare; correggendo poche cose e soprattutto ordinandolo se ne viene a capo.
Ecco a te il codice corretto.
<?php
if($_POST['op'] == 'buy') { //controllo sul click
if($money >= 3) { //ho almeno 3 exp? SE SI
//aumento bonus fatica
gdrcd_query("UPDATE personaggio SET bonus_fatica = bonus_fatica + 1 WHERE nome = '".$_SESSION['login']."'");
//tolgo l’exp
gdrcd_query("UPDATE personaggio SET esperienza = esperienza - 3 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
//avverto che la procedura è andata a buon fine
?>
<div class="warning">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['buyed']); ?>
</div>
<?php
} else {
//ho almeno 3 exp? SE NO
//Avverto che non ho abbastanza esperienza
?>
<div class="error">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['cant_do']); ?>
</div>
<?php } //chiudo il se no (else)
} // chiudo il controllo sul click
?>
Fammi sapere, ho fatto da cellulare
03/01/2022 03:04:10
playergdr ha scritto: Gentile utente,
il problema che riscontri è dovuto alla posizione errata delle parentesi graffe.
Il codice soddisfa parzialmente quello che intendi fare; correggendo poche cose e soprattutto ordinandolo se ne viene a capo.
Ecco a te il codice corretto.
<?php
if($_POST['op'] == 'buy') { //controllo sul click
if($money >= 3) { //ho almeno 3 exp? SE SI
//aumento bonus fatica
gdrcd_query("UPDATE personaggio SET bonus_fatica = bonus_fatica + 1 WHERE nome = '".$_SESSION['login']."'");
//tolgo l’exp
gdrcd_query("UPDATE personaggio SET esperienza = esperienza - 3 WHERE nome = '".$_SESSION['login']."' LIMIT 1");
//avverto che la procedura è andata a buon fine
?>
<div class="warning">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['buyed']); ?>
</div>
<?php
} else {
//ho almeno 3 exp? SE NO
//Avverto che non ho abbastanza esperienza
?>
<div class="error">
<?php echo gdrcd_filter('out', $MESSAGE['warning']['cant_do']); ?>
</div>
<?php } //chiudo il se no (else)
} // chiudo il controllo sul click
?>
Fammi sapere, ho fatto da cellulare
Ciao!
Prima di tutto grazie per la tua disponibilità, davvero!
Ho provato a sistemare il codice come mi hai consigliato, e funziona alla perfezione!! Niente più errore!! Grazie mille! E buon anno nuovo!
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
State of Survival ↗
World of Tanks ↗
Sea of Conquest ↗