[RISOLTO][Gdrcd] (Mercato) Più oggetti acquistabili
Pagine → 1 2
04/11/2018 15:43:29 e modificato da dyrr il 04/11/2018 15:44:58
Il dubbio che mi viene è questo, e cerco di esprimerlo senza voler essere offensivo in alcun senso:
Grazie a persone come loro ho capito molte cose e so dove agire per far funzionare la land.
Perdonami gli errori indicati:
Parse error: syntax error, unexpected 'WHERE' (T_STRING) in /membri/shadowland/pages/servizi_mercato.inc.php on line 45
e
Parse error: syntax error, unexpected '}' in /membri/shadowland/pages/servizi_mercato.inc.php on line 109
Sono degli errori abbastanza basilari anche perchè in un codice procedurale come il gdrcd leggere il gestore degli errori di php è una cosa basilare.
Se non riuscite a venire a capo di un paio di errori semplici come questi, e ripeto non è un giudizio per volermela tirare, ma un consiglio, secondo me avete bisogno di qualcuno che abbia una maggiore competenza nella programmazione o di dare una occhiata ad alcune basi della programmazione, perchè nel momento in cui si presenta un problema serio da debbuggare vi troverete nei pasticci.
Per quanto riguarda gli aiuti pe ri problemi, un consiglio:
Quando si tratta di chiedere consigli su del codice che è molto lungo (consiglio valido anche per chi risponde), oltre che indicar eil codice qui, magari postatelo come link a qualche posto dove il codice sia più facilmente leggibile tipo qualche sandbox php come http://sandbox.onlinephpfunctions.com/ dove il codice mantiene una certa indentazione, e soprattutto dove gli apici singoli non vengono tutti cambieti in apici obliqui che creano poi lavoro a doverli sostituire.
Quanto alla soluzipme al problema specifico appena ho una ttimo di tempo provo a buttare giu un tutorial.
04/11/2018 15:47:55
Sì infatti il probelma in sé era davvero basilare per gli errori è stata una mia disattenzione nel non avere il colpo d'occhio nel notare l'errore non avendo a disposizione sul momento il programma adeguato ad individuare la stringa che dava il problema, difatti in seguito ho editato. Succede che ci siano distrazioni ma non per questo si deve essere messi alla gogna o essere tacciati di altro ecco :/ ad ogni modo la prossima volta prima di segnalare l'errore mi riguardo il codice mille volte con gli strumenti adeguati, scusate se vi ho creato un disagio, non credevo fosse possibile, colpa mia.
06/11/2018 08:32:14
Riscrivo qui la soluzione nel caso in cui qualcuno volesse implementarla.
Si ringrazia darkblade per l'aiuto :D
1) andate alla pagina "servizi_mercato" presente nella cartella pages del vostro Gdrcd.
2) Alla riga 17 circa sotto:
<!-- Corpo della pagina -->
<div class="page_body">
Trovate questo:
<?php /*Acquisto*/
if ($_POST['op']=='buy'){
/*Controllo se ha la grana*/
$costo=gdrcd_query("SELECT cariche, costo FROM oggetto WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])."");
if ($money >= $costo['costo']){
/*Controllo se possiede gia' oggetti analoghi*/
$query="SELECT id_oggetto FROM clgpersonaggiooggetto WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".$_SESSION['login']."'";
$result=gdrcd_query($query, 'result');
if (gdrcd_query($result, 'num_rows')>0){
$query="UPDATE clgpersonaggiooggetto SET numero = numero + 1 WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".$_SESSION['login']."'";
} else {
$query="INSERT INTO clgpersonaggiooggetto (nome, id_oggetto, cariche, numero, posizione) VALUES ('".$_SESSION['login']."',".gdrcd_filter('num',$_POST['id_oggetto']).", ".$costo['cariche'].", 1, 0)";
}
/*Eseguo l'acquisto*/
gdrcd_query($query);
/*Esigo il quattrino*/
gdrcd_query("UPDATE personaggio SET soldi = soldi - ".$costo['costo']." WHERE nome = '".$_SESSION['login']."' LIMIT 1");
/*Riduco il mercato*/
//$query="SELECT numero FROM mercato WHERE id_oggetto = '".gdrcd_filter('num',$_POST['id_oggetto'])."' LIMIT 1";
//$result=mysql_query($query);
$check=gdrcd_query($result, 'fetch');
gdrcd_query($result, 'free');
if (gdrcd_filter('num',$_POST['numero']) > 1){
$query="UPDATE mercato SET numero = numero - 1 WHERE id_oggetto = '".gdrcd_filter('num',$_POST['id_oggetto'])."' LIMIT 1";
} else {
$query="DELETE FROM mercato WHERE id_oggetto = '".gdrcd_filter('num',$_POST['id_oggetto'])."' LIMIT 1";
}
gdrcd_query($query);
?>
<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>
sostituitelo con questo:
NB: Ricordate di cambiare gli apici
<?php /*Acquisto*/
if ($_POST['op']=='buy'){
/*Controllo se ha la grana*/
$costo=gdrcd_query("SELECT cariche, costo FROM oggetto WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])."");
if ($money >= ($costo['costo']*$_POST['qt'])){
/*Controllo se possiede gia' oggetti analoghi*/
$query="SELECT id_oggetto FROM clgpersonaggiooggetto WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".$_SESSION['login']."'";
$result=gdrcd_query($query, 'result');
if (gdrcd_query($result, 'num_rows')>0){
$query="UPDATE clgpersonaggiooggetto SET numero = numero + ".gdrcd_filter('num',$_POST['qt'])." WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".$_SESSION['login']."'";
} else {
$query="INSERT INTO clgpersonaggiooggetto (nome, id_oggetto, cariche, numero, posizione) VALUES ('".$_SESSION['login']."',".gdrcd_filter('num',$_POST['id_oggetto']).", ".$costo['cariche'].", ".gdrcd_filter('num',$_POST['qt']).", 0)";
}
/*Eseguo l'acquisto*/
gdrcd_query($query);
/*Esigo il quattrino*/
gdrcd_query("UPDATE personaggio SET soldi = soldi - ".($costo['costo']*$_POST['qt'])." WHERE nome = '".$_SESSION['login']."' LIMIT 1");
/*Riduco il mercato*/
//$query="SELECT numero FROM mercato WHERE id_oggetto = '".gdrcd_filter('num',$_POST['id_oggetto'])."' LIMIT 1";
//$result=mysql_query($query);
$check=gdrcd_query($result, 'fetch');
gdrcd_query($result, 'free');
if (gdrcd_filter('num',$_POST['numero']) > 1){
$query="UPDATE mercato SET numero = numero - ".gdrcd_filter('num',$_POST['qt'])." WHERE id_oggetto = '".gdrcd_filter('num',$_POST['id_oggetto'])."' LIMIT 1";
} else {
$query="DELETE FROM mercato WHERE id_oggetto = '".gdrcd_filter('num',$_POST['id_oggetto'])."' LIMIT 1";
}
gdrcd_query($query);
?>
<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>
Qui è stato aggiunto il campo qt che va ad agire sul numero degli oggetti, questo vi permetterà di acquistare più oggetti dello stesso tipo.
3) Ho poi inserito il campo evidenziato tra:
<form action="main.php?page=servizi_mercato" method="post">
<input type="hidden" name="id_oggetto" value="<?php echo $row['id_oggetto']?>" />
<input type="hidden" name="costo" value="<?php echo $row['costo']?>" />
<input type="hidden" name="cariche" value="<?php echo $row['cariche']?>" />
<input type="hidden" name="numero" value="<?php echo $row['numero']?>" />
<input type="hidden" name="op" value="buy" />
<div class='form_label'>
<?php echo $row['costo'].' '.$PARAMETERS['names']['currency']['short']; ?>
</div>
<div class='form_field'>
<input type="text" name="qt" value="Numero oggetti" />
</div>
<div class='form_submit'>
<input type="submit"
name="butt"
<?php if ($money<$row['costo']){ echo 'disabled ';}?>
value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['market']['buy']); ?>" />
E l'implementazione funziona :)
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!
Crossout ↗
CRSED: F.O.A.D. ↗
Sea of Conquest ↗