Visualizzazione risultati 1 fino 3 di 3

Discussione: Possibile con un ciclo?

  1. #1
    Guest

    Question Possibile con un ciclo?

    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 } ?>
    Ultima modifica di morgensterngdr : 01-02-2013 alle ore 02.32.17

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Citazione Originalmente inviato da morgensterngdr Visualizza messaggio
    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?
    Perché non puoi farlo con un ciclo? Mettendo 2 variabili, una per contare il rango e una per l'abilità?

    Codice PHP:
    for($rango=1;$rango<MAX_RANGO;$rango++)
    {
    for(
    $abilita=1;$abilita<MAX_ABILITA;$abilita++)
    {
    .....
    $_POST['abilita'.$abilita];
    $_POST['rango'.$rango];
    }
    }
    Il fatto che i cicli siano uno dentro l'altro, presuppone che hai tutti i ranghi per ogni abilità. In realtà non so come lo vuoi...

    Ciao!
    Ultima modifica di alemoppo : 01-02-2013 alle ore 03.02.16

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Perché non puoi farlo con un ciclo? Mettendo 2 variabili, una per contare il rango e una per l'abilità?

    Codice PHP:
    for($rango=1;$rango<MAX_RANGO;$rango++)
    {
    for(
    $abilita=1;$abilita<MAX_ABILITA;$abilita++)
    {
    .....
    $_POST['abilita'.$abilita];
    $_POST['rango'.$rango];
    }
    }
    Il fatto che i cicli siano uno dentro l'altro, presuppone che hai tutti i ranghi per ogni abilità. In realtà non so come lo vuoi...

    Ciao!
    sì sì! è esattamente così! Provo subito! Ammetto che... non avevo provato a mettere .$nomevariabile XD avevo provato di tutto tranne questo XD provo subito e ti faccio sapere :D


    AGGIORNAMENTO: Grazie Ale! Funziona perfetto! Devo solo implementare qualche verifica ed il gioco è fatto! Non so come ho fatto a non pensare a scrivere $_POST['abilita'.$abilita]... le avevo provate di tutte tranne questa credimi XD Tutto il mio problema era ricchiamare la corretta variabile $_POST.
    Ultima modifica di morgensterngdr : 01-02-2013 alle ore 04.35.33 Motivo: Risolto grazie ad Alemoppo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •