Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di debugger84
    Registrato dal
    Oct 2019
    residenza
    Orani (NU)
    Messaggi
    11

    Problema con le cifre decimali

    Ciao a tutti dal vostro debugger alle prime armi. La pagina delle prenotazioni del mio sito ha un problema che ancora non sono riuscito a risolvere.
    https://www.janaemele.com/carrello/t...ingonline.html
    Per alcuni prodotti il prezzo che ho messo, di due zeri dopo la virgola, perché si tratta dell'Euro (si scrive 1,00 €), aggiungendo il prodotto al carrello la pagina lo visulaizza correttamente, anche aumentando la quantità da ordinare. Per altri prodotti, invece, la pagina dà un prezzo sbagliato, aumentando la cifra di un centesimo (es. 9,01 € anziché 9,00 €).
    In una sottocartella nascosta, online, aumentando il numero delle cifre dopo la virgola a 4, sono riuscito a risolvere il problema (ma dovrebbe risolversi anche con sole due cifre dopo la virgola, come è normale che sia, e invece questo non avviene). Non aumenta più neanche di un centesimo, anche ordinando 50 pezzi di ogni prodotto.
    Ora però sorge un altro problema: nella e-mail di conferma dell'ordine, il prezzo è sbagliato, superiore al dovuto, per quanto riguarda i prodotti che nella pagina aumentavano di un centesimo, e soprattutto ti mostra un prezzo di quei prodotti, oltre che il totale, di 8 o 9 cifre dopo la virgola.
    Esempio:

    • Prodotto: Crema Corpo Olea 100ml
    • Quantità : 1
    • Costo: 15 Euro
    • Costo Totale Prodotto: 15 Euro
    • Prodotto: Crema Lenitiva Mani e Corpo 100ml
    • Quantità : 1
    • Costo: 18 Euro
    • Costo Totale Prodotto: 18 Euro
    • Prodotto: Crema Viso Lepia 50ml
    • Quantità : 1
    • Costo: 20 Euro
    • Costo Totale Prodotto: 20 Euro
    • Prodotto: Crema Viso Diosa 30ml
    • Quantità : 1
    • Costo: 22.0015 Euro
    • Costo Totale Prodotto: 22.0015 Euro
    • Prodotto: Crema Mani Galena 75ml
    • Quantità : 1
    • Costo: 9.006 Euro
    • Costo Totale Prodotto: 9.006 Euro
    • Prodotto: Deodorante Deo Roll-On 50ml
    • Quantità : 1
    • Costo: 9.506 Euro
    • Costo Totale Prodotto: 9.506 Euro
    • Totale Costo Prodotti: 93.5135 Euro
    • Totale Sconto: 9.35135 Euro
    • Totale Costo Prodotti Scontato: 84.16215 Euro
    • Totale Spese di Spedizione: 0 Euro
    • Totale per Bonifico Bancario: 84.16215 Euro


    Dove devo intervenire secondo voi? Grazie mille per il vostro aiuto, vi sono riconoscente già da questo momento...
    Ultima modifica di ciro78; 19-11-2019 a 21:16 Motivo: titolo troppo generico

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Ciao debugger,
    benvenuto sul forum.

    A quanto pare ti sei iscritto ma non hai letto bene il regolamento....non sono ammessi titoli troppo generici. Ad ogni modo essendo nuovo non c'è problema. Ho corretto io.

    Ad occhio e croce quello che manifesti è un problema con gli arrotondamenti dei decimali.

    Però quando chiedi aiuto, non basta che posti il collegamento al tuo sito. Serve anche capire come è fatto il codice. Quindi capire cosa succede al click dei pulsanti aggiungi al carrello.

    Questo perché nessuno si metterà a fare il reverse del tuo codice solo per capire cosa fa.

    Quindi perché non ci dai dettagli sul problema e ci mostri un po di codice? (usando il tag code come spiegato nel regolamento)
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao

    Risposta breve: nella tua pagina togli i commenti dagli span dove ci sta il prezzo.

    Quote Originariamente inviata da ciro78
    Questo perché nessuno si metterà a fare il reverse del tuo codice solo per capire cosa fa.
    io... ma solo 5 minuti per capire dove stava il problema

    Risposta estesa:
    Ho giocato un po' sulla pagina e spulciato nello script per verificare dove sta e cosa fa la funzione usata per aggiungere gli articoli al carrello.
    Di fatto tale funzione (addToCart) si basa sul prezzo che è riportato sulla pagina, o meglio, preleva letteralmente il contenuto testuale che sta dentro lo <span> (quello che teoricamente dovrebbe contenere il valore del prezzo) sotto ogni relativo articolo, quindi ne fa un replace per eliminare, sostanzialmente, tutti i caratteri mantenendo solo le cifre numeriche e il punto.

    Ora, dove sta il problema?

    Prendiamo questo caso (il primo articolo di quella pagina):

    codice:
    <span class="item_price">15.00
                                  €</span>
    la funzione preleva il valore "15.00 €" (in teoria c'è anche un carattere di ritorno a capo ma poco cambia) quindi elabora il dato e restituisce il valore "15.00" ripulito da tutti i caratteri "inutili".

    Fin qui tutto ok.
    Prendiamo invece un caso dove avviene il problema (dove tu hai verificato che il prezzo viene aumentato di un centesimo), ad esempio il 6° articolo.

    Cosa c'è esattamente dentro il relativo span del prezzo?

    Dall'analisi degli elementi vedo questo:
    codice:
    <span class="item_price">9.50 €<!--6.65--></span>
    C'è un commento HTML dentro lo span; presumo fosse solo un esempio di prezzo o forse un precedente valore mantenuto commentato per un qualche motivo... boh

    Certo, è solo un commento che hai fini pratici non dovrebbe influire sulle funzionalità della pagina... o forse sì

    Cosa avviene nella funzione addToCart?
    Stessa storia di prima: la funzione prende l'intero valore trovato dentro lo span "9.50 €<!--6.65-->" quindi lo ripulisce dai caratteri inutili e restituisce esattamente il valore "9.506.65".

    Nelle operazioni successive viene poi convertito nel valore numerico 9.506 attraverso un parseFloat; tale valore viene usato per eseguire le operazioni nel carrello anche se sulla pagina, nel carrello, questo valore è troncato alla seconda cifra decimale.

    La causa è quindi la presenza di quei commenti dentro lo span, i quali contengono dei caratteri numerici che non dovrebbero essere considerati ma, di fatto, lo sono.

    Per risolvere, in modo semplice, ripulisci i contenuti di quegli span, limitandoti ad inserire solo i prezzi e nulla di più.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Utente di HTML.it L'avatar di debugger84
    Registrato dal
    Oct 2019
    residenza
    Orani (NU)
    Messaggi
    11
    Fantastico!! Il problema sarebbero i commenti all'interno della span e mi basta spostare i commenti fuori dalla span per funzionare? Ci provo, e tra poco ti faccio sapere! Sei un Genio! Grazie del tuo aiuto, speriamo che funzioni.

    P.S.: sì, i commenti sono i prezzi precedenti, quelli che ho messo scontati del 30% per la "Black Week" del sito.
    Ah, Grazie anche a te Ciro78.
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao

    Risposta breve: nella tua pagina togli i commenti dagli span dove ci sta il prezzo.


    io... ma solo 5 minuti per capire dove stava il problema

    Risposta estesa:
    Ho giocato un po' sulla pagina e spulciato nello script per verificare dove sta e cosa fa la funzione usata per aggiungere gli articoli al carrello.
    Di fatto tale funzione (addToCart) si basa sul prezzo che è riportato sulla pagina, o meglio, preleva letteralmente il contenuto testuale che sta dentro lo <span> (quello che teoricamente dovrebbe contenere il valore del prezzo) sotto ogni relativo articolo, quindi ne fa un replace per eliminare, sostanzialmente, tutti i caratteri mantenendo solo le cifre numeriche e il punto.

    Ora, dove sta il problema?

    Prendiamo questo caso (il primo articolo di quella pagina):

    codice:
    <span class="item_price">15.00
                                  €</span>
    la funzione preleva il valore "15.00 €" (in teoria c'è anche un carattere di ritorno a capo ma poco cambia) quindi elabora il dato e restituisce il valore "15.00" ripulito da tutti i caratteri "inutili".

    Fin qui tutto ok.
    Prendiamo invece un caso dove avviene il problema (dove tu hai verificato che il prezzo viene aumentato di un centesimo), ad esempio il 6° articolo.

    Cosa c'è esattamente dentro il relativo span del prezzo?

    Dall'analisi degli elementi vedo questo:
    codice:
    <span class="item_price">9.50 €<!--6.65--></span>
    C'è un commento HTML dentro lo span; presumo fosse solo un esempio di prezzo o forse un precedente valore mantenuto commentato per un qualche motivo... boh

    Certo, è solo un commento che hai fini pratici non dovrebbe influire sulle funzionalità della pagina... o forse sì

    Cosa avviene nella funzione addToCart?
    Stessa storia di prima: la funzione prende l'intero valore trovato dentro lo span "9.50 €<!--6.65-->" quindi lo ripulisce dai caratteri inutili e restituisce esattamente il valore "9.506.65".

    Nelle operazioni successive viene poi convertito nel valore numerico 9.506 attraverso un parseFloat; tale valore viene usato per eseguire le operazioni nel carrello anche se sulla pagina, nel carrello, questo valore è troncato alla seconda cifra decimale.

    La causa è quindi la presenza di quei commenti dentro lo span, i quali contengono dei caratteri numerici che non dovrebbero essere considerati ma, di fatto, lo sono.

    Per risolvere, in modo semplice, ripulisci i contenuti di quegli span, limitandoti ad inserire solo i prezzi e nulla di più.

  5. #5
    Utente di HTML.it L'avatar di debugger84
    Registrato dal
    Oct 2019
    residenza
    Orani (NU)
    Messaggi
    11
    Non so come ringraziarti. Sei un grande. E io sono piccolo come una formica. Mi hai spiegato alla perfezione una funzionalità di JavaScript. Essendo io un programmatore alle prime armi in conto di JavaScript, ovviamente non lo conosco. Grazie. Funziona alla perfezione, anche l'e-mail.

  6. #6
    Utente di HTML.it L'avatar di debugger84
    Registrato dal
    Oct 2019
    residenza
    Orani (NU)
    Messaggi
    11
    Grazie, chiedo scusa per l'inconveniente. Grazie all'utente KillerWorm il problema è risolto. Io sono ancora una formica in conto di programmazione JavaScript e PHP. Cercherò di seguire il regolamento da ora in poi. E' che quando hai un problema urgente da risolvere il resto non conta. Cerco di studiarmi il regolamento. Chapeau.

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da debugger84
    Fantastico!!
    [...]
    Cerco di studiarmi il regolamento. Chapeau.
    Buon proseguimento e sereno weekend
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.