errore nel calcolo

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti,
ho uno script che calcola il totale di alcuni prodotti, con o senza sconto. Fin qui tutto ok, ma se aggiungo lo sconto sul subtotale, mi restituisce calcoli errati.
Il codice è questo :

PHP:
if(isset($_POST['calcola'])){
	$_SESSION['contanti']=number_format($_POST['contanti'],2,'.', '');
	$_SESSION['flag']="calcolo";
	$bar_c=array();
	$bar_c=$_POST['codice'];
	$sconto_sbt=$_POST['sconto_sbt'];
	$_SESSION['totale']=0;
	for($j=0; $j < count($bar_c); $j++){
		$kiave=trim($bar_c[$j]);
		if($kiave !=""){
			$pre="prezzo".$kiave.$j;
			$_SESSION[$pre]=number_format($_POST['prezzo'][$j],2,'.', '');
			$ds="Descrizione".$kiave.$j;
			$_SESSION[$ds]=$_POST['descrizione'][$j];
			//var_dump($_POST['elimina']); echo "<br>";
			$q="qnt".$kiave.$j;
			if($_POST['elimina'][$j]==$kiave){
				$_SESSION[$q]=0;
			}else{
				$_SESSION[$q]=number_format($_POST['qnt'][$j],1,'.', '');
			}
			$sc="sconto".$kiave.$j;
			$_SESSION[$sc]=number_format($_POST['sconto'][$j],1,'.', '');
			$sc_v="scontov".$kiave.$j;
			$_SESSION[$sc_v]=number_format($_POST['scontov'][$j],2,'.', '');
			$tot="tot_code".$kiave.$j;
			if($_SESSION[$sc]==0 && $_SESSION[$sc_v]==0){
				$_SESSION[$tot]=number_format($_SESSION[$pre]*$_SESSION[$q],2,'.', '');
			}elseif($_SESSION[$sc]==0 && $_SESSION[$sc_v]!=0){
				$_SESSION[$tot]=number_format($_SESSION[$pre]*$_SESSION[$q]-$_SESSION[$sc_v],2,'.', '');
			//	$_SESSION[$sc]=number_format($_SESSION[$sc_v]/($_SESSION[$pre]*$_SESSION[$q])*100,1,'.', '');
			}else{
				$_SESSION[$tot]=number_format($_SESSION[$pre]*(1-$_SESSION[$sc]/100)*$_SESSION[$q],2,'.', '');
				//$_SESSION[$sc_v]=number_format(($_SESSION[$pre]*$_SESSION[$q])-$_SESSION[$tot],2,'.', '');
			}
			$_SESSION['totale'] +=number_format($_SESSION[$tot],2,'.', '');
			$scontosbt=number_format((($_SESSION['totale']/100)*$sconto_sbt),2,'.', '');
			$_SESSION['totale']=number_format(($_SESSION['totale'] - $scontosbt),2,'.', '');
			$_SESSION['scontosubt']=$sconto_sbt;
			if($_POST['salva'][$j]==$kiave && $_POST['elimina'][$j]== NULL){
				$q_c=mysql_query("SELECT Barcode FROM articoli WHERE Barcode LIKE '%$kiave'");
				if(mysql_num_rows($q_c) ==0){
					if($_SESSION[$ds]=="" || $_SESSION[$pre] ==""){
						echo "dati incompleti per barcode $kiave<br>";
					}else{
						$q_i="INSERT INTO articoli(Fornitore, Descrizione, Barcode, Vendita) VALUES('pallino','{$_SESSION[$ds]}','$kiave','{$_SESSION[$pre]}')";
						$ris=mysql_query($q_i);
					}
				}
			}
		}
	}
}

Il pezzo di codice che ho aggiunto è questo :

PHP:
$_SESSION['totale'] +=number_format($_SESSION[$tot],2,'.', '');
			$scontosbt=number_format((($_SESSION['totale']/100)*$sconto_sbt),2,'.', '');
			$_SESSION['totale']=number_format(($_SESSION['totale'] - $scontosbt),2,'.', '');
			$_SESSION['scontosubt']=$sconto_sbt;

Il valore di $sconto_sbt è prelevato da un form ed è correttamente inizializzato...
Cosa sbaglio?
 
ciao
non è per caso che qui lo chiami
$_SESSION['totale']=number_format(($_SESSION['totale'] - $scontosbt),2,'.', '');
mentre nel post scrivi
$sconto_sbt=$_POST['sconto_sbt'];
poi la riga scivila così
PHP:
$_SESSION['totale']-=number_format($scontosbt,2,'.', '');//$scontosbt o $sconto_sbt?
 
Il calcolo è esatto. L'unica cosa che non capisco è:
perchè sommi $_SESSION[$tot] a $_SESSION['totale']?
PHP:
$_SESSION['totale'] +=number_format($_SESSION[$tot],2,'.', '');
 
bho non capisco devo ancora risolverlo... ho un altro simil problema... se io volessi sottrarre al totale un importo passato dall'utente.. lo riporto in sessione dalla pagina precedente e lo sottraggo alla sessione di totale?
 
bho non capisco devo ancora risolverlo... ho un altro simil problema... se io volessi sottrarre al totale un importo passato dall'utente.. lo riporto in sessione dalla pagina precedente e lo sottraggo alla sessione di totale?
Ti basta sottrarlo direttamente alla sessione di totale, senza salvarlo in un'altra variabile di sessione e poi sottrarlo.
 

Discussioni simili