(RISOLTO) [GDRCD 5.2] Problema avviso messaggio su ricezione denaro
(RISOLTO) [GDRCD 5.2] Problema avviso messaggio su ricezione denaro postato il 25/08/2022 10:52:57 nel forum programmazione, open source e hosting e modificato da staff shadowland il 26/08/2022 11:51:53
Buongiorno! Stamane mi ritrovo qui a chiedere il vostro aiuto su di un piccolo problema da cui non riesco a venirne a capo e che forse potrebbe interessare anche altri.
La problematica riguarda gli avvisi di messaggistica in Land quando si esegue un versamento su di un conto bancario, è una cosa da cui non riesco a venirne a capo.
Ho modificato il codice duplicando quello bancario per ottenere un secondo conto che consiste in una cassa comune a chi fa parte del medesimo gruppo di gioco. Fin qui nessun problema, l'intoppo risiede nell'invio di una missiva unicamente al capogruppo come avviso per notificare l'avvenuto versamento di un altro gruppo di gioco (o di un giocatore) verso il proprio gruppo (o uno differente) e viceversa.
Il campo relativo a questa funzione va a recuperare le informazioni relative al "beneficiario" che, nel caso venga effettuato verso un Pg, ha successo e funziona normalmente ma tra gruppi ovviamente il passaggio viene registrato in DB nel campo "destinatario" in messaggi con il nome del gruppo poiché non fa capo ad alcun Pg e di conseguenza non arriva alcuna notifica pur avendo avuto successo il passaggio di denaro.
Il mio intento sarebbe quello di far sì che, nel caso di passaggio denaro verso un gruppo di gioco, la notifica possa giungere al corrispettivo Capogruppo (o relativo utente che ha versato la somma ad un gruppo) per avvenuto versamento/ricezione denaro.
Qualcuno può essermi di aiuto? Perchè non so proprio come scrivere questa parte di codice o come fare perchè venga riconosciuto nell'invio dell'avviso il capogruppo piuttosto che il nome del gruppo di gioco. T_T (spero di essere stata più esaustiva possibile)
P.s. Ho evidenziato le parti che credo intervengano su quanto vorrei realizzare.
Allego di seguito la parte di codice a cui faccio riferimento:
<?php /*Bonifico*/
if((isset($_POST['op'])===TRUE)&&($_POST['op']=='bonifico') || (isset($_POST['op'])===TRUE)&&($_POST['op']=='bonifico_gilda')){
/*$query = gdrcd_query("SELECT nome FROM personaggio WHERE nome = '" . $_POST['beneficiario'] . "' LIMIT 1");*/
if (empty($_POST['beneficiario']) && empty($_POST['personaggio'])){
echo '<div class="warning">Il beneficiario che hai inserito non esiste o non è valido!</div>';
} else if (($_POST['ammontare']<=0)||(is_numeric($_POST['ammontare'])===FALSE)){
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['error']).'</div>';
} else if($_POST['ammontare']>$conto){
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['withdraw_no']).'</div>';
} else if($_POST['op'] == 'bonifico_gilda') {
$query = gdrcd_query("SELECT conto_corrente FROM gilda WHERE gilda.nome = '" . addslashes($_POST['beneficiario']) . "' LIMIT 1");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['done']).'</div>';
/*Eseguo la transazione verso gruppo*/
gdrcd_query("UPDATE gilda SET conto_corrente = conto_corrente - ".gdrcd_filter('num',$_POST['ammontare'])." WHERE gilda.id_gilda = '".$gilda."' LIMIT 1");
gdrcd_query("UPDATE gilda SET conto_corrente = conto_corrente + ".gdrcd_filter('num',$_POST['ammontare'])." WHERE gilda.nome = '".addslashes($_POST['beneficiario'])."' LIMIT 1");
/*Registro l'evento (Passaggio di danaro verso gruppo)*/
gdrcd_query("INSERT INTO log (nome_interessato, autore, data_evento, codice_evento ,descrizione_evento) VALUES ('".gdrcd_filter('in',addslashes($_POST['beneficiario']))."', '".$_SESSION['login']."', NOW(), ".BONIFICO.", '".'('.gdrcd_filter('num',$_POST['ammontare']).' '.$PARAMETERS['names']['currency']['plur'].' '.$MESSAGE['interface']['bank']['noticegruppo'].') '.gdrcd_filter('in',$_POST['causale'])."')");
/*Avviso il Capogruppo*/
gdrcd_query("INSERT INTO messaggi (mittente, destinatario, spedito, testo) VALUES ('".$_SESSION['login']."','".gdrcd_capital_letter(gdrcd_filter('in',addslashes($_POST['beneficiario'])))."', NOW(), '".gdrcd_filter('in', $_SESSION['login'].' '.$MESSAGE['interface']['bank']['noticegruppo'].' '.$MESSAGE['interface']['bank']['notice'].' '.gdrcd_filter('num',$_POST['ammontare']).' '.$PARAMETERS['names']['currency']['plur']).'. \n\n'.gdrcd_filter('in',$_POST['causale'])."')");
} else {
$query = gdrcd_query("SELECT nome FROM personaggio WHERE nome = '" . $_POST['personaggio'] . "' LIMIT 1");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['done']).'</div>';
Pagine → 1 2
25/08/2022 17:04:04 e modificato da darkblade il 25/08/2022 17:05:38
ti fai una query che ti recupera il nome capo gruppo e metti il risultato della query nella insert al posto di $post['destinatario'] e dovrebbe funzionare.
SELECT clgpersonaggioruolo.personaggio FROM gilda inner join ruolo on ruolo.gilda = gilda.id_gilda inner join clgpersonaggioruolo on clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo where ruolo.capo=1 and gilda.id_gilda = ".$gilda."
25/08/2022 19:00:07
Probabilmente sbaglio qualcosa e seppure non mi restituisce nessun errore, non cambia nulla.
Ho agito su questa parte di codice:
/*Avviso l'utente*/
$msgcap = gdrcd_query("SELECT clgpersonaggioruolo.personaggio FROM gilda INNER JOIN ruolo ON ruolo.gilda = gilda.id_gilda INNER JOIN clgpersonaggioruolo ON clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE ruolo.capo=1 AND gilda.id_gilda = '".$gilda."' LIMIT 1");
gdrcd_query("INSERT INTO messaggi (mittente, destinatario, spedito, testo) VALUES ('".$_SESSION['login']."','".gdrcd_capital_letter(gdrcd_filter('in',addslashes($_POST['msgcap'])))."', NOW(), '".gdrcd_filter('in', $_SESSION['login'].' '.$MESSAGE['interface']['bank']['noticegruppo'].' '.$MESSAGE['interface']['bank']['notice'].' '.gdrcd_filter('num',$_POST['ammontare']).' '.$PARAMETERS['names']['currency']['plur']).'. \n\n'.gdrcd_filter('in',$_POST['causale'])."')");
} else {
$query = gdrcd_query("SELECT nome FROM personaggio WHERE nome = '" . $_POST['personaggio'] . "' LIMIT 1");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['done']).'</div>';
25/08/2022 23:50:30
Dovrebbe esse qua: $_POST['msgcap'] MA metti $msgcap['personaggio']
26/08/2022 00:40:59
Non mi restituisce errori ma il risultato è il medesimo di quello in origine. Ottengo una Missiva ricevuta ma nel DB il campo destinatario del messaggio resta vuoto e di conseguenza ho una missiva fantasma che non può essere aperta nè rimossa se non da DB, inoltre questa viene segnalata a tutti gli utenti +_+
26/08/2022 08:55:09
hai provato la query che ti ho mandato io sul database? una cosa ma il campo id_gilda della tabella gilda è numerico? perchè tu nella query lo passi come stringa(ci sono gli apicetti) forse è per quello che non ti trova nulla.
$msgcap = gdrcd_query("SELECT clgpersonaggioruolo.personaggio FROM gilda INNER JOIN ruolo ON ruolo.gilda = gilda.id_gilda INNER JOIN clgpersonaggioruolo ON clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE ruolo.capo=1 AND gilda.id_gilda = '".$gilda."'
26/08/2022 09:06:51
Grazie per la risposta! Purtroppo no non funziona.
Mi restituisce questo errore con la tua query:
Parse error: syntax error, unexpected 'INSERT' (T_STRING) in /membri/shadowland/pages/servizi_contogilda.inc.php on line 59
id_gilda è un campo INT ma magari ho capito male io dove integrare i tuoi suggerimenti (?)
26/08/2022 09:17:16
scrivi quello che hai messo, riposta il pezzo che ora và in errore.
26/08/2022 09:19:50 e modificato da staff shadowland il 26/08/2022 09:22:06
ecco qui il pezzo incriminato:
/*Avviso il capogruppo*/
$msgcap = gdrcd_query("SELECT clgpersonaggioruolo.personaggio FROM gilda INNER JOIN ruolo ON ruolo.gilda = gilda.id_gilda INNER JOIN clgpersonaggioruolo ON clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE ruolo.capo=1 AND gilda.id_gilda = '".$gilda."');
gdrcd_query("INSERT INTO messaggi (mittente, destinatario, spedito, testo) VALUES ('".$_SESSION['login']."','".gdrcd_capital_letter(gdrcd_filter('in',addslashes($_POST['msgcap'])))."', NOW(), '".gdrcd_filter('in', $_SESSION['login'].' '.$MESSAGE['interface']['bank']['noticegruppo'].' '.$MESSAGE['interface']['bank']['notice'].' '.gdrcd_filter('num',$_POST['ammontare']).' '.$PARAMETERS['names']['currency']['plur']).'. \n\n'.gdrcd_filter('in',$_POST['causale'])."')");
} else {
$query = gdrcd_query("SELECT nome FROM personaggio WHERE nome = '" . $_POST['personaggio'] . "' LIMIT 1");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['done']).'</div>';
26/08/2022 09:23:56
ti eri mangiata dei pezzi prova questo:
$msgcap = gdrcd_query("SELECT clgpersonaggioruolo.personaggio FROM gilda INNER JOIN ruolo ON ruolo.gilda = gilda.id_gilda INNER JOIN clgpersonaggioruolo ON clgpersonaggioruolo.id_ruolo = ruolo.id_ruolo WHERE ruolo.capo=1 AND gilda.id_gilda = ".$gilda."");
gdrcd_query("INSERT INTO messaggi (mittente, destinatario, spedito, testo)
VALUES ('".$_SESSION['login']."','".gdrcd_capital_letter(gdrcd_filter('in',addslashes($msgcap['personaggio'])))."', NOW(), '".gdrcd_filter('in', $_SESSION['login'].' '.$MESSAGE['interface']['bank']['noticegruppo'].' '.$MESSAGE['interface']['bank']['notice'].' '.gdrcd_filter('num',$_POST['ammontare']).' '.$PARAMETERS['names']['currency']['plur']).'. \n\n'.gdrcd_filter('in',$_POST['causale'])."')");
} else {
$query = gdrcd_query("SELECT nome FROM personaggio WHERE nome = '" . $_POST['personaggio'] . "' LIMIT 1");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['interface']['bank']['done']).'</div>';
26/08/2022 09:30:33
Ci siamo quasi! :D adesso non mi restituisce errore! però il messaggio di avviso arriva unicamente a colui che effettua il versamento ma non al capogruppo che lo riceve ç.ç
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!
RAID Shadow Legends ↗
AlterEgo ↗
Fallen Gods ↗
CRSED: F.O.A.D. ↗
Foundation Galactic Frontier ↗
The Coven ↗
Sea of Conquest ↗
Raja Dunia ↗
Storie di Agarthi ↗