[RISOLTO] GDRCD 5.4.1 - Pasticcio con la tabella abilità
[RISOLTO] GDRCD 5.4.1 - Pasticcio con la tabella abilità postato il 14/05/2020 14:24:11 nel forum programmazione, open source e hosting e modificato da theodora il 16/05/2020 00:56:45
Premetto che di programmazione ne so davvero pochino, ma (!) sono riuscita per miracolo a:
-creare una pagina dedicata alle abilità in scheda
-a fare in modo che cliccando sulla singola abilità si apra una pagina/popup che collega alle descrizioni
quello che proprio non riesco a fare è fare in modo che invece che tutto l'infinito elenco delle skill compaia solo la descrizione di quella precisa skill.
Questo è il codice che ho usato (riprendendolo da una vecchia discussione e modificandolo dove necessario):
<div class="page_body">
<?php /*HELP: */
$query="SELECT nome, abilita.id_abilita, car, descrizione FROM abilita WHERE id_abilita = ".gdrcd_filter('num',$_REQUEST['id_abilita'])."";
$result=gdrcd_query($query,'result');?>
<div class="elenco_record_gioco">
<?php while($row=gdrcd_query($result, 'fetch')){ ?>
<div class="casella_titolo"><h2>
<?php echo $row['nome']; ?></h2>
</div>
<div id="container">
<h3><?php echo gdrcd_filter('out',$MESSAGE['interface']['skills']['desc']); ?></h3>
<p><?php echo gdrcd_bbcoder(gdrcd_filter('out',$row['descrizione'])); ?></p>
<?php }//while
gdrcd_query($result, 'free');
?>
</div>
<!-- Link a piè di pagina -->
<div class="link_back">
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
Aiuto!
Pagine → 1
14/05/2020 14:25:52 e modificato da theodora il 14/05/2020 16:23:55
In caso serva inserisco anche il codice della pagina abilità:
<div class="pagina_scheda_abilita">
<?php /*HELP: */ ?>
<?php
/********* CARICAMENTO PERSONAGGIO ***********/
//Se non e' stato specificato il nome del pg
if (isset($_REQUEST['pg'])===FALSE){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';
} else {
$query = "SELECT personaggio.*, razza.sing_m, razza.sing_f, razza.id_razza, razza.bonus_car0, razza.bonus_car1, razza.bonus_car2, razza.bonus_car3, razza.bonus_car4, razza.bonus_car5 FROM personaggio LEFT JOIN razza ON personaggio.id_razza=razza.id_razza WHERE personaggio.nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
$result = gdrcd_query($query, 'result');
//Se non esiste il pg
if (gdrcd_query($result, 'num_rows')==0){echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';}
else {
$record = gdrcd_query($result, 'fetch');
gdrcd_query($result, 'free');
$bonus_oggetti = gdrcd_query("SELECT SUM(oggetto.bonus_car0) AS BO0, SUM(oggetto.bonus_car1) AS BO1, SUM(oggetto.bonus_car2) AS BO2, SUM(oggetto.bonus_car3) AS BO3, SUM(oggetto.bonus_car4) AS BO4, SUM(oggetto.bonus_car5) AS BO5 FROM oggetto JOIN clgpersonaggiooggetto ON oggetto.id_oggetto = clgpersonaggiooggetto.id_oggetto WHERE clgpersonaggiooggetto.nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' AND clgpersonaggiooggetto.posizione > ".ZAINO."");
}
/*Controllo esilio, se esiliato non visualizzo la scheda*/
if($record['esilio']>strftime('%Y-%m-%d')){
echo '<div class="warning">'.gdrcd_filter('out',$record['nome']).' '.gdrcd_filter('out',$record['cognome']).' '.gdrcd_filter('out',$MESSAGE['warning']['character_exiled']).' '.gdrcd_format_date($record['esilio']).' ('.$record['motivo_esilio'].' - '.$record['autore_esilio'].')</div>';}
else {
$px_totali_pg=$record['esperienza'];
//carico le sole abilità del pg
$result=gdrcd_query("SELECT id_abilita, grado FROM clgpersonaggioabilita WHERE nome='".gdrcd_filter('in',$_REQUEST['pg'])."'", 'result');
$px_spesi=0;}
while ($row=gdrcd_query($result, 'fetch')){
/*Costo in px della singola abilità*/
$px_abi=$PARAMETERS['settings']['px_x_rank']*(($row['grado']*($row['grado']+1))/2);
/*Costo totale*/
$px_spesi+=$px_abi;
$ranks[$row['id_abilita']]=$row['grado'];
}
gdrcd_query($result, 'free');
/*Incremento skill*/
if((gdrcd_filter('get',$_REQUEST['op'])=='addskill') && (($_SESSION['login']==gdrcd_filter('out',$_REQUEST['pg']))||($_SESSION['permessi']>=MODERATOR))){
$px_necessari=$PARAMETERS['settings']['px_x_rank']*($ranks[$_REQUEST['what']]+1);
if(($px_totali_pg-$px_spesi)>=$px_necessari){
$px_spesi+=$px_necessari;
if ($px_necessari==$PARAMETERS['settings']['px_x_rank']){
$query="INSERT INTO clgpersonaggioabilita (id_abilita, nome, grado) VALUES (".gdrcd_filter('num',$_REQUEST['what']).", '".gdrcd_filter('in',$_REQUEST['pg'])."', 1)";
$ranks[$_REQUEST['what']]=1;
#echo $query;
} else {
$ranks[$_REQUEST['what']]++;
$query="UPDATE clgpersonaggioabilita SET grado = ".$ranks[$_REQUEST['what']]." WHERE id_abilita = ".gdrcd_filter('num',$_REQUEST['what'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
}//else
gdrcd_query($query);
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['modified']).'</div>';
}//if
}//if
/*Decremento skill*/
if((gdrcd_filter('get',$_REQUEST['op'])=='subskill') && ($_SESSION['permessi']>=MODERATOR)){
if ($ranks[$_REQUEST['what']]==1){
$query="DELETE FROM clgpersonaggioabilita WHERE id_abilita = ".$_REQUEST['what']." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' LIMIT 1";
$ranks[$_REQUEST['what']]=0;
} else {
$ranks[$_REQUEST['what']]--;
$query="UPDATE clgpersonaggioabilita SET grado = ".$ranks[$_REQUEST['what']]." WHERE id_abilita = ".$_REQUEST['what']." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
}//else
gdrcd_query($query);
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['modified']).'</div>';
}//if
if (isset($_REQUEST['op'])===FALSE){
?>
<?php if($PARAMETERS['mode']['skillsystem']=='ON'){ //solo se è attiva la modalità skillsystem?>
<div class="elenco_abilita"><!-- Elenco abilità -->
<div class="titolo_box">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['box_title']['skills']); ?>
</div>
<?php
//conteggio le abilità
$row=gdrcd_query("SELECT COUNT(*) FROM abilita WHERE id_razza=-1 OR id_razza= ".$record['id_razza']."");
$num=$row['COUNT(*)'];
//carico l'elenco delle abilità
$result=gdrcd_query("SELECT nome, car, id_abilita FROM abilita WHERE id_razza=-1 OR id_razza= ".$record['id_razza']." ORDER BY id_razza DESC, nome", 'result');
$count=0;
$total=0;?>
<div class="form_info"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['avalaible_xp']).': '.($px_totali_pg-$px_spesi);?></div>
<div class="div_colonne_abilita_scheda">
<table class="colonne_abilita_scheda"><tr>
<?php while($row=gdrcd_query($result, 'fetch')){
if ($count==0){echo '<td><table>';}?>
<tr>
<td><div class="abilita_scheda_nome">
<a href="popup.php?page=user_abilita&id_abilita==<?php echo $row['id_abilita']; ?>">
<h2><?php echo gdrcd_filter('out',$row['nome']); ?></h2>
</a>
</div></td>
<td>
<div class="abilita_scheda_car">
<?php echo '('.gdrcd_filter('out',$PARAMETERS['names']['stats']['car'.$row['car']]).')'; ?>
</div>
</td>
<td><div class="abilita_scheda_tank"><?php echo 0+gdrcd_filter('out',$ranks[$row['id_abilita']]); ?></div></td>
<td>
<div class="abilita_scheda_sub">
<?php /*Stampo il form di incremento se il pg ha abbastanza px*/
if((((($ranks[$row['id_abilita']]+1)*$PARAMETERS['settings']['px_x_rank'])<=($px_totali_pg-$px_spesi))&&
(gdrcd_filter('get',$_REQUEST['pg'])==$_SESSION['login'])&&
($ranks[$row['id_abilita']]<$PARAMETERS['settings']['skills_cap']))||
($_SESSION['permessi']>=MODERATOR)){ ?>
[<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']) ?>&op=addskill&what=<?php echo $row['id_abilita'] ?>">+</a>]
<?php if(($_SESSION['permessi']>=MODERATOR)&&
($ranks[$row['id_abilita']]>0)){ ?>
[<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']) ?>&op=subskill&what=<?php echo $row['id_abilita'] ?>">-</a>]
<?php } ?>
<?php } else { echo ' ';} ?>
</div>
</td>
</tr>
<?php $count++; $total++;
if (($count>=ceil($num/2))||($total>=$num)){$count=0; echo '</table></td>';}
}
}
}//while
gdrcd_query($result, 'free');
?>
</tr>
</table>
</div>
<div class="form_info"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['info_skill_cost']);?></div>
</div>
<!-- Elenco abilità -->
<!-- Link a piè di pagina -->
<div class="link_back">
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
<?php } ?>
</div>
Riscontrato un problema enorme... non fa più incrementare le skill...
14/05/2020 22:17:03
il mio consiglio e' creare una nuova pagina sotto pages chiamala tipo scheda_abilita.inc.php o come reputi meglio
usi un valore tipo $_GET['id'] e fai un
SELECT descrizione FROM abilita WHERE id_abilita = ".gdrcd_filter('in', $_GET['id'])." LIMIT 1;
in questo modo ottieni la descrizione e la stampi come ti serve.
per arrivare alla pagina puoi usare main.php?page=scheda_abilita&id=XXX caricando tutta la land oppure scheda_abilita.inc.php?id=XXX caricando solo la pagina
15/05/2020 12:19:38 e modificato da theodora il 15/05/2020 15:00:22
Ho provato...
Ho creato un nuovo file .php in pages (popup.php) per andare a prendere la descrizione, ho messo il richiamo in scheda_skill (ovvero la pagina in scheda pg con le abilità) ma credo di aver fatto tutto male... adesso mi da Modulo non trovato.
Invece per il problema che si è bloccato l'incremento delle skill?
La pagina con l'elenco delle abilità in scheda si visualizza, ma al momento di aumentarle mi rimanda non alla scheda ma solo al background del pg.
So che ho toppato (all'inizio funzionava) solo che non riesco a capire dove è l'errore.
15/05/2020 15:37:24
La ricerca di errori su gdrcd è un incubo. Per questo il consiglio che viene dato di solito è fare una copia di backup prima di fare modifiche. Appena ho tempo vedo di controllare il codice che hai postato per vedere se ci sono errori.
Per quanto riguarda modulo non trovato è perché la pagina main.php si aspetta una variabile page=NomePagina dove NomePagina è un file pages/NomePagina.inc.php
15/05/2020 16:15:12
Ok, intanto ti ringrazio per la pazienza e gentilezza.
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!
Cafuné ↗
Crossout ↗
Exclusive Villa GdR ↗
World of Warship ↗
Project Entropy ↗
AlterEgo ↗