Problema codice aumento skills con px a scalare
Problema codice aumento skills con px a scalare postato il 21/11/2011 15:13:44 nel forum programmazione, open source e hosting
Dunque andiamo con ordine
Sto costruendo un codice che permette l'aumento delle skills pagando un prezzo in px che aumenta all'aumentare del livello della skill stessa
(es . se voglio aumentare forza a 2 spendo 10 px e se voglio aumentarla a 3 ne spendo 20 e così via )
Sento di esserci vicino ed ho costruito il codice mediante una function nella sezione skill della scheda che riporto qui
function Aumenta($Quanto, $Cosa) {
global $pg;
return '<form action="schedaskills.php" method="post"><input type="hidden" name="pg" value="'.$pg.'"><input type="hidden" name="Cosa" value="'.$Cosa.'"><input type="hidden" name="costo" value="'.$costo.'"> '.$Quanto.' <input type="submit" value="+"></form>';
}
e quindi inserisco il comando php in caso di pressione del submit
if (isset($_POST['Cosa'])===TRUE){
$Cosa = $_POST['Cosa'];
$costo = $_POST['costo'];
if ($Cosa == 0) { $costo = 0;
} if ($Cosa == 1) { $costo = 5 ;
} if ($Cosa == 2) { $costo = 10 ;
} if ($Cosa == 3) { $costo = 15 ;
} if ($Cosa == 4) { $costo = 20 ;
} if ($Cosa == 5) { $costo = 2000 ;
}
$MySql = "UPDATE Personaggio";
$MySql .= " SET ".$_POST['Cosa']." = ".$_POST['Cosa']." + 1";
$MySql .= " , Explibera = Explibera - ".$costo."";
$MySql .= " WHERE Nome = '".$_SESSION['Login']."'";
$Result = mysql_query($MySql);
}
Dopodichè inserisco il form nella sezione della scheda con questo esempio
<td><span class="schedas">Forza </td><td width="35"><span class="schedas"> <?= $rs['A1'] ?> </td><td> <?= Aumenta($rs['A1']) ?> </td>
Il problema è che mi fa aumentare la skill ma non detrae l'exp , ho provato a togliere l'if ed a mettere la detrazione a -1 e così funziona quindi immagino sto sbagliando nella parte dell'if del costo ma non so dove sto sbagliando , mica potete darmi un suggerimento ?
Pagine → 1
21/11/2011 15:23:48 e modificato da blancks il 21/11/2011 15:28:01
Hai dichiarato la funzione:
function Aumenta($Quanto, $Cosa) [..]
Che successivamente hai richiamato senza specificare il secondo parametro che è tutto fuorché opzionale secondo quella logica.
<?= Aumenta($rs['A1']) ?>
La soluzione dovrebbe essere, se tutto il resto è a posto:
<?= Aumenta($rs['A1'], 'A1') ?>
(attento agli apici che imposta in automatico gdr-online)
Per il resto ti suggerisco caldamente di fare dei controlli di sicurezza sulle variabili che ricevi via post dal form, il rischio è quello di ritrovarsi facile preda di SQL Injection!
Aggiungo con l'edit:
Visto che non hai segnalato l'errore di tipo Warning che avresti dovuto notare suppongo che il tuo provider nasconda gli errori presenti nel tuo codice.
Ti suggerisco di abilitarli.
Puoi farlo mettendo in cima ad ogni pagina (o ad una pagina che includi comunque in cima a tutte) la seguente istruzione:
error_reporting(E_ALL);
21/11/2011 15:35:29
Dunque avevo sbagliato ad incollare ma effettivamente era così la stringa
<td><span class="schedas">Resistenza </td><td width="35"><span class="schedas"> <?= $rs['A0'] ?> </td><td> <?= barra2($rs['A0']) ?> </td><td width="10"><?= Aumenta($rs['A0'], 'A0') ?> </td>
Inserendo il comando da te suggerito mi dice
Notice: Undefined variable: costo in /membri/neworleansgdr/schedaskills.php on line 20
21/11/2011 15:42:21
C'è un altro errore logico:
$Cosa = $_POST['Cosa'];
$costo = $_POST['costo'];
if ($Cosa == 0) { $costo = 0;
} if ($Cosa == 1) { $costo = 5 ;
} if ($Cosa == 2) { $costo = 10 ;
} if ($Cosa == 3) { $costo = 15 ;
} if ($Cosa == 4) { $costo = 20 ;
} if ($Cosa == 5) { $costo = 2000 ;
}
$Cosa rappresenta il nome della colonna nella tabella sul database e non il valore del livello della tua abilità.
Secondariamente, quello che ti ho fatto includere sputa fuori tutti gli errori che normalmente il tuo provider non ti mostra (motivo per cui, sviluppare del codice in un ambiente simile è sconsigliatissimo)
Probabilmente ti aspetta un bel po di debug da fare, il messaggio specifico (un errore di classe minore) indica che stai facendo uso di una variabile non inizializzata prima dell'istruzione presente alla riga indicata.
21/11/2011 15:46:30
<input type="hidden" name="costo" value="'.$costo.'"> '.$Quanto.' <input type="submit" value="+"></form>';
Qui ad esempio.
$costo non è definito da nessuna parte, sicuro sia quella la variabile da mettere nel value dell'input ?
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!
Project Entropy ↗
State of Survival ↗
Wuthering Waves ↗
Crossout ↗
Exclusive Villa GdR ↗