Limete aumento caratteristica
Limete aumento caratteristica postato il 29/08/2011 08:36:58 nel forum programmazione, open source e hosting
Buongiorno a tutti, ho un problemino ino ino, come al solito dirà qualcuno :P hghgghghg
Dunque io ho questo script:
//aumenta fortuna
if($row['fortuna']<='99.00'){
$now=time();
$MySql2 = "SELECT ultimaexp FROM user WHERE nome = '".$user."'";
$Result2 = mysql_query($MySql2);
$rs2 = mysql_fetch_array($Result2);
$exp2=strtotime($rs2['ultimaexp'])+36;
$MySql3 = "UPDATE user SET fortuna = fortuna + '0.01', ultimaexp = NOW() WHERE nome = '".$user."'";
$Result3 = mysql_query($MySql3);
}
$rs2->close;
Che quando connessi mi fa aumentare il valore Fortuna di 0.01 (Fino a qui funziona egregiamente) SOLO se è inferiore a 99.00, il problema è che io vorrei farlo fermare li, cioè arrivato a 99.00 non aumentasse più però aimè accade come potrei fare per ovviare il problema? :(
Grassiiie
Pagine → 1 2
29/08/2011 09:35:55
Si la variabile $row è stata caricata, poichè comunque se non funzionava nemmeno caricava :( Il mio problema sta nel limite.
29/08/2011 10:06:56
La variabile $row prende in causa l'utente, quindi lo seleziona e verifica tramite query SE quell'utente ha meno di 99.00 di fortuna mi carica è così avviene ma dovrebbe fermassi a 99.00 perchè continua? :(
29/08/2011 10:38:49
In pratica il problema è l'uguale a... Giusto?
29/08/2011 10:50:28
Faccio subito una prova, grazie tesò ^_^
29/08/2011 10:53:44
Niente da fare, carica ancora oltre il limite :(
29/08/2011 11:38:09
Deve esserci qualcosa che non quadra nel modo in cui setti $row['fortuna'], vuo dire che in quella variabile c'è qualcosa che non ti aspetti.
Vediamo il codice che la inizializza
29/08/2011 11:43:17
E' quello riportato su :(
29/08/2011 11:53:25
Dunque io ho un file php incluso in una pagina ovvero:
salute.php
/aumenta salute
if($row['fortuna']<'99'){
$now=time();
$MySql2 = "SELECT ultimaexp FROM user WHERE nome = '".$user."'";
$Result2 = mysql_query($MySql2);
$rs2 = mysql_fetch_array($Result2);
$exp2=strtotime($rs2['ultimaexp'])+36;
$MySql3 = "UPDATE user SET fortuna = fortuna + '0.01', ultimaexp = NOW() WHERE nome = '".$user."'";
$Result3 = mysql_query($MySql3);
}
$rs2->close;
Ecco qui, ora di aumentare aumenta come gli dico io senza problemi, come dicevo prima il problema lo da nel superare la soglia, la variabile $row è definita così:
$row=mysql_fetch_array(mysql_query("SELECT * FROM user WHERE nome='".$_SESSION['nome']."'"));
29/08/2011 15:02:47
Il problema non sono le virgolette, ho provato a scrivere uno script simile e il comportamento dell'if con o senza virgolette attorno al numero non cambia. Anche se in verità mi sentirei più tranquillo se quelle virgolette non ci fossero: se stai facendo controlli su dei numeri usa i numeri, non le strighe, altrimenti non ha senso.
Prova a fare un cast esplicito di 'fortuna':
$row['fortuna']=(float)$row['fortuna'];
anche se non credo che cambi niente.
Deve esserci qualcos'altro che interferisce
29/08/2011 15:27:24 e modificato da hahod_balderk il 29/08/2011 15:29:08
Prova così [Per comodità tua ho lasciato praticamente il "tuo codice" risistemando con dei "controlli extra":
//aumenta fortuna
if (floor($row['fortuna'])<'99') { // con questo prendi tutti i valori minori di 99. Il floor ti serve per evitare le virgole.
$now = time();
$MySql2 = "SELECT ultimaexp FROM user WHERE nome = '".$user."'";
$Result2 = mysql_query($MySql2);
$rs2 = mysql_fetch_array($Result2);
$exp2=strtotime($rs2['ultimaexp'])+36;
// controllo incrociato. Faccio solo un controllo per evitare di aumentare il 99.
if (floor($row['fortuna'])=='99') {
$newfortuna = '99.00'; // qui la blocco sempre a 99.00
} else {
$newfortuna = $row['fortuna']+0.01; // qui faccio la somma, così la eviti alla query.
}
$MySql3 = "UPDATE user SET fortuna = ".$newfortuna.", ultimaexp = NOW() WHERE nome = '".$user."'";
$Result3 = mysql_query($MySql3);
}
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Raja Dunia ↗
Enlisted ↗
Sea of Conquest ↗
Wuthering Waves ↗
World of the Sea Battle ↗
AlterEgo ↗
RAID Shadow Legends ↗
State of Survival ↗