Visualizzazione risultati 1 fino 7 di 7

Discussione: [js] aiuto x un esercizio

  1. #1
    Guest

    Question [js] aiuto x un esercizio

    Per favore potreste dare un occhiata anche a questo esercizio che proprio non so da dove cominciare. L'immagine non riesco ad allegarla. Ditemi come posso fare...
    Grazie.


    Scrivere la funzione javascript per aggiornare i totali (parziali e non) e l’IVA di un preventivo simile a quello che appare in figura. Si tenga presente che il modulo HTML che rappresenta il preventivo viene generato da PHP leggendo le informazioni da un database, quindi non si conosce a priori il numero di “righe” presenti nel preventivo (dovete essere voi a codificarlo opportunamente ).

    immagine



    I totali devono essere aggiornati ogni volta che si cambia il campo “Quantità” di un oggetto nel preventivo. Scrivere anche il codice HTML relativo ad una riga tralasciando il contenuto di “Descrizione”. Il rettangolo attorno ai numeri indica che si tratta di una casella di testo (la seconda è a sola lettura). Si supponga che la casella relativa all’IVA (quella con il valore 15 infigura) si chiami iva e che la che la casella relativa al Totale (quella con il valore 90 in figura) si chiami totale. Potete codificare come volete il costo unitario, anche se codificarlo come una casella di testo è la cosa più conveniente.

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Forse sarebbe meglio che allegassi l'immagine (o l'hai presa da un libro e non hai lo scanner?). Beh, ecco come si fa:

    - caricala nel tuo spazio web, magari in una posizione non accessibile tramite link del tuo sito
    - modifica il tuo messaggio precedente (o scrivine uno nuovo visto che sono intervenuto io), dove va posizionata l'immagine premi il pulsante : comparirà una finestra di prompt, che purtroppo è stata realizzata male (leggi: a me non dice molto "Inserire il testo da formattare"...), ma non ti chiede altro che il percorso HTTP dell'immagine sul tuo sito (mettiamo qualcosa tipo http://uranya71.altervista.org/extra/immagine.jpg/)

    Poi, quando avrai risolto la cosa, puoi sempre rimuovere l'immagine e qui non si vedrà più ovviamente...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Grazie, ora ci riprovo.

    Scrivere la funzione javascript per aggiornare i totali (parziali e non) e l’IVA di un preventivo simile a quello che appare in figura. Si tenga presente che il modulo HTML che rappresenta il preventivo viene generato da PHP leggendo le informazioni da un database, quindi non si conosce a priori il numero di “righe” presenti nel preventivo (dovete essere voi a codificarlo opportunamente ).




    I totali devono essere aggiornati ogni volta che si cambia il campo “Quantità” di un oggetto nel preventivo. Scrivere anche il codice HTML relativo ad una riga tralasciando il contenuto di “Descrizione”. Il rettangolo attorno ai numeri indica che si tratta di una casella di testo (la seconda è a sola lettura). Si supponga che la casella relativa all’IVA (quella con il valore 15 infigura) si chiami iva e che la che la casella relativa al Totale (quella con il valore 90 in figura) si chiami totale. Potete codificare come volete il costo unitario, anche se codificarlo come una casella di testo è la cosa più conveniente.

  4. #4
    L'avatar di smilzo666
    smilzo666 non è connesso Utente
    Data registrazione
    22-09-2003
    Residenza
    La Capitale
    Messaggi
    114

    Predefinito

    Se ho capito bene il problema una soluzione potrebbe essere questa:

    nella creazione della tabella (fatta all'interno della fetch del resultset restituito dalla query)
    dovrai crearti, per ogni riga, degli oggetti input di tipo text che saranno sostanzialmente 3 (per ogni riga)
    uno per la quantità, uno per l'importo unitario e uno per il totale parziale
    dovrai assegnare a questi oggetti un nome composto da una stringa fissa e un numero che identifica il numero di riga
    es: quantitaXX, importoXX, parzialeXX

    per fare questo basta usare un indice che imposterai a 0 prima del ciclo di fetch
    es:

    $i = 0;

    all'interno del ciclo gli oggetti li costruirai così:

    <input type="text" name="quantita<? echo $i ?>" value="0" onchange="javascript:quantitaChange('<? echo $i ?>');" />

    <input type="text" name="importo<? echo $i ?>" value="<? echo $row->XXX; ?>" readonly />

    <input type="text" name="parziale<? echo $i ?>" value="0" readonly />

    e naturalmente incrementerai $i

    p.s. l'importo e il parziale sono readonly perché chiaramente non sono modificabili a mano ma vengono calcolati via js



    dopo il ciclo di fetch aggiungerai gli oggetti:

    <input type="text" name="iva" value="[valoredidefault]" /> e <input type="text" name="totale" value="0" readonly />



    a questo punto ti serve solo la funzione javascript quantitaChange che fa i calcoli:


    function quantitaChange(indice)
    {
    var quantita = 0;
    var importo = 0;
    var parziale = 0;

    var qtname = "documenti.nomeform.quantita" + indice;
    var qtobj = eval(qtname);
    var impname = "documenti.nomeform.importo" + indice;
    var impobj = eval(impname);
    var parzname = "documenti.nomeform.parziale" + indice;
    var parzobj = eval(parzname);

    if (qtobj) // Se l'indice è corretto e l'oggetto esiste
    {
    quantita = qtobj.value;
    importo = impname.value;
    parziale = quantita * importo;

    parzobj.value = parziale;

    calcTotale();
    }
    }

    function calcTotale()
    {
    var i = 0;
    var tot = 0;
    var iva = 0;

    var parzname = "document.nomeform.parziale0";
    var parzobj = eval(parzname);

    var ivaname = "documenti.nomeform.iva";
    var ivaobj = eval(ivaname);
    var totname = "documenti.nomeform.totale";
    var totobj = eval(totname);

    iva = ivaobj.value;

    while (parzobj)
    {
    tot = tot + parzobj.value;

    i = i + 1;

    parzname = "document.nomeform.parziale" + i;
    parzobj = eval(parzname);
    }

    if (tot > 0)
    {
    if (iva > 0)
    tot = tot + ((tot / 100) * iva);

    totobj.value = tot;
    }
    }



    Non l'ho provato ed è un po di tempo che non scrivo javascript quindi non so se è tutto corretto

    Prova
    "Vuoi rendere impossibile per chiunque opprimere un suo simile? Allora, assicurati che nessuno possa possedere il Potere."
    - M. Bakunin -

  5. #5
    Guest

    Predefinito

    grazie per il suggerimento. Non so se riuscirò a provarlo subito, perchè il compito è domani e mi conviene ripetere ciò che ho capito. La tua soluzione è per me molto complicata e non credo di riuscirla a "digerire" per domani. Resta un interrogativo...come si potrebbe fare un esercizio di questi insieme ad altri 5 (anche se meno difficili) in un'ora e mezza?
    Sono proprio scoraggiata.
    Grazie ancora per l'aiuto.

    Patrizia

  6. #6
    L'avatar di smilzo666
    smilzo666 non è connesso Utente
    Data registrazione
    22-09-2003
    Residenza
    La Capitale
    Messaggi
    114

    Predefinito

    beh... purtroppo non credo ci siano soluzioni più semplici e io non sono nemmeno tanto bravo a spiegare le cose e forse te l'ho reso ancora più difficile

    però se riesci a trovare il tempo di provarlo capirai meglio, il concetto non è così complicato.

    Cmq in bocca al lupo!
    "Vuoi rendere impossibile per chiunque opprimere un suo simile? Allora, assicurati che nessuno possa possedere il Potere."
    - M. Bakunin -

  7. #7
    Ospite Guest

    Predefinito

    io possiedo una cosa simile, il link è http://gsvisinale.altervista.org/shopping.sito , manca solo la parte del totale, ma è più completo perchè controlla che la quantità sia numerica e prevede un messaggio di errore al clic, più un segno di spunta, che non fa mai male.

Regole di scrittura

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