Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340

    Problemi con Numeri in campi Decimal

    Ciao a tutti,
    sono alle prese con altro problema sui calcoli!
    Devo calcolare un banale (prezzo*qta) e registrarlo in tabella in un campo prezzodivendita,che inizialmente avevo definito Varchar(9) ma dopo i primi problemi ho cambiato in Decimail(7,2)
    Qui sotto posterò la parte di funzione che non mi quadra:
    La funzione riceve il codice del prodotto ed estrae dalla tabella il prezzodivendita
    nell'esempio il prezzo di vendita è 1.20 e la quantità è 5
    il calcolo dovrebbe darmi 6.00, invece nel file debug.txt che uso come debug leggo:

    Numero:01
    Copie :5
    Prezzo Unitario :1,20
    Valore :5,00

    Posto il codice, se qualcuno "vede" dove sbaglio.


    Codice PHP:

    $prezzo
    =0.00;     // inizializzo variabile
                                 
    if(mysql_num_rows($commento_sql) > 0
      {  
          while(
    $commento_obj $data->estrai($commento_sql))
        
    $prezzo abs($commento_obj->prezzodivendita)  ;
                  
                  
    $prezzonumber_format($prezzo2,",",".");

           
    $fout fopen("debug.txt""w");
                  
    fwrite($fout,$prezzo );
                  
    fclose($fout); 
       }
      
     
    $data->disconnetti();

     
    $valoreordine =number_format($copie0,",",".") * number_format($prezzo2,",",".");
     
    $valoreordine=number_format($valoreordine2,",",".");
        
    $fout fopen("calcolatore.txt""w");
    fwrite($fout,"Numero:$numero\n:Prezzo Unitario :$prezzo\nValore :$valoreordine");
    fclose($fout); 

  2. #2

    Re: Problemi con Numeri in campi Decimal

    Originariamente inviato da marcopa
    ...
    while($commento_obj = $data->estrai($commento_sql))

    ...
    sicuro che sia un'assegnazione?

  3. #3
    prova così:
    Codice PHP:
    $prezzo=0.00;     // inizializzo variabile 
                                  
    if(mysql_num_rows($commento_sql) > 0)  
      {   
          while(
    $commento_obj $data->estrai($commento_sql)) 
        
    $prezzo abs($commento_obj->prezzodivendita)  ; 

           
    $fout fopen("debug.txt""w"); 
                  
    fwrite($fout,$prezzo ); 
                  
    fclose($fout);  
       } 
       
     
    $data->disconnetti(); 

     
    $valoreordine $copie $prezzo
     
    $valoreordine=number_format($valoreordine2,",","."); 
         
    $fout fopen("calcolatore.txt""w"); 
    fwrite($fout,"Numero:$numero\n:Prezzo Unitario :$prezzo\nValore :$valoreordine"); 
    fclose($fout); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Grazie per le risposte, le modifiche consigliate non sortiscono miglioramento!
    Sempre un calcolo solo sull'intero!!
    Nel frattempo ho nuovamente cambiato le cose ma sempre risultato uguale

    Vi riposto la funzione modificata e completa.
    Codice PHP:

    function calcola($numero,$valoreordine,$formato,$qualita,$grammi,$colore,$copie)


    include 
    "funzioni_mysql.php";
    $data = new MysqlClass();

     
    $quantita number_format($copie0,",",".");
    $data->connetti();
    $commento_sql$data->query("SELECT * FROM listini where numero='$numero' and qualita='$qualita' and formato='$formato' and grammatura='$grammi' and quadricromia='$colore'");

    $prezzo=0.00;
                                 
    if(
    mysql_num_rows($commento_sql) > 0
      {  
              while(
    $commento_obj $data->estrai($commento_sql))
                  
    $prezzo abs($commento_obj->prezzo)  ;
                  
    $prezzonumber_format($prezzo2,",",".");

                     
    $fout fopen("AAAAA.txt""w");
                           
    fwrite($fout,$prezzo );
                          
    fclose($fout); 
       }
      
        
    $data->disconnetti();
        
    $valoreordine =$quantita $prezzo ;
        
    $valoreordine number_format($valoreordine2,",",".");
        
         
    $fout fopen("calcolatore.txt""w");
                
    fwrite($fout,"Numero:$numero\nFormato :$formato\nGrammatura :$grammi\nCopie :$quantita\nPrezzo Unitario :$prezzo\nValore :$valoreordine");
                
    fclose($fout);
                
    return 
    $valoreordine


    Il risultato non mi cambia!


  5. #5
    Originariamente inviato da marcopa
    Il risultato non mi cambia!
    Ma hai provato le mie modifiche?
    quello che hai postato nn le contiene...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Scusa oly1982, le ho provate ma non le ho postate perchè erano tra le prime nelle prove fatte.
    Però ho capito da cosa dipende, nel database i valori dei prezzi sono espressi in decimali separati dal punto!
    cosi ho provato a cambiare la riga della formattazione

    Codice PHP:

    $prezzo
    number_format($prezzo2,",",".");

    ora in :

    $prezzonumber_format($prezzo2,".","."); 
    RISOLTO!!! ora è corretto, funziona alla grande!
    tutto per una virgola al posto del punto dei decimali.

    Grazie a tutti.

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.