[GDRCD 5.5.1] Tipo Gilda in Scheda
[GDRCD 5.5.1] Tipo Gilda in Scheda postato il 03/08/2021 17:45:42 nel forum programmazione, open source e hosting
Buongiorno!
Quest'oggi il mio desiderio di personalizzare il gdrcd si è arenato di fronte alla volontà di diversificare nella scheda la sezione dedicata alle gilde in base al loro tipo.
Quello che vorrei è avere 3 differenti sezioni, chiamate idealmente: Lavoro, Clan e Fazione. Ognuna di loro corrisponderebbe ad un diverso tipo di gilda che ho impostato a partire dal Positivo (1), Neutrale (2) e Negativo (3) che sono presenti di base.
Impostare le 3 sezioni non è stato un problema, ma mi sono arenata nel momento in cui ho provato a modificare la query per filtrare le varie cariche.
Attualmente, in ognuna delle sezioni appaiono tutte le icone delle gilde a cui il personaggio è affiliato, ma io vorrei che le icone in ciascuna di loro cambiassero in base al tipo della gilda.
Questo è il codice originale:
<span class="scheda_valore">
<?php //carico le gilde
$guilds=gdrcd_query("SELECT ruolo.nome_ruolo, ruolo.gilda, ruolo.immagine, gilda.visibile, gilda.nome AS nome_gilda FROM clgpersonaggioruolo LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN gilda ON ruolo.gilda = gilda.id_gilda WHERE clgpersonaggioruolo.personaggio = '".gdrcd_filter('in',$record['nome'])."'", 'result');
if (gdrcd_query($guilds, 'num_rows')==0){
echo '<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="Disoccupato" title="Disoccupato" />';
}else{
while ($row_guilds = gdrcd_query($guilds, 'fetch')){
if($row_guilds['gilda']==-1){
echo '<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo']).'" />';
} else {
if(($row_quilds['visibile']==1)||($_SESSION['permessi']>=USER)){
echo '<a href="main.php?page=servizi_gilde&id_gilda='.$row_guilds['gilda'].'">
<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" /></a>';
}
}//else
}//while
gdrcd_query($guilds, 'free');
}//else?>
</span>
Questa è una delle modifiche che ho provato ad introdurre:
<span class="scheda_valore">
<?php //carico le gilde
$guilds=gdrcd_query("SELECT ruolo.nome_ruolo, ruolo.gilda, ruolo.immagine, gilda.visibile, gilda.tipo, gilda.nome AS nome_gilda FROM clgpersonaggioruolo LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN gilda ON ruolo.gilda = gilda.id_gilda WHERE clgpersonaggioruolo.personaggio = '".gdrcd_filter('in',$record['nome'])."'", 'result');
if (gdrcd_query($guilds, 'num_rows')==0){
echo '<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="Disoccupato" title="Disoccupato" />';
}else{
while ($row_guilds = gdrcd_query($guilds, 'fetch')){
if($row_guilds['gilda']==-1){
echo '<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo']).'" />';
} else {
if(($row_guilds['gilda']>=1)||($row_guilds['visibile']==1)||($row_guilds['tipo']==1)||($_SESSION['permessi']>=USER)){
echo '<a href="main.php?page=servizi_gilde&id_gilda='.$row_guilds['gilda'].'">
<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" /></a>';
}
}//else
}//while
gdrcd_query($guilds, 'free');
}//else?>
</span>
Ho provato ad agire anche richiamando la tabella codtipogilda e il conseguente cod_tipo, ma l'unico risultato che ho ottenuto è stato di moltiplicare il numero delle stesse icone all'interno di una sezione.
Grazie in anticipo per l'aiuto!
Pagine → 1
04/08/2021 14:46:44
Chiedo venia, ma sto facendo un poco di fatica a comprendere il problema:
A te serve che, in base alla colonna gilda.tipo, cambia l'immagine che si visualizza per la gilda nella riga sottostante?
<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" /></a>';
Kasa.
04/08/2021 15:04:01
kasa ha scritto:
Esattamente, a me serve che alla voce Lavoro, ad esempio, si vedesse solo il simbolo relativo alla carica della gilda di tipo 1 (oltre ad eventuali lavori liberi che mi pare siano tutti segnalati con valore -1), e così via per le altre righe (a parte il simbolo del lavoro libero), sempre in base a gilda.tipo.
Ho fatto dei tentativi per vedere se riuscivo a filtrarli in qualche modo, ma non ci sono riuscita.
04/08/2021 16:14:32
Quindi, tu vorresti che le varie gilde dell'utente venissero ordinate per gilda.tipo e poi visivamente raggruppate, tipo così:
TIPO 1
Immagine Gilda A ( Tipo: 1 )
TIPO 2
Immagine Gilda B ( Tipo: 2 )
TIPO 3
Immagine Gilda C ( Tipo: 3 )
Giusto?
Kasa.
04/08/2021 17:32:02
kasa ha scritto: Quindi, tu vorresti che le varie gilde dell'utente venissero ordinate per gilda.tipo e poi visivamente raggruppate, tipo così:
TIPO 1
Immagine Gilda A ( Tipo: 1 )
TIPO 2
Immagine Gilda B ( Tipo: 2 )
TIPO 3
Immagine Gilda C ( Tipo: 3 )
Giusto?
Kasa.
Esattamente!
04/08/2021 18:04:44
nobara ha scritto: ...
Per risolvere il problema senza dover stravolgere troppo i tuoi sorgenti originali tenterei dapprima di creare una variabile array in cui all'interno inserisco le varie gilde dell'utente ordinate per tipologia e, successivamente, le stamperei mano a mano sulla base di questo.
Ti do un ESEMPIO di come la strutturerei:
<span class="scheda_valore">
<?php
//carico le gilde
$guilds=gdrcd_query("SELECT ruolo.nome_ruolo, ruolo.gilda, ruolo.immagine, gilda.visibile, gilda.tipo, gilda.nome AS nome_gilda FROM clgpersonaggioruolo LEFT JOIN ruolo ON ruolo.id_ruolo = clgpersonaggioruolo.id_ruolo LEFT JOIN gilda ON ruolo.gilda = gilda.id_gilda WHERE clgpersonaggioruolo.personaggio = '".gdrcd_filter('in',$record['nome'])."'", 'result');
if (gdrcd_query($guilds, 'num_rows')==0){
echo '<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="Disoccupato" title="Disoccupato" />';
}
else{
// Costruisco l'insieme delle gilde suddivise per tipologia
while ($row_guilds = gdrcd_query($guilds, 'fetch')){
// Determino la tipologia, anche in caso di lavori liberi
$typeGuild = !empty($row_guilds['tipo']) ? $row_guilds['tipo'] : '-1';
// Segno la gilda
$userGuilds[$typeGuild][$row_guilds['gilda']] = $row_guilds;
}
// Scorro le tipologie di gilde ottenute
foreach($userGuilds AS $typeGuilds => $Guilds) {
echo '<div id="contenitore_gilde_'.$typeGuilds.'">';
echo '<h1>TIPO '.$typeGuilds.'</h1>';
// Scorro le gilde della tipologia
foreach($Guilds AS $idGuild => $Guild) {
// In caso di lavori liberi, mostro solo l'icona
if($idGuild == -1 || $typeGuilds == -1 ){
echo '<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo']).'" />';
}
// Altrimenti mostro la relativa immagine di gilda
else {
if(($row_guilds['visibile']==1)||($row_guilds['tipo']==1)||($_SESSION['permessi']>=USER)){
echo '<a href="main.php?page=servizi_gilde&id_gilda='.$row_guilds['gilda'].'">
<img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/'.gdrcd_filter('out',$row_guilds['immagine']).'" alt="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" title="'.gdrcd_filter('out',$row_guilds['nome_ruolo'].' - '.$row_guilds['nome_gilda']).'" /></a>';
}
}
}
echo '</div>';
}
gdrcd_query($guilds, 'free');
}//else
?>
</span>
Ti ho messo le varie tipologie di gilda in dei div contenitori per farti capire, bene o male, come verrebbero separate al termine del processo.
Kasa.
05/08/2021 13:54:21
kasa ha scritto:
Ti ringrazio infinitamente Kasa.
Farò delle prove in giornata!
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!
Enlisted ↗
Wuthering Waves ↗
Raja Dunia ↗
Cafuné ↗
Fallen Gods ↗
World of Tanks ↗