Visualizzazione risultati 1 fino 5 di 5

Discussione: Esplodere una stringa e prenderne i valori

  1. #1
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito Esplodere una stringa e prenderne i valori

    Buonasera,
    ho un problema.. devo fare la somma automatica di alcuni checkbox, il problema è che il value della checkbox è composto da 3 variabili.

    ES.

    Valore checkbox: servizio|10,00|50

    A me serve che io passi come valore 10,00.
    Questo perchè poi sarà sommato agli altri checkbox formati dalla stessa colonna.

    Mi occorre in questo formato perche devo passare ad un altra pagina la descrizione e l'id oltre al valore, mentre per come l'avevo fatta io (funzionava benissimo) passavo il valore e facevo la somma.
    Potete aiutarmi?
    è uno script che si concatena a php se vi servono altre specifiche chiedete pure...

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

    Predefinito

    Citazione Originalmente inviato da AdminTeclis Visualizza messaggio
    Valore checkbox: servizio|10,00|50

    A me serve che io passi come valore 10,00.
    In che senso devi passare come valore 10?

    Comunque, stando al titolo del topic, puoi esplodere la stringa con stringa.split(), passandogli come valore il carattere separatore.

    Ciao!

  3. #3
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Grazie per la risposta.. Capisco che sia difficile da capire cosi.. Posto lo script di cui parlo :

    Codice PHP:
    $j=0;
    while (
    $j < $i)
    {
    $disponibilita = $xml->Servizi[$j];
    echo
    ''.$xml->Servizi[$j]->Descrizione.' : <input type="checkbox" name="costo[]" value="'.$xml->Servizi[$j]->Descrizione.'|'.$disponibilita->Importo.'|'.$disponibilita->kServizio.'" id ="costo[]" onclick="calcolaTotale(this);" />';
    echo
    '<input type="hidden" name="descserv[]" id="descserv" value="'.$xml->Servizi[$j]->Descrizione.'" />';
    echo
    '<input type="hidden" name="kservizio[]" id="kservizio" value="'.$disponibilita->kServizio.'" />';
    $j++;
    }
    $k = count($xml->Coperture);
    echo
    "<h3>Coperture: (".$k.")</h3>" ;
    $l=0;
    while (
    $l < $k)
    {
    $coperture = $xml->Coperture[$l];
    echo
    ''.$coperture->Descrizione.' : <input type="checkbox" name="costo[]" id ="costocop[]" value="'.$coperture->Importo.'" onclick="calcolaTotale(this);" /><br>';
    echo
    '<input type="hidden" name="descop[]" id="descserv" value="'.$coperture->Descrizione.'" />';
    echo
    '<input type="hidden" name="kservizio[]" id="kservizio" value="'.$disponibilita->kServizio.'" />';
    $l++;
    }
    ?>
    Codice HTML:
    Importo Noleggio: <input type="text" name="importo" value="<?php echo $xml->Importo; ?>" onFocus="startCalc();" onBlur="stopCalc();" />
    Totale Accessori: <input type="text" name="totale" readonly onFocus="startCalc();" onBlur="stopCalc();"/>
    </b>
    Totale Noleggio: <input type="text" name="myresult" readonly="readonly" />
    <input type="submit" id="invia" name="invia" value="PROSEGUI" />
    </form>
    <script language="javascript">
    function calcolaTotale(c) {
    var one=0;
    one = <?php echo($xml->Importo);?> ;
    var allChecks = document.testform.elements[c.name];
    var tot = 0;
    for (var i = 0; i < allChecks.length; i++) {
    tot += (allChecks[i].checked ? parseFloat(allChecks[i].value) : 0);
    }
    document.testform.totale.value = tot;
    document.testform.myresult.value = ((one * 1) + (tot * 1));
    }
    </script>
    Ecco io devo passare quello che sta scritto dentro il checkbox costo[] (sono i tre valori dell'esempio Servizio|10,00|50)
    Io devo far si che quando clicco esploda la stringa e etiri fuori solamente il 10,00 e lo somma automaticamente tramite lo scriptino java...

  4. #4
    AdminTeclis non è connesso Utente
    Data registrazione
    29-12-2004
    Messaggi
    128

    Predefinito

    Sono arrivato ad una simil conclusione, ma ho problemi nel ciclare i dati probabilmente... A me serve che dalla stringa che splitto prendo sempre il secondo valore.
    Quindi se è checkato aggiungo altrimenti segno 0.
    Ho fatto questo script ma mi restituisce NaN dopo il secondo check...

    Codice HTML:
    <script language="javascript">
    function calcolaTotale(c) {
    var one=0;
    one = parseFloat(<?php echo($xml->Importo);?> );
    var allChecks = document.testform.elements[c.name];
    var tot = 0;
    for (var i = 0; i < allChecks.length; i++) {
    miastringa = new String(allChecks[i].value)
    miaarray = miastringa.split("|")
    if (allChecks[i].checked == true){
    allChecks[i].value = miaarray[i];
    } else {
    allChecks[i].value = 0;
    }
    tot += (allChecks[i].checked ? parseFloat(allChecks[i].value) : 0);
    }
    document.testform.totale.value = tot;
    document.testform.myresult.value = ((one * 1) + (tot * 1));
    }
    </script>
    Cosa sbaglio???

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

    Predefinito

    Solitamente appare NaN quando un addendo non è una cifra valida.

    Per vedere meglio il problema, dovresti quindi controllare tutti i termini che sommi e assicurarti che non ci siano "non-cifre". Se vuoi ulteriori aiuti, ti è possibile linkare una pagina di prova? Perché così senza vedere il codice in esecuzione non è semplice.

    Comunque la sommatoria potresti metterla dentro la prima condizione dell'if, così eviti l'operatore ternario (ovviamente non è errato, ma fai un confronto che hai già eseguito precedentemente).

    Ciao!

Regole di scrittura

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