[RISOLTO] [GDRCD 5.5.1] Griglia Lista Presenti, sfalsata postato il 21/12/2022 18:08:28 nel forum programmazione, gdrcd e open source e modificato da clapton il 01/02/2023 11:38:50
Salve, eccoci qui a chiedere un aiutino. Speriamo di non dare troppo disturbo, ma se qualcuno avesse una dritta da condividere ve ne saremmo molto grati!
La premessa è che del codice del progetto me ne sto occupando io, ma essendo decisamente a digiuno di nozioni sulla programmazione sto cercando di non fare troppi danni e di andare un passetto per volta, quindi ci vuole un pochino di pazienza!
Allora, si tratta, come da titolo, della lista presenti.
Sono già riuscito a ottenere quasi del tutto il risultato che speravo, ma volendo far apparire anche i simboli delle gilde d'appartenenza dei personaggi, mi sono trovato di fronte a questo ostacolo:
In pratica, ogni personaggio può possedere da 1 a 3 simboli di gilda e nel caso in cui non abbia tutte e tre le gilde la cella della tabella che riguarda le eventuali icone mancanti, sparisce, facendo slittare le altre, verso il simbolo presente.
Penso che si tratti solo di sapere bene dove posizionare i <td> della tabella, ma non sono in grado di capire come. Magari sbaglio a mettere qualche apice. Non so. Mi si sono scervellato parecchio prima di disturbarvi, ma niente.
Vi lascio il codice che serve per fare apparire i simbolini, chissà che non possa servire.
?>
<?php //carico la gilda, a icona
$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 '<td class="caselle_due">'.gdrcd_filter('out',$MESSAGE['interface']['sheet']['profile']['uneployed']).'</td>';
}
else{
while ($row_guilds = gdrcd_query($guilds, 'fetch')){
if($row_guilds['gilda']==-1){
?> <td class="caselle_due"><a href="javascript:parent.parent.modalWindow('attivita', '', 'attivita.php?page=servizi_lavoro');"> <?php echo '<img class="miniliste_icon" 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']).'">' ?> <?
echo '</a></td>';
}
else {
if(($row_quilds['visibile']==1)||($_SESSION['permessi']>=USER)){
?> <td class="caselle_due"><a href="javascript:parent.parent.modalWindow('attivita', '', 'attivita.php?page=servizi_gilde_home&id_gilda=<?php echo gdrcd_filter('out',$row_guilds['gilda'])?>');"> <?php echo '<img class="miniliste_icon" 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']).'">' ?><?
echo '</a></td>';
}
}//else
}//while
gdrcd_query($guilds, 'free');
} //else ?>
Pagine → 1 2
23/12/2022 21:25:39
Conta che sono dal cell quindi il tuo codice lo leggo male ma ad occhio farei così...
Sposta semplicemente il <td> fuori dal ciclo fetch dove stampi le gilde, prima e dopo per la chiusura ovviamente.
in questo modo ti stamperà una sola cella sia che sia una gilda, due o tre, e al massimo intervieni con il css sui link per farli apparire allineati come vuoi (se centrati o a sinistra ecc)
Se ti serve che la cella abbia una dimensione fissa, magari aggiungi al td un div che faccia da contenitore per i link alle gilde in quel caso
Vloek: A Folktale Story
https://vloek.altervista.org/
25/12/2022 23:00:34 e modificato da clapton il 25/12/2022 23:02:34
Hey! Intanto grazie per aver risposto. Scusa per il ritardo nel postare, ma con le feste di mezzo sono rimasto incastrato tra una fetta di panettone e la famiglia. :D
Allora, ho fatto proprio così come hai detto:
1) ho raccolto tutte le icone nella stessa cella della tabella, spostando il td
2) ho inserito un div interno alla cella per dare una misura fissa
3) ho aggiunto uno sfondo al div che simulasse graficamente il tratteggio del bordo cella, anche per quelle che avrebbero dovuto apparire vuote
4) ho dato misure fisse anche alle icone, per fare in modo che si posizzionassero al posto giusto, rispetto lo sfondo del div
So che non è una soluzione “pulita”, come sarebbe potuta saltare fuori riuscendo a trovare il modo di fare apparire le celle vuote, ma in qualche modo ci siamo arrangiati!
Grazie ancora, sei stata davvero gentilissima e buone feste <3
21/01/2023 16:12:22
Provo a tirare di nuovo fuori questa discussione perchè ho lo stesso problema, ma la soluzione trovata qui non si sposa bene col mio progetto...
Qualcuno sa forse come aiutarmi a mantenere una tabella vuota in caso di mancato simbolino di gilda in modo che la lista presenti non esca totalmente sfasata?
Un immenso grazie a chiunque vorrà aiutarmi! 😊❤️
26/01/2023 22:32:01
La soluzione "migliore" è quella di lasciare COMUNQUE un <td></td> vuoto nella posizione della icona mancante. Anche se non c'è propriamente contenuto al suo interno (quindi il controllo dell'immagine deve essere fatto subito dopo l'apertura del tag <td>), comunque viene creata una cella vuota che manterrà l'incolonnamento della tabella ed eviterà "buchi" laddove mancano le immagini da posizione.
Kasa.
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
26/01/2023 22:38:23
Ti lascio qui un esempio nello specifico:
https://codepen.io/kasui92/pen/KKBePMP
Kasa.
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
28/01/2023 09:49:39
Ciao, intanto grazie mille per la risposta!
Però io ci ho provato, ma non so dove metterla la cella vuota...perchè in alcuni casi continua a non comparire ed in altri casi compare ovunque, anche dove non deve...non essendo un asso del php non capisco come impostare il tutto in modo che esca la cella vuota.
Se non sbaglio, il codice dice qualcosa come "se non è impostato nessun lavoro, allora fai uscire il simbolo disoccupato, mentre: se c'è il lavoro libero e/o una corporazione, falli uscire al posto del disoccupato anche contemporaneamente se sono impostati entrambi".
Il problema è che appunto se sono presenti entrambi (sia lavoro libero che corporazione), escono nelle due celle, mentre se è presente solo uno dei due, esce una cella sola e si sballa tutto.
Io nel mezzo di questi tre "if", "else" e "while", non so dove dirgli di far uscire la cella vuota al posto del "lavoro/corp" mancante.
Credo che il mio codice sia uguale a quello già postato da Clapton, ma lo copio comunque:
<?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 '<td> <div class="sfondo-tab"><img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="disoccupato" title="disoccupato"></div></td>';
} else {
while($row_guilds = gdrcd_query($guilds, 'fetch')) {
if($row_guilds['gilda'] == -1) {
echo '<td> <div class="sfondo-tab"><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']).'" /></div></td>';
} else {
if(($row_guilds['visibile'] == 1) || ($_SESSION['permessi'] >= USER)) {
echo '<td> <div class="sfondo-tab"><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></div></td>';
}
}
}
gdrcd_query($guilds, 'free');
}
?>
28/01/2023 10:10:46 e modificato da kasa il 04/02/2023 13:24:35
sallys ha scritto: ...
<?php
// Inizialiizzo la variabile che conterrà il nome della gilda
$ceilContent_guilds = '';
$ceilContent_jobs = '';
// Ottengo le gilde del personaggio
$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');
// Se il personaggio non appartiene ad alcuna gilda, allora mostro l'immagine di disoccupato
if(gdrcd_query($guilds, 'num_rows') == 0) {
$ceilContent_jobs = '<div class="sfondo-tab"><img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="disoccupato" title="disoccupato"></div>';
}
// Altrimenti carico le gilde visibili
else {
// Scorro i risultati
while($row_guilds = gdrcd_query($guilds, 'fetch')) {
// Se si tratta di un lavoro, allora mostro l'immagine del lavoro
if($row_guilds['gilda'] == -1) {
$ceilContent_jobs .= '<div class="sfondo-tab"><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']).'" /></div>';
}
// Altrimenti è una gilda
else {
// Se la gilda è visibile e ho i permessi di visualizzazione, allora mostro l'immagine della gilda
if(($row_guilds['visibile'] == 1) || ($_SESSION['permessi'] >= USER)) {
$ceilContent_guilds .= '<div class="sfondo-tab"><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></div>';
}
}
}
gdrcd_query($guilds, 'free');
}
// Avvio la creazione della cella per il lavoro
echo '<td>'.$ceilContent_jobs.'</td>';
// Avvio la creazione della cella per le gilde
echo '<td>'.$ceilContent_guilds.'</td>';
?>
GitHub: https://github.com/GDRCD/GDRCD
Discord: https://discord.com/invite/K2eWXpvu4M
GdR-O: https://www.gdr-online.com/readforum.asp?id=250579
28/01/2023 11:22:06
GRAZIE
Ora funziona esattamente come speravo!
Ma non sarei mai riuscita da sola, quindi davvero grazie millissime! 😍❤️❤️
01/02/2023 11:37:43
Mi aggiungo ai ringraziamenti! Grandissimo aiuto, senza il quale non sarei riuscito a risolvere. Grazie davvero, Kasa!
15/02/2023 16:19:24 e modificato da londonstar il 15/02/2023 16:20:06
Anche se è stato risolto dal buon Kasa, mi chiedo se qualcuno avesse provato ad aggiungere qualche cella al codice, creando lo spazio per una terza gilda, ad esempio. Io ho provato a fare qualcosa e mille esprimenti che non sto a postare in tutte le loro versioni ma intanto, partiamo dal codice di Kasa e poi in fondo aggiungo pezzo del mio.
<?php
// Inizialiizzo la variabile che conterrà il nome della gilda
$ceilContent_guilds = '';
$ceilContent_jobs = '';
// Ottengo le gilde del personaggio
$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');
// Se il personaggio non appartiene ad alcuna gilda, allora mostro l'immagine di disoccupato
if(gdrcd_query($guilds, 'num_rows') == 0) {
$ceilContent_jobs = '<div class="sfondo-tab"><img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="disoccupato" title="disoccupato"></div>';
}
// Altrimenti carico le gilde visibili
else {
// Scorro i risultati
while($row_guilds = gdrcd_query($guilds, 'fetch')) {
// Se si tratta di un lavoro, allora mostro l'immagine del lavoro
if($row_guilds['gilda'] == -1) {
$ceilContent_jobs .= '<div class="sfondo-tab"><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']).'" /></div>';
}
// Altrimenti è una gilda
else {
// Se la gilda è visibile e ho i permessi di visualizzazione, allora mostro l'immagine della gilda
if(($row_guilds['visibile'] == 1) || ($_SESSION['permessi'] >= USER)) {
$ceilContent_guilds .= '<div class="sfondo-tab"><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></div>';
}
}
}
gdrcd_query($guilds, 'free');
}
// Avvio la creazione della cella per il lavoro
echo '<td>'.$ceilContent_jobs.'</td>';
// Avvio la creazione della cella per le gilde
echo '<td>'.$ceilContent_guilds.'</td>';
?>
<?php
// Inizialiizzo la variabile che conterrà il nome della gilda
$ceilContent_guilds = '';
$ceilContent_guilds_seconda = '';
$ceilContent_jobs = '';
// Ottengo le gilde del personaggio
$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');
// Se il personaggio non appartiene ad alcuna gilda, allora mostro l'immagine di disoccupato
if(gdrcd_query($guilds, 'num_rows') == 0) {
$ceilContent_jobs = '<div class="sfondo-tab"><img class="profilo_img_gilda" src="themes/'.$PARAMETERS['themes']['current_theme'].'/imgs/guilds/disoccupato.png" alt="disoccupato" title="disoccupato"></div>';
}
// Altrimenti carico le gilde visibili
else {
// Scorro i risultati
while($row_guilds = gdrcd_query($guilds, 'fetch')) {
// Se si tratta di un lavoro, allora mostro l'immagine del lavoro
if($row_guilds['gilda'] == -1) {
$ceilContent_jobs .= '<div class="sfondo-tab"><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']).'" /></div>';
}
// Altrimenti è una gilda
else {
// Se la gilda è visibile e ho i permessi di visualizzazione, allora mostro l'immagine della gilda
if(($row_guilds['visibile'] == 1) || ($_SESSION['permessi'] >= USER)) {
$ceilContent_guilds .= '<div class="sfondo-tab"><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></div>';
}
if(($row_guilds['visibile'] == 1) || ($_SESSION['permessi'] >= USER)) {
$ceilContent_guilds_seconda .= '<div class="sfondo-tab"><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></div>';
}
}
}
gdrcd_query($guilds, 'free');
}
// Avvio la creazione della cella per il lavoro
echo '<td>'.$ceilContent_jobs.'</td>';
// Avvio la creazione della cella per le gilde
echo '<td>'.$ceilContent_guilds.'</td>';
echo '<td>'.$ceilContent_guilds_seconda.'</td>';
?>
Discussione seguita da
Pagine → 1 2
Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
neverhaveiever ha risposto alla discussione: Never Have I Ever: Mysteries of Laconia Bay
✋😟
Abbiamo rilevato che stai usando un software per bloccare la pubblicità!
L'utilizzo di GDR-online.com è gratuito da oltre 18 anni ma è necessario coprire i costi per mantenerlo online... ti chiediamo di aiutarci disabilitando il blocco dei banner pubblicitari.
Togliere il blocco significa fare in modo che GDR-online.com possa continuare a far conoscere piccoli giochi amatoriali gratuitamente e offrire un servizio sempre migliore e adatto alle esigenze dei suoi giocatori!
Se questo avviso continua ad apparire nonostante tu abbia autorizzato il portale:
- Verifica nelle opzioni che venga disattivato AdBlock in tutto il dominio gdr-online.com e non solo in una pagina
- Controlla di non avere fra le estensioni installate altre analoghe ad AdBlock, come AdBlock Plusbr, ublock origin, ecc.
- Probabilmente sul tuo PC è installato un Antivirus che ha anche funzioni di blocco pubblicità
- Se usi Firefox impostare il "Blocco Contenuti" su "Normale" e non su "Restrittivo". Per farlo clicca sull'icona dello scudo vicino all'URL e clicca su "Disattiva Blocco per questo sito"
- Prova a premere CTRL + F5, riloggarti e vedi se il problema persiste