[Risolto] GDRCD 5..4.1 : Icone gilda e Scrivi Posta nel Forum
[Risolto] GDRCD 5..4.1 : Icone gilda e Scrivi Posta nel Forum postato il 05/03/2017 01:31:35 nel forum programmazione, open source e hosting e modificato da fargus il 13/03/2017 11:38:44
Salve,Questo è il codice attuale che ho nella pagine forum.inc.php per la sezione dedicata all'autore del post di un messaggio (dove appare avatar, nome e data e ora di inserimento del post:
<tr> <td class="forum_other_post_author"> <div class="forum_post_author"> <br /> <div class="forum_avatar"> <img src="<?php echo gdrcd_filter('out',$row['url_img']); ?>" class="img_forum_avatar"> </div> <br /> <a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out',$row['autore']); ?>"> <?php echo gdrcd_filter('out',$row['autore']); ?> </a> <br /> <br /> <div class="forum_date_small"> <?php echo gdrcd_format_date($row['data_messaggio']).' '.gdrcd_format_time($row['data_messaggio']); ?> </div> </div> </td>
Sono giorni che mi scervello su come diavolo fare per inserire l'icona della gilda e quella dell'invio di un messaggio privato dell'autore del postqualcuno più erudito di me saprebbe aiutarmi? ne sarei molto gratograzie mille in aticipo
Pagine → 1 2
08/03/2017 01:13:44 e modificato da rematore il 08/03/2017 01:13:58
Se ho capito bene, ti basta aggiungere due JOIN alla query che recupera i dati.cerca questa query
$result = gdrcd_query("SELECT messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = " . gdrcd_filter('num', $_REQUEST['what']) . " AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = " . gdrcd_filter('num', $_REQUEST['what']) . " ORDER BY id_messaggio_padre, data_messaggio", 'result');
quindi aggiungi alla SELECTruolo.nome_ruolo, ruolo.immagine
aggiungi poiLEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggioLEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo
$immagine_gilda = $row['immagine'];
08/03/2017 10:02:53 e modificato da fargus il 08/03/2017 10:39:13
Grazie mille Rematore, le indicazioni che mi hai passato sono state interpretabili e sono riuscito correttamente ad aggiungere l'immagine della gilda a sinistra del nome.Copio di seguito il codice che ho modificato con successo e con le tue aggiunte incluse nello stesso. Posso chiederti molto cortesemente di darmi lo stesso aiuto anche per quanto concerne l'assunzione in una seconda gilda?nuovo problema: se io vengo assunto in una nuova gilda o in un lavoro temporaneo individuale succede che tutti i miei thread nel forum si raddoppiano (e l'immaginina della seconda gilda o secondo lavoro non si visualizzano)Potresti aiutarmi?Segue il codice aggiornato:
/*Visualizzazione topic*/if($_REQUEST['op']=='read'){ $result = gdrcd_query("SELECT ruolo.nome_ruolo, ruolo.immagine, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])." ORDER BY id_messaggio_padre, data_messaggio", 'result'); $row = gdrcd_query($result, 'fetch'); $araldo=(int)$row['id_araldo']; $immagine_gilda = $row['immagine']; $chiuso = $row['chiuso'];/*Restrizione di accesso i forum admin e master*/ if ((($row['tipo']==SOLORAZZA)&&($_SESSION['id_razza']!=$row['proprietari'])&&($_SESSION['permessi']<MODERATOR))|| (($row['tipo']==SOLOGILDA)&&(strpos($_SESSION['gilda'],'*'.$row['proprietari'].'*')===FALSE)&&($_SESSION['permessi']<MODERATOR))|| (($row['tipo']>=SOLOMASTERS)&&($_SESSION['permessi']<GAMEMASTER))|| (($row['tipo']>=SOLOMODERATORS)&&($_SESSION['permessi']<MODERATOR))) { echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['not_allowed']).'</div>'; } else { //Inserimento il record al pg come thread letto $check_letto = gdrcd_query("SELECT * FROM araldo_letto WHERE nome = '".$_SESSION['login']."' AND thread_id = ".gdrcd_filter('num',$_REQUEST['what'])); if ($check_letto['id'] <= 0) { gdrcd_query("INSERT INTO araldo_letto (nome, araldo_id, thread_id) VALUES ('".$_SESSION['login']."', ".gdrcd_filter('num',$_REQUEST['where']).", ".gdrcd_filter('num',$_REQUEST['what']).")"); }?><div class="panels_box"> <table> <tr><!-- Intestazione tabella --> <td colspan="2"><div class="capitolo_elenco"> <?php echo gdrcd_filter('out',$row['nome']); ?> </div></td> </tr> <tr> <td colspan="2" class="forum_main_title"> <div class="forum_post_title"> <?php echo gdrcd_filter('out',$row['titolo']); ?> </div> </td> </tr> <tr> <td class="forum_main_post_author"> <div class="forum_post_author"> <br /> <div class="forum_avatar"> <img src="<?php echo gdrcd_filter('out',$row['url_img']); ?>" class="img_forum_avatar"> </div> <br /> <img src="themes/advanced/imgs/guilds/<?php echo gdrcd_filter('out',$row['immagine']); ?>"> <font face="Verdana" style="font-size: 15px"><a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('out',$row['autore']); ?>"> <?php echo gdrcd_filter('out',$row['autore']); ?></size> </a></font> <a href="main.php?page=messages_center&newmessage=yes&reply_dest=<?php echo gdrcd_filter('out',$row['autore']); ?>" class="link_invia_messaggio"> <?php if (empty($PARAMETERS['names']['private_message']['image_file'])===FALSE){ ?> <img src="imgs/icons/scrivi.gif" alt="<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['send_message_to']['send']).' '. gdrcd_filter('out',$PARAMETERS['names']['private_message']['sing']).' '.gdrcd_filter('out',$MESSAGE['interface']['sheet']['send_message_to']['to']).' '.gdrcd_filter('out',$record['nome']); ?>" title="<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['send_message_to']['send']).' '. gdrcd_filter('out',$PARAMETERS['names']['private_message']['sing']).' '.gdrcd_filter('out',$MESSAGE['interface']['sheet']['send_message_to']['to']).' '.gdrcd_filter('out',$record['nome']); ?>" class="link_messaggio_forum"> <?php } else { echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['send_message_to']['send']).' '.gdrcd_filter('out', strtolower($PARAMETERS['names']['private_message']['sing'])).' '.gdrcd_filter('out',$MESSAGE['interface']['sheet']['send_message_to']['to']).' '.gdrcd_filter('out',$record['nome']); } ?> </a> <br /> <br /> <div class="forum_date_small"> <?php echo gdrcd_format_date($row['data_messaggio']).' '.gdrcd_format_time($row['data_messaggio']); ?> </div> </div> </td>
Grazie rematore
10/03/2017 10:55:43
Intanto ti spiego il problema. I messaggi vengono doppiati perché la query trova la doppia corrispondenza per lo stesso pg. Questo perché il pg ha due lavori (corp e altro) quando il pg ha solo un lavoro tutto questo non accade. -- Per risolvere il problema prendi la query con le modifiche che ti ho detto io e modifica nei pezzi che seguono.sostituisci
ruolo.nome_ruolo, ruolo.immagine,
con questoGROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro,
quindi inserisci prima di questoORDER BY id_messaggio_padre, data_messaggio
questoGROUP BY id_messaggio
ora la query stamperà una roba del genere con altri attributi
per prelevare il nome/immagine della corporazione o del lavoro ti basterà fare un explode per dividere la stringa quindi richiamare l'array in base a ciò che ti interessa<?php#immagini$immagini_c_l = explode(',',$row['immagini_corp_lavoro']);$immagine_gilda = $immagine_c_l[0];$immagine_lavoro = $immagine_c_l[1];#nome ruoli$nome_c_l = explode(',',$row['ruolo_corp_lavoro']);$ruolo_gilda = $nome_c_l[0];$ruolo_lavoro = $nome_c_l[1];
10/03/2017 11:30:00
Ciao,Seguendo le tue indicazioni, ho modificato come segue:
$result = gdrcd_query("SELECT GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])."GROUP BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio", 'result'); $row = gdrcd_query($result, 'fetch'); $araldo=(int)$row['id_araldo']; $immagine_gilda = $row['immagine']; #immagini $immagini_c_l = explode(',',$row['immagini_corp_lavoro']); $immagine_gilda = $immagine_c_l[0]; $immagine_lavoro = $immagine_c_l[1]; #nome ruoli $nome_c_l = explode(',',$row['ruolo_corp_lavoro']); $ruolo_gilda = $nome_c_l[0]; $ruolo_lavoro = $nome_c_l[1]; $chiuso = $row['chiuso'];
Tuttavia mi presenta molti più errori di prima:GDRCD MySQLi Error [File: forum.inc.php; Line: 345]Error Code: 1064Error String: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio' at line 1Error Detail: SELECT GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = 86 AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = 86GROUP BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio
10/03/2017 11:46:24
$result = gdrcd_query("SELECT GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])."GROUP BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio", 'result');
stacca la GROUP BY dalla clausola OR
10/03/2017 12:38:14 e modificato da fargus il 10/03/2017 14:01:33
rematore ha scritto:
$result = gdrcd_query("SELECT GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])."GROUP BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio", 'result');
stacca la GROUP BY dalla clausola OR
10/03/2017 14:17:11
prima non ti avevo scritto la query corretta da sostituire ti avevo solo evidenziato in grassetto dove stava l'errore. Ora ti incollo la query corretta. Quindi prendi e sostituiscila totalmente alla tua attuale
$result = gdrcd_query("SELECT GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])." GROUP BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio", 'result');
10/03/2017 14:23:10 e modificato da fargus il 10/03/2017 14:35:40
rematore ha scritto: prima non ti avevo scritto la query corretta da sostituire ti avevo solo evidenziato in grassetto dove stava l'errore. Ora ti incollo la query corretta. Quindi prendi e sostituiscila totalmente alla tua attuale
$result = gdrcd_query("SELECT GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro, messaggioaraldo.id_messaggio, messaggioaraldo.id_messaggio_padre, messaggioaraldo.titolo, messaggioaraldo.messaggio, messaggioaraldo.autore, messaggioaraldo.data_messaggio, messaggioaraldo.chiuso, araldo.tipo, araldo.nome, araldo.proprietari, personaggio.url_img, araldo.id_araldo FROM messaggioaraldo LEFT JOIN araldo ON messaggioaraldo.id_araldo = araldo.id_araldo LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN personaggio ON messaggioaraldo.autore = personaggio.nome WHERE (messaggioaraldo.id_messaggio_padre = ".gdrcd_filter('num',$_REQUEST['what'])." AND messaggioaraldo.id_messaggio_padre != -1) OR messaggioaraldo.id_messaggio = ".gdrcd_filter('num',$_REQUEST['what'])." GROUP BY id_messaggio ORDER BY id_messaggio_padre, data_messaggio", 'result');
ok grazie,ora se metto seconda gilda me lo stampa cosi:/themes/advanced/imgs/guilds/corte/re.gif,fato/fato.gifcome cocide di stampa ho utilizzato questo<img src="themes/advanced/imgs/guilds/<?php echo gdrcd_filter('out',$row['immagini_corp_lavoro']); ?>">
10/03/2017 14:45:03 e modificato da rematore il 11/03/2017 10:31:20
$row['immagini_corp_lavoro'];
contiene una stringa in questo formato IMMAGINE_CORP,IMMAGINE_LAVORO. Per prendere le rispettivi immagini fai così$immagini_g_l = explode(',', $row['immagini_corp_lavoro']);#immagine gildaecho $immagini_g_l[0];#immagine lavoroecho $immagini_g_l[1];
Per capire molto meglio leggi qua http://php.net/manual/en/function.explode.php ↗
10/03/2017 15:00:53 e modificato da fargus il 10/03/2017 15:38:19
grazie mille per tuttoè possibile fare in sorta che quando non si possiede gilda o lavoroIl quadratino previsto per l'immagine non appaia?Altrimenti si vede cosi (almeno con chrome e firefox):
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!