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

    Funzione number_format. La uso male?

    Ciao,
    ho un problema con i decimali utilizzando la funzione number_format.
    Faccio un esempio:

    Ho un campo text in un database valorizzato con 2,20
    prendo il valore dal campo e lo visualizzo e poi lo moltiplico per un altro numero
    (in parole povere è il prezzo x quantità)

    la variabile $prezzo_v la prendo dal db che ha valore 2,20
    la variabile $$valore_prod ha valore 2
    il codice
    Codice PHP:
        $prezzo_v mysql_result($res$i"prezzo");//prendeil valore dal campo db
        
    $prezzo_v number_format($prezzo_v2",",".");
        
    $totale_v $prezzo_v $valore_prod;            
        
    $totale_generale =$totale_generale $totale_v;
        
    $totale_v number_format($totale_v2",","."); 
    Con questo codice mi visualizza che
    - $prezzo_v --> 2,00
    - $totale_v --> 4,00
    invece dovrebbe essere
    - $prezzo_v --> 2,20
    - $totale_v --> 4,40

    Non riesco a capire dove sbaglio :master:

    Grazie in anticipo
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    number_format restituisce una stringa. quindi prima fai le operazioni matematiche e solo dopo va applicata al risultato.

  3. #3
    Grazie per la risposta nicola


    Ho provato a mettere la funzione number_format alla fine e mi dà lo stesso errore...
    sicuramente sbaglio qlc

    Utilizzo un array per memorizzare dei codici che servono poi per trovarmi la corrispondenza nel db.

    In parole povere:
    a) Memorizzo gli id record dei prodotti in un array
    b) Luppo l'array estraendo i singoli id record
    c) Con gli id estratti dall'array ci leggo il campo prezzo dal database
    d) Da qui in poi c'è il giochetto dei calcoli etc..

    Ti posto il codice per intero così (se hai 1 min) mi ci da n'occhiata, tanto sono righe elementari.

    Codice PHP:
    $totale_generale 0;
    $conta_valori count($idente);

    if (
    $conta_valori 0)

    {
        foreach(
    $idente as $codice_prod=>$valore_prod)
        { 
            if (
    $codice_prod != "")
            {
                
    $totale_generale 0;
                
    $totale_v 0;
                
    $res mysql_db_query("$nome_database""select * from prodotti where codice = '$codice_prod'");
                
    $num mysql_num_rows($res);
                
    $i0;
                
    $codice_v mysql_result($res$i"codice");
                
    $prezzo_v mysql_result($res$i"prezzo");



                
    $immagine_v mysql_result($res$i"foto");
                
    $totale_v $prezzo_v $valore_prod;

                
    $totale_generale =$totale_generale $totale_v;
                
                if (
    $prezzo_v == ""){$prezzo_v "0";}
                if (
    $totale_generale == ""){$totale_generale "0";}            
                if (
    $totale_v == ""){$totale_v "0";}

                
    $prezzo_v number_format($prezzo_v2",",".");
                
    $totale_v number_format($totale_v2",",".");
                echo 
    "$PREZZO$prezzo_v - TOTALE: $totale_v";
            }
        }

    Grazie di nuovo
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  4. #4
    non ho letto il codice... ma prova a fare un echo di tutte le var prima e dopo il number_format per vedere cosa ti restituisce...
    Soluzioni Hosting
    http://www.crabservice.com

  5. #5
    Ciao son,
    ho messo diversi echo per vedere i vari risultati ma l'errore me lo fà sempre, anche dopo aver estratto il valore dal db... cioè anche se faccio solo:

    Codice PHP:
    $prezzo_v mysql_result($res$i"prezzo");
    $prezzo_v number_format($prezzo_v2",",".");
    echo 
    $prezzo_v
    Il risultato è sempre 2,00 e non 2,20
    Non capisco come mai :master: :master:
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  6. #6
    Forse ho trovato....
    L'importo che prendo dal db (cioè 2,20) ha come separatore decimale la virgola...
    se invece metto come separatore il punto tutto funziona perfettamente..
    Number_format ragiona meglio di me

    E' giusto ciò che dico o è n'altra mia bufala?

    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  7. #7
    quindi dal db lo estrae corretto (2,20)
    e quando lo number_format te lo modifica in 2,00?
    Soluzioni Hosting
    http://www.crabservice.com

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da elfocaotico
    Forse ho trovato....
    L'importo che prendo dal db (cioè 2,20) ha come separatore decimale la virgola...
    se invece metto come separatore il punto tutto funziona perfettamente..
    Number_format ragiona meglio di me

    E' giusto ciò che dico o è n'altra mia bufala?

    DEVI usare il punto come separatore in mysql.

  9. #9
    elfocaotico ti dona

    Soluzioni Hosting
    http://www.crabservice.com

  10. #10
    Anche elfosodo non sarebbe stato male
    Grazie a tutti, a buon rendere
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

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 © 2024 vBulletin Solutions, Inc. All rights reserved.