Problema Variabile
Problema Variabile postato il 05/05/2009 11:50:47 nel forum programmazione, open source e hosting e modificato da guenda il 05/05/2009 17:09:10
Salve ragazzi, di solito evito di disturbarvi ma visto che tra i miei amici non ci sono programmatori e visto che sto impazzendo da sola allora vi riporto il mio problema, spero che riuscite a trovare l'intoppo che io non capisco dove sbaglio.
Sto lavorando su un motore d'attacco con la creazione di statistiche in scheda, quindi io seleziono un pg da attaccare e tramite form mando il nome al motore d'attacco che me lo cerca dal database e mi toglie il valore random dalla vita "MaxMente" del pg2 attaccato e fin quì tutto bene.
Poi però ho messo delle condizioni, quando il valore di attacco è maggiore al valore della vita del Pg2 dovrebbe restituirmi il valore che egli è morto... ma come l'ho pensata io, non mi da valore alla variabile $Vita.
Vi posto il codice per farvi capire di più.
<?
$Pg2 = $_POST['Lcz'];
$MySql = "SELECT MaxMente FROM Personaggio WHERE Nome = '".pars($Pg2)."'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$Vita=$rs["MaxMente"];
$rs->close;
if ($Attacca <= 10) {
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo) VALUES ('".addslashes($Stanza)."', '$pg', '$pg', NOW(), '<font color="#0000FF"><strong> $Login prova a colpire $Pg2 ma viene contrastato .</strong></font>', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'A')";
mysql_query($MySql);
}
Elseif ($Attacca > 10 && $Attacca < $Vita) {
$MySql=" UPDATE Personaggio SET MaxMente = MaxMente - ".$Attacca." WHERE Nome = '".pars($Pg2)."'";
$Result = mysql_query($MySql);
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo) VALUES ('".addslashes($Stanza)."', '$pg', '$pg', NOW(), '<font color="red"><strong> $Login attacca $Pg2 infliggendo $Attacca danni ferita.</strong></font>', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'A')";
mysql_query($MySql);
}
elseif ($Attacca >10 && $Attacca >$Vita) {
$MySql=" UPDATE Personaggio SET MaxMente = MaxMente - ".$Attacca." WHERE Nome = '".pars($Pg2)."'";
$Result = mysql_query($MySql);
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo) VALUES ('".addslashes($Stanza)."', '$pg', '$pg', NOW(), '<font color="red"><strong> $Login uccide $Pg2 infliggendo $Attacca danni ferita.</strong></font>', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'A')";
mysql_query($MySql);
$MySql=" UPDATE Personaggio SET Successi = Successi + 1 WHERE Nome = '".pars($Login)."'";
$Result = mysql_query($MySql);
}
$rs->close;
?>
Sto impazzendo, non capisco perchè la variabile $Vita non mi viene presa dal database.
Pagine → 1
05/05/2009 14:53:28
più che altro se apri la variabile per la query con i ", poi non puoi utilizzarli nella stringa (ad esempio font color) come caratteri normali ma devi backslasharli.
Ti consiglio, per una maggiore chiarezza del codice, di salvarti il testo html in una apposita variabile e poi di buttarla lì in mezzo alla query direttamente, in modo da non avere problemi con tutti gli apici usati.
05/05/2009 17:07:52 e modificato da guenda il 05/05/2009 17:15:45
Si è vero, ma anche se era sbagliato funzionava ugualmente... ma il problema è un altro.
Io intendevo.. richiamando questi valori dal database $Vita non mi da nessun valore...
Per esempio, quando $Attacco è superiore ad $Vita allora $pg2 è morto.
Ma anche se non mi da nessun errore, la vita non mi viene presa in considerazione.
Ovvero di quelle condizioni mi da sempre che $Attacco è > di $Vita.
è come se non mi prendesse i valori della vita.. non so dove sbaglio.
05/05/2009 20:11:06 e modificato da darkside of breakfast il 05/05/2009 20:12:07
Prova ad aggiungere alla select un or die(mysql_error());
tipo così
mysql_query($MySql)or die(mysql_error());
05/05/2009 22:14:43
darkside of breakfast ha scritto: Prova ad aggiungere alla select un or die(mysql_error());
tipo così
mysql_query($MySql)or die(mysql_error());
Niente.. il problema non sta nell'update, perchè una volta verificata l'ipotesi del $Attacco > $Vita tutto il resto funziona.
Quindi Pg1 attacca $Pg2 e siccome per come è ora non mi da valore $Vita allora $Attacco >$Vita, quindi l'attacco va a buon fine, toglie il tot di punti vita dal pg2 e aumenta il punto successi nella scheda.
Quindi il problema sta nella $Vita che a quanto pare non mi viene restituita.
Lcz è il nome che do all'output del form dove seleziono il pg2 dalla lista dei presenti in stanza quindi una volta inviata la richiamo con questo nome e funziona, lo stampare le Query però non l'ho capito.. non sono molto esperta diciamo mi cimento da poco.
Me confusa... continua a non funzionarmi...
In ogni caso grazie ragazzi, siete mitici.
06/05/2009 00:18:29
Non attaccarlo all'update ma alla select che restituisce $Vita.
Al massimo fatti stampare a schermo sto benedetto valore, ma per quanto posso vedere non ci sono evidenti errori di sintassi, a parte quelli già segnalati.
06/05/2009 11:49:40
ghostman ha scritto: tu ora hai, ad esempio:
$MySql = "SELECT MaxMente FROM Personaggio WHERE Nome = '".pars($Pg2)."'";
mettendo sotto:
echo $MySql;
nella pagina ti verrà fuori una cosa simile, in teoria:
SELECT MaxMente FROM Personaggio WHERE Nome = 'PIPPO'
in questo caso puoi verificare se questa query prende il dato giusto, e così di seguito per le altre (logicamente come debug, dopo li togli/commenti)
In ogni caso il consiglio di darkside of breakfast è validissimo, in quanto ti controlla se ci sono errori nella stesura... anche questo potrebbe esser usato su tutte le query.
Mi spiace di non esser stato in grado di darti un aiuto maggiormente utile.
Funziona ragazzi, ho sistemato le variabili con le conc e poi ho fatto tutte le prove con echo"Mysql.
Quando ho un po di tempo magari creo un bel pacchetto per gli utenti di gdronline ve lo meritate.
Grazie ancora.
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!
AlterEgo ↗
Enlisted ↗
Tiles Survive ↗
Seconda Era ↗
Crossout ↗
Tibia ↗
State of Survival ↗