Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Tipo di campo per prezzo (valuta euro in decimale)

    Salve a tutti,

    in un database mySQL all'interno di una tabella 'ordini' di un carrello ho un campo PREZZO.
    Il dato contenuto nel campo prezzo dovra' essere trattato con delle operazioni matematiche quindi deve mantenere il suo formato numerico.

    Qual'e' secondo voi il TIPO di dato piu' corretto da usare in questo caso (valuta in euro con 2 decimali) Double, Decimal, Float?


    Grazie,
    Jotto

  2. #2
    decimal (5,2) dove 2 indica il numero di decimali dopo la virgola

  3. #3
    Grazie per la risposta Sanctis,

    io ho inserito come consigliavi tu Decimal 5,2
    Il dato in fase di inserimento deve essere inserito nel formato xxxxx.yy quindi con il punto, il problema e' che ad esempio un prezzo di 12345.00 euro viene visualizzato dall'utente come 12345 cosi' come un prezzo di 12345,50 viene visualizzato come 12345,5
    Come e' ovvio lo zero come ultima cifra decimale non viene considerato, io pero' lato utente devo mantenere sempre il formato xxxxx,yy con 2 cifre decimali.
    Immagino che lato database non si possa fare, quindi devo gestirlo lato programmazione vero? :master:

    Infine... il prezzo prelevato dalla tabella PRODOTTI viene visualizzato in una certa pagina, quando l'utente inserisce un prodotto nel carrello, tale prodotto e i suoi dati (prezzo compreso) vengono inseriti nella tabella Ordini, in questo momento il prezzo 12345.50 diventato in visualizzazione 12345,0 non viene memorizzato correttamente nel campo prezzo in quanto non mantiene il formato originale col punto.

    Anche in questo caso devo gestire il tutto lato programmazione con un replacement? :master:

    Grazie ancora,
    jotto

  4. #4
    decimal (5,2)

    si per il 2 come numero dei decimali, ma il 5 e' comprensivo anche dei due decimali. Aumenta la dimensione del campo...

    decimal(8,2) per esempio sara' un totale di 8 cifre di cui 2 decimali.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ciao Piero,

    grazie per il chiarimento usero' DECIMAL (8,2) cosi' come consigliavi.

    Rimane irrisolta la questione del cambio di formattazione che genera un errore.
    La sequenza e' la seguente.

    Il database contiene il dato campo PREZZO: 12345.50 nella TABELLA PRODOTTI
    La PAGINA WEB visualizza il PREZZO cosi' 12345,5 (virgola al posto del punto e zero eliminato)
    Quando l'utente mette il prodotto nel carrello, la procedura prova a registrare il campo PREZZO nella tabella TABELLA ORDINI ricevo l'errore perche' il dato non corrisponde alla formattazione infatti conteniene una virgola al posto del punto.

    Dici che l'unica soluzione e' un replace dal punto con la virgola?

    Grazie ancora,
    Jotto

  6. #6
    Originariamente inviato da j0tt0
    Ciao Piero,
    Dici che l'unica soluzione e' un replace dal punto con la virgola?

    Grazie ancora,
    Jotto
    di certo e' una, un'altra e' quella di fare due campi di inserimento uno per i decimali ed uno per le unita' ed il punto di unione invece della virgola lo metti tu.

    esiste anche number_format() e (s)printf per formattare un numero da presentare a video. Tenendo presente che dopo di che sara' diventato una stringa e non piu' un numero.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Provero' a tradurre in ASP (si il sito e' fatto cosi... ) i comandi che suggerivi.

    Ultima curiosita', qualcuno mi ha consigliato di usare FLOAT come tipo di dato, mi sapresti dire la differenza?

    Grazie,
    Jotto

  8. #8
    il float è sempre un decimale ma ha una precisione maggiore cioè piu numeri dopo la virgola
    http://www.andreacozzi.net/

  9. #9
    Il dato in fase di inserimento deve essere inserito nel formato xxxxx.yy quindi con il punto, il problema e' che ad esempio un prezzo di 12345.00 euro viene visualizzato dall'utente come 12345 cosi' come un prezzo di 12345,50 viene visualizzato come 12345,5
    Come e' ovvio lo zero come ultima cifra decimale non viene considerato, io pero' lato utente devo mantenere sempre il formato xxxxx,yy con 2 cifre decimali.
    Usa un campo solo nel db e nelle pagine .php usa bcscale(2) prima di ogni calcolo matematico con le funzioni BCMath,nel sito php.net c'è un esempio e te l'ho personalizzato diciamo per il tuo scopo:
    fai che $a sia il prezzo del prodotto e lo moltiplichi per 1

    Codice PHP:
    bcscale(2
    $ab bcmul($a,1);   //bcmul è una funzione che moltiplica
    echo $ab
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

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.