[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 post
qualcuno più erudito di me saprebbe aiutarmi? ne sarei molto grato
grazie 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 SELECT
ruolo.nome_ruolo, ruolo.immagine
aggiungi poi
LEFT JOIN clgpersonaggioruolo ON messaggioaraldo.autore = clgpersonaggioruolo.personaggio
LEFT 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 questo
GROUP_CONCAT(ruolo.immagine) as immagini_corp_lavoro, GROUP_CONCAT(ruolo.nome_ruolo) as ruolo_corp_lavoro,
quindi inserisci prima di questo
ORDER BY id_messaggio_padre, data_messaggio
questo
GROUP 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: 1064
Error 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 1
Error 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
No cosi mi cancella tutte le immagini
Modifico per aggiungere che poi ho corretto gli accenti:
mi da errore
Bacheche
GDRCD MySQLi Error [File: forum.inc.php; Line: 345]
Error Code: 1064
Error 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 1
Error 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 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.gif
come 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 gilda
echo $immagini_g_l[0];
#immagine lavoro
echo $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 lavoro
Il 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!
Crossout ↗
The Coven ↗
Wuthering Waves ↗
CRSED: F.O.A.D. ↗
Project Entropy ↗
World of the Sea Battle ↗
Seconda Era ↗