Ragazzi, mi trovo nella difficoltosa situazione di avere un codice di questo tipo:
Codice PHP:
if((gdrcd_filter('get',$_REQUEST['op'])=='editskill') && (($_SESSION['login']==gdrcd_filter('out',$_REQUEST['pg']))||($_SESSION['permessi']>=MODERATOR))){
$px_necessari=$PARAMETERS['settings']['px_x_rank']*($_POST['rango1']);
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',$_POST['abilita1']).", '".gdrcd_filter('in',$_REQUEST['pg'])."', ".gdrcd_filter('num',$_POST['rango1']).")";
} else {
$query="UPDATE clgpersonaggioabilita SET grado = ".gdrcd_filter('num',$_POST['rango1'])." WHERE id_abilita = ".gdrcd_filter('num',$_POST['abilita1'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
}//else
gdrcd_query($query);
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['modified']).'</div>';
}//if
}//if
Ora, come vedere, io passo delle variabili via post da input con id progressi composto da una parola ed un numero (attualmente non in ordine progressivo, ma posso renderlo tale con un semplice paggio Ho provato in tutti i modi ad usare un ciclo, ma non riesco a capire completamente come fare e sono stato costretto a scrivere 12 volte la porzione di codice qui sopra correggendo il valore in modo da avere $_POST['abilita2'], $_POST['abilita3'], $_POST['abilita4'] ed idem per $_POST['rango1']... come posso fare in modo più pulito e meno barbaro? Grazie a tutti della risposta :D
Per maggiore informazione, la pagina in questione è questa:
Codice PHP:
<div class="pagina_scheda_abilita">
<div class="page_title">
<h2><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['box_title']['skills']); ?></h2>
</div>
<div class="page_body">
<?php
if (isset($_REQUEST['pg'])===FALSE){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';
} elseif($PARAMETERS['mode']['skillsystem']=='OFF'){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['warning']['cant_do']).'</div>';
} else {
$record=gdrcd_query("SELECT personaggio.* FROM personaggio WHERE personaggio.nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'", 'result');
$record=gdrcd_query($record, 'fetch');
$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'])=='editskill') && (($_SESSION['login']==gdrcd_filter('out',$_REQUEST['pg']))||($_SESSION['permessi']>=MODERATOR))){
$px_necessari=$PARAMETERS['settings']['px_x_rank']*($_POST['rango1']);
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',$_POST['abilita1']).", '".gdrcd_filter('in',$_REQUEST['pg'])."', ".gdrcd_filter('num',$_POST['rango1']).")";
} else {
$query="UPDATE clgpersonaggioabilita SET grado = ".gdrcd_filter('num',$_POST['rango1'])." WHERE id_abilita = ".gdrcd_filter('num',$_POST['abilita1'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."'";
}//else
gdrcd_query($query);
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['modified']).'</div>';
}//if
}//if
if (isset($_REQUEST['op'])===FALSE){
?>
<div class="panels_box">
<div class="elenco_record_gioco">
<div class="elenco_abilita"><!-- Elenco abilità -->
<?php
$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, id_abilita", 'result');
?>
<div class="form_info"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['avalaible_xp']).': <span id="esp">'.($px_totali_pg-$px_spesi.'</span>');?></div>
<table>
<?php while($row=gdrcd_query($result, 'fetch')){?>
<tr>
<td class="casella_elemento"><div class="elementi_elenco_abilita"><?php echo gdrcd_filter('out',$row['nome']); ?></div></td>
<td class="casella_elemento"><div class="elementi_elenco"><?php echo '('.gdrcd_filter('out',substr($PARAMETERS['names']['stats']['car'.$row['car']], 0, 3)).')'; ?></div></td>
<td class="casella_elemento"><div class="elementi_elenco"><?php echo 0+gdrcd_filter('num',$ranks[$row['id_abilita']]); ?></div></td>
<td>
<div class="casella_elemento">
<form action="main.php?page=scheda_abilita&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>" method="post" name="add_skill" id="add_skill">
<?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))<=$record['esperienza'])&&($ranks[$row['id_abilita']]<$PARAMETERS['settings']['skills_cap'])&&((gdrcd_filter('get',$_REQUEST['pg'])==$_SESSION['login'])||($_SESSION['permessi']>=MODERATOR))) { ?>
<input type="hidden" value="<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>" name="pg" />
<input type="hidden" value="addskill" name="op" />
<input type="hidden" value="<?php echo gdrcd_filter('num', $row['id_abilita']); ?>" name="abilita" />
<input type="submit" value="+" />
<?php } else { echo '<input type="submit" value="/" disabled />'; }?>
</form>
<?php if(($_SESSION['permessi']>=MODERATOR)&&
($ranks[$row['id_abilita']]>0)){ ?>
<form action="main.php?page=scheda_abilita&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>" method="post" name="sub_skill" id="sub_skill">
<input type="hidden" value="<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>" name="pg" />
<input type="hidden" value="subskill" name="op" />
<input type="hidden" value="<?php echo gdrcd_filter('num', $row['id_abilita']); ?>" name="abilita" />
<input type="submit" value="-" onClick="javascript:disable(sub_skill)"/>
</form>
<?php }?>
</div>
</td>
</tr>
<?php
}//while
gdrcd_query($result, 'free');
?>
</table>
<div class="form_info"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['info_skill_cost']);?></div>
</div></div></div><!-- Elenco abilità -->
<!-- Link a piè di pagina -->
</div>
<?php } else { ?>
<div class="link_back">
<a href="main.php?page=scheda_abilita&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out', $MESSAGE['interface']['sheet']['ability']['link']['back']); ?></a>
</div>
<?php } ?>
<div class="link_back">
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('get',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
<?php } ?>