Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felp10

Ajustar código

Recommended Posts

Boa tarde pessoal acontece o seguinte, comecei nessa semana na empresa e querem que eu de suporte ao site que tem aplicação em php, conheço um pouco de lógica de programação mas nada de php.

Como já tive um ultimato recorro ao sabios daqui. Tem uma aplicação do site que é a compra de produto o que está acontecendo é que quando coloco o produto no carrinho ao adiciona-lo ele pega a configuraçao americana é o que está aparecendo por exemplo: 200,23 depois de adicionado fica 20.023,00.

Acredito que seja nessa parte do código :

 

<?
			//echo $_SESSION['carrinho'][$key]['qtde'];
			echo '<input type="text" maxlength="10" size="2" name="'.$key.'" id="'.$key.'" value="'.$_SESSION['carrinho'][$key]['qtde'].'" class="inpqtde" />'; ?>
			
			<input type="text" maxlength="10" class="inpqtde" name="prec_<?=$key?>" id="prec_<?=$key?>" style="width:50px;" value="<?=Moeda2(toDouble($_SESSION['carrinho'][$key]['price']))?>"/>
 </td>
 <td width="114" style="width: 90px;">
 <strong>
 <? 
 	$currentQuantity = (int) $_SESSION['carrinho'][$key]['qtde'];
 	$currentUnitPrice = $_SESSION['carrinho'][$key]['price'];
 	
				$total += $currentQuantity * toDouble($currentUnitPrice);
				echo Moeda($currentQuantity * toDouble($currentUnitPrice), 2, ',', '.');
			?>

Por favor me ajudem!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá felp10!

 

Desculpe, mas nao entendi muito bem. esse trecho do código tem um campo e exibe alguns dados... Com isso não da pra entender muito bem, mas aparentemente tem alguma coisa errada nas funções Moeda ou Moeda2.

 

você sabe onde estão essas funções? Se sim coloque-as aqui para analisarmos ok?

 

O trecho do código para as funções deve ser assim:

 

function Moeda(){

 

}

 

procure as funções e coloque-as aqui oks?

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função era para estar na mesma página né? porque não tem na mesma página e não vi nada do tipo de instanciando classe.

segue o código inteiro para ver se ajuda:

 

<?php
require 'aut.inc.php';
if (!$permitido) {
	header('Location: produtos.php');
	exit;
}
@$_SESSION['carrinho'] = array_values($_SESSION['carrinho']);
if ($_GET['action'] == 'AdicionaItem') {
	$prod = $_POST['id_produto'];
	$price = $_POST['price'];
	if (is_numeric($prod)) {
		$existe = 'n';
		if (count($_SESSION['carrinho']) > 0) {
			foreach ($_SESSION['carrinho'] as $valor) {
				if ($valor['item'] == $prod) {
					$existe = 'y';
				}
			}
		}
		if ($existe == 'n') {
			$qtde = 1;
			$car = array('item'=>$prod,'qtde'=>$qtde,'price'=>$price);
			$_SESSION['carrinho'][count($_SESSION['carrinho'])] = $car;
		}
	}
}

if ($_GET['action'] == 'AtualizaCarrinho') {
	if (count($_POST) > 0) {
		for ($i=0;$i<count($_POST);$i++) {
			$var = key($_POST);
			
			if ($_POST[$var] == 0 || $_POST[$var] == '') {
				unset($_SESSION['carrinho'][$var]);
			} else {
				$_SESSION['carrinho'][$var]['qtde'] = $_POST[$var];
				$_SESSION['carrinho'][$var]['price'] = $_POST["prec_".$var];
			}
			next($_POST);
		}
	}
	
	/**
	 * Clean all registers with empty price
	 */
	$currentSessionList = $_SESSION['carrinho'];
	for ($i = 0; $i < count($currentSessionList); $i++) {
		if (is_null($currentSessionList[$i]['price']) == 0) {
			$newSessionList[] = $currentSessionList[$i];
		}
	}
	$_SESSION['carrinho'] = $newSessionList;
}

	
if ($_GET['action'] == 'LimpaCarrinho') {
	$_SESSION['carrinho'] = array();
	Redir('./');
}


if (count($_SESSION['carrinho']) > 0) {
	$itens = array();
	foreach ($_SESSION['carrinho'] as $val) {
		$itens[count($itens)] = $val['item'];
	}
    
	$itens = array_unique($itens);
	$itens = array_filter($itens);
	$itenstr = implode(',',$itens);  
	
	$prods = mysql_query("SELECT * FROM Produto WHERE prod_id IN ($itenstr)");
	@$_SESSION['carrinho'] = array_values($_SESSION['carrinho']);
	$total = 0;
}
error_reporting(0);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Diverlav</title>
<link href="css_table/estilo.css" rel="stylesheet" type="text/css" />
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function Submit(t) {
	obj = document.getElementById('formCart');
	switch (t) {
		case 1:
			obj.action = 'carrinho.php?action=AtualizaCarrinho';
		break;
		case 2:
			obj.action = 'pedido.php';
		break;
		case 3:
			obj.action = 'carrinho.php?action=LimpaCarrinho';
		break;
		case 4:
			obj.action = 'produtos.php';
		break;
	}
	obj.submit();
}

function removeItem(id) {
	var txtPrice = document.getElementById(id);

	txtPrice.value = "0";

	Submit(1);
}

</script>
</head>
<body onload="MM_preloadImages('images/principal-over.gif','images/fornecedores-over.gif','images/empresa-over.gif','images/produtos-over.gif','images/servicos-over.gif','images/lancamentos-over.gif','images/eventos-over.gif','images/contato-over.gif')">
<div id="geral">
<div id="degleft"></div>
<div id="degright"></div>
  <div id="topo"></div>
    <div id="loginbox">
        <? if ($permitido) { ?>
            Olá, <strong><?=$_SESSION['main_nc']?></strong><br />
            <a href="carrinho.php">Carrinho</a> | <a href="revenda/">Painel</a> | <a href="logout.php">Sair</a>
        <? } else { ?>
            <form action="login.php" method="post">
            <label for="login">Login:</label>
            <input name="login" type="text" id="login" />
            <label for="senha">Senha:</label>
            <input name="senha" type="password" id="senha" />
            <input type="image" src="images/ok.gif" alt="OK" style="width:auto; margin-left:6px;" />
            </form>
        <? } ?>
    </div>
<div id="flash">
        <script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','731','height','235','src','flash_index','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','flash_index' ); //end AC code
</script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="731" height="235">
          <param name="movie" value="flash_index.swf" />
          <param name="quality" value="high" />
          </object>
      </noscript></div>
      <div id="menu">
        <table width="731" border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td><a href="index.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Principal','','images/principal-over.gif',1)"><img src="images/principal.gif" alt="Principal" name="Principal" width="92" height="40" border="0" id="Principal" /></a></td>
            <td><a href="empresa.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Empresa','','images/empresa-over.gif',1)"><img src="images/empresa.gif" alt="Empresa" name="Empresa" width="84" height="40" border="0" id="Empresa" /></a></td>
            <td><a href="fornecedores.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Fornecedores','','images/fornecedores-over.gif',1)"><img src="images/fornecedores.gif" alt="Fornecedores" name="Fornecedores" width="112" height="40" border="0" id="Fornecedores" /></a></td>
            <td><a href="produtos.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Produtos','','images/produtos-over.gif',1)"><img src="images/produtos.gif" alt="Produtos" name="Produtos" width="79" height="40" border="0" id="Produtos" /></a></td>
            <td><a href="servicos.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Serviços','','images/servicos-over.gif',1)"><img src="images/servicos.gif" alt="Serviços" name="Serviços" width="80" height="40" border="0" id="Serviços" /></a></td>
            <td><a href="treinamentos.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Lançamentos','','images/lancamentos-over.gif',1)"><img src="images/lancamentos.gif" alt="Lançamentos" name="Lançamentos" width="104" height="40" border="0" id="Lançamentos" /></a></td>
            <td><a href="noticias.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Eventos','','images/eventos-over.gif',1)"><img src="images/eventos.gif" alt="Notícias" name="Notícias" width="80" height="40" border="0" id="Eventos" /></a></td>
            <td><a href="contato.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Contato','','images/contato-over.gif',1)"><img src="images/contato.gif" alt="Contato" name="Contato" width="100" height="40" border="0" id="Contato" /></a></td>
          </tr>
        </table>
      </div>
      <div class="texto-base" id="noticiainterna"> <span class="texto-base5">Carrinho de Compras</span><br />
  </div>
  <div id="listra"></div>
        <div class="texto-base" id="procura">Procure o produto desejado:</div>
            <form action="busca.php" method="get">
                <div id="caixaprocurar">
                <input name="busca" type="text" id="busca" size="15" maxlength="50" />
                </div>
                <div id="lupa"><input type="image" src="images/lupa.gif" alt="Lupa" /></div>
            </form>
        <div class="texto-base2" id="centro05">
      <? if (count($_SESSION['carrinho']) > 0) { ?>
      
      <form action="carrinho.php?action=AtualizaCarrinho" method="post" name="formCart" id="formCart">
      
      <?
	  	//print_arr($_SESSION['carrinho']);
      ?>
      
      <table id="listacar" style="width:680px; border:1px solid #0066CC; border-collapse:collapse">
      	<tr>
        	<td colspan="4" style="height:25px;font:bold 11px Tahoma;color:#FFFFFF;background:#0066CC; text-align:left;">Itens do carrinho:</td>
        </tr>
        <? while ($row = mysql_fetch_array($prods)) { ?>
      	<tr>
        	<td width="134" style="width:130px">
				<?
                if ($row['prod_foto'] != '') {
                    echo '<img src="images/produtos/mini_'.$row['prod_foto'].'" alt="'.$row['prod_descricao'].'" style="margin-bottom:5px" />';
				} else {
                    echo '<img src="images/semfoto.jpg" alt="Produto sem foto" style="margin-bottom:5px" />';
				}
                ?>			</td>
          <td width="282" style="text-align:center"><strong><?=$row['prod_nome']?></strong> (<?=$row['prod_ref']?>)<br />
          <?=$row['prod_descricao']?></td>
          <td width="140" style="width:120px;">
          	<?php
          		$key = array_search($row['prod_id'], $itens);
          	?>
          	<div id="removeItem" onclick="javascript: removeItem('<?=$key?>')">#</div>
			<?
			//echo $_SESSION['carrinho'][$key]['qtde'];
			echo '<input type="text" maxlength="10" size="2" name="'.$key.'" id="'.$key.'" value="'.$_SESSION['carrinho'][$key]['qtde'].'" class="inpqtde" />'; ?>
			
			<input type="text" maxlength="10" class="inpqtde" name="prec_<?=$key?>" id="prec_<?=$key?>" style="width:50px;" value="<?=Moeda2(toDouble($_SESSION['carrinho'][$key]['price']))?>"/>
          </td>
          <td width="114" style="width: 90px;">
            <strong>
            <? 
            	$currentQuantity = (int) $_SESSION['carrinho'][$key]['qtde'];
            	$currentUnitPrice = $_SESSION['carrinho'][$key]['price'];
            	
				$total += $currentQuantity * toDouble($currentUnitPrice);
				echo Moeda($currentQuantity * toDouble($currentUnitPrice));
			?>
            </strong>
            </td>
        </tr>
        <? } ?>
        <tr>
        	<td colspan="4" style="text-align:right; padding-right:10px; background-color:#0066CC;font:bold 11px Tahoma; color:#FFFFFF">Valor total do pedido: <strong><?= Moeda($total) ?></strong></td>
        </tr>
        <tr>
        	<td colspan="4" style="text-align:center">
            	<input type="button" onclick="Submit(1)" value="Atualizar Carrinho" style="font:11px Tahoma; color:#666666; margin:10px 0 10px 0">
                <input type="button" onclick="Submit(4)" value="Continuar Comprando" style="font:11px Tahoma; color:#666666; margin:10px 0 10px 0" />
        		<input type="button" onclick="Submit(3)" value="Cancelar Pedido" style="font:11px Tahoma; color:#666666; margin:10px 0 10px 0">
                <input type="button" onclick="Submit(2)" value="Finalizar Pedido" style="font:11px Tahoma; color:#666666; margin:10px 0 10px 0">
            </td>
        </tr>
      </table>
      </form>
      
      <? } else { ?>
      	Não há itens no carrinho.
      <? } ?>
      
      <div style="clear:both"></div>
        <div align="center" style="margin-top:10px;"><a href="Javascript:history.back()"><img src="images/voltar.gif" alt="Voltar" width="85" height="37" border="0" /></a><br />
      <br />
    </div>
  </div>
 
  
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função era para estar na mesma página né?

 

não necessariamente.

 

Procure por include e require e então vasculhe os arquivos 'chamados', para ver em qual deles estão declaradas essas functions.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei

function Moeda($value) {
	return 'R$ ' . Moeda2($value);
}

function Moeda2($value) {
	return number_format($value, 2, ',', '.');
}

function toDouble($value) {
	if (gettype($value) == 'string') {
		$value = str_replace('.', '', $value);
 $value = str_replace(',', '.', $value);	
 
 return (double) $value;
	}
	
	return (double) $value;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

A propósito muito obrigado e desculpe o mal jeito para me comunicar e realmente mesmo com o desastroso(de minha parte claro) começo nessa boa comunidade me sinto muito bem vindo e desculpeo dejeito.

 

PS: mas ainda estou precisando consertar esse bugzinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhando o código, uma coisa que eu não to entendendo é: O campo de preço parece ser um campo livre, é isso?

 

Mas deixando isso de lado, eu fiz alguns testes e parece que esse tipo de erro ocorre quando eu digito o número com ponto (.) e não com vírgula (,) por causa da função toDouble.

Suponha que o número digitado é 200,23 (com vírgula)

Isso é o que a função está fazendo:

Tira os pontos (.) // 200,23 não tem nenhum "." então mantém do jeito que está

Troca as vírgulas (,) por pontos (.) // 200,23 vira 200.23

retorna o valor

OK

 

Agora quando você coloca com ponto

200.23

Tira os pontos // 200.23 vira 20023

Troca as vírgulas por pontos // 20023 continua 20023

retorna o valor como double // Retorna 20023

 

Em seguida ele formata o número com a função Moeda2, que faz com que casas de milhar fiquem com ponto e decimais com vírgula, logo: 20.023,00

 

Solução:

Digite os números SEMPRE com vírgula

 

ou

 

Altera a função toDouble. Provavelmente a pessoa que implementou essa função imaginou que a pessoa usa ponto quando digita números acima de 1000, mas é um tanto perigoso manter essa remoção do ponto, porque algumas pessoas podem se confundir, então o ideal seria apenas trocar a vírgula por ponto, desse jeito:

function toDouble($value) {
if (gettype($value) == 'string') {
$value = str_replace(',', '.', $value);         
return (double) $value;
}
return (double) $value;
}
Mas tome cuidade ao alterar essa função, porque ela pode estar sendo usada em mais de um lugar. Lembre-se de sempre fazer backup

 

ou

 

Altere o número antes de enviar para função

 

ou

 

Dê um jeito de travar a digitação do ponto (.)

 

Verifique o que é melhor para você. Qualquer dúvida é só perguntar

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu tenho uma dúvida sim, o produto fica com o preço já então somente vai para o carrinho. Verifiquei onde altera o preço dos produtos que é feito manualmente e na digitação não é possível digitar ponto no campo de preço então já está configurado com virgula.

Dito isto então para arrumar deverei alterar a função conforme mencionou correto?

Ah e o código que voce deixou como exemplo tem uma linha a menos

//Do jeito que está

function toDouble($value) {
        if (gettype($value) == 'string') {
                $value = str_replace('.', '', $value);  //Essa linha Está a mais no meu código seria isso?
                $value = str_replace(',', '.', $value);        
 
 return (double) $value;
        }
        
        return (double) $value;
}

//do jeito que é para ficar
function toDouble($value) {
        if (gettype($value) == 'string') {
         $value = str_replace(',', '.', $value);
  
 return (double) $value;
        }
        
        return (double) $value;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites


\\ vendo esse pedaço de codigo

 

<?=Moeda2(toDouble($_SESSION['carrinho'][$key]['price']))?>"

 

\\ e esse

<?

$currentQuantity = (int) $_SESSION['carrinho'][$key]['qtde'];

$currentUnitPrice = $_SESSION['carrinho'][$key]['price'];

 

$total += $currentQuantity * toDouble($currentUnitPrice);

echo Moeda($currentQuantity * toDouble($currentUnitPrice));

?>

 

\\ lembrando as funçoes

 

function Moeda($value) {

return 'R$ ' . Moeda2($value);

}

 

function Moeda2($value) {

return number_format($value, 2, ',', '.');

}

 

function toDouble($value) {

if (gettype($value) == 'string') {

$value = str_replace('.', '', $value);

$value = str_replace(',', '.', $value);

 

return (double) $value;

}

 

return (double) $value;

}

Me parece que na hora de tratar o valor que está o problema na primeira linha na função Moeda2 retorna um number_format nao precisa passa os parametro ,2,',','.' nao tenho certeza me desculpe se estiver falando bobagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dennis desculpe você tem razão o que acontece é o seguinte na página tem o valor do produto, mas também tem o campo para digitar o valor que na verdade já traz o valor do produto, como o acesso é restrito para os vendedores eles colocam preços diferenciados conforme o cliente, porém se ele digita e atualiza fica correto depois no pedido. Mas quando você tem essa tela para digitar a quantidade e o valor do produto já vem com um valor do produto que deveria ser conforme tinhamos falado mas está vindo com o valor 100 vezes maior. Como consigo acertar tudo isso?

Fico no aguardo Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, sobre o código, já que está travado a digitação do ponto, então aquela linha é desnecessária, mas se estiver travando com Javascript é meio perigoso pois o usuário pode estar com Javascript desabilitado.

 

Faça assim.... antes dessa linha, de um echo nessa variável de sessão

echo "$_SESSION['carrinho'][$key]['price'] <br>";
<?=Moeda2(toDouble($_SESSION['carrinho'][$key]['price']))?>"

só pra ver o que ele está retornando. Pode ser que em algum momento ele já esteja trocando a vírgula por ponto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz está aí outra coisa que eu preciso saber como eu faço para fazer um ambiente de teste local, já que está tudo no site? Cheguei a perguntar na localweb por causa do banco mas eles não sabe dizer. Desculpe mas realmente em php sou muito leigo msm

Compartilhar este post


Link para o post
Compartilhar em outros sites

ambiente de teste local = suíte composta por webserver + compilador de linguagem server side + sistema de gerenciamento de bancos-de-dados

 

o mais popular é composto por apache + php + mysql = amp

 

o amp mais popular é o xampp que, além de contar com suporte multiplataforma, de brinde você ainda leva um gerenciador de bancos-de-dados (PHPMyAdmin)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazer isso seria o ideal sem dúvida... mas pode te dar um pouco de trabalho, principalmente por causa do banco. Mas se quiser fazer mesmo assim:

 

 

 

Faça assim

 

Procure por XAMPP no Google, faça o download e instale na sua máquina.

Depois baixe os arquivos do seu site na sua máquina e copie para a pasta C:/xampp/htdocs, ou seja lá onde estiver a pasta htdocs

Daí você vai ter que gerar um dump.. essa parte é um pouco mais complicada..

Se você usa phpMyAdmin, então você vai ter que selecionar o banco, colocar em exportar, marcar estrutura, e clicar em exportar. Isso vai fazer ele gerar um arquivo sql da estrutura. Depois desmarque estrutura e marque dados, e clique em exportar. isso vai gerar um .sql com os dados

Daí, você acessa o phpmyadmin da sua máquina (Também já instalado com o XAMPP), crie um banco com o mesmo nome do que você tem no servidor do seu site, depois importe nele os arquivos de estrutura e de dados, nessa ordem.

 

O problema é que na hora de importar os dados pode dar erros de chaves estrangeiras e tal.... isso pode dar uma tremenda dor de cabeça...

 

Se isso der muito trabalho pra você, tente fazer aquilo que eu disse, imprima na tela o que está saindo em echo $_SESSION['carrinho'][$key]['price'] e se for o caso você converte antes de passar para a função. Claro que não pode esquecer depois de apagar a linha do echo

PS: O comando echo simplesmente imprime algo na tela

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu fiz o teste que pediu e está imprimindo 966.04 que é o do produto que eu adicionei (desta forma com ponto)

 

PS: tirando o toDouble dessa linha <?=Moeda2(toDouble($_SESSION['carrinho'][$key]['price']))?>" o valor fica correto porém arredondado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem eu instalei aqui o xampp mas ainda não fiz o dump que não sei como faz, bom enfim testei online msm agora vamos ver se conseguimos acertar o probleminha xato rs

Estou com a idéia de na própria funçao moeda2 tratar como double assim não precisa chamar toDouble é possível?Como? Senão qual saída?Fiz os testes quando retirei a função toDouble por exemplo o valor 966,04 imprimia 966,00 porém quando retirei a função Moeda2 imprimiu 96604, como no caso os centavos aqui é relevante precisamos acertar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você alterar uma função em um sistema de terceiros você corre o risco de afetar o sistema todo. É um tanto perigoso

 

Faça assim:

 

Sabe onde eu disse para você colocar o echo? Apague a linha do echo e coloque um str_replace para trocar o ponto por vírguloa. Desse jeito:

Coloque assim:

$moeda = str_replace('.',',',$_SESSION['carrinho'][$key]['price']);
<?=Moeda2(toDouble($moeda))?>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara muito obrigado estamos quase lá segue o código

 <?$moeda = str_replace('.',',',$_SESSION['carrinho'][$key]['price']);?>


   	<input type="text" maxlength="10" class="inpqtde" name="prec_<?=$key?>" id="prec_<?=$key?>" style="width:50px;" value="<?=Moeda2(toDouble($moeda))?>"/>
          </td>
          <td width="114" style="width: 90px;">
            <strong>
            <?
            	$currentQuantity = (int) $_SESSION['carrinho'][$key]['qtde'];
            	$currentUnitPrice = $_SESSION['carrinho'][$key]['price'];

				$total += $currentQuantity * toDouble($moeda);
				echo Moeda($currentQuantity * toDouble($moeda), 2, ',', '.');
			?>

Cara o que está acontecendo que eu preciso arrumar é que agora está aparecendo o valor uma vez a mais vamos ver se eu consigo explicar primeiro campo de texto quantidade ao lado o valor unit do produto(valor fixo) em baixo o valor unitário novamente so que num campo de texto(valor que é possível mudança) e ao lado o valor total de produtos.

O único que não estava e não era para aparecer é o valor unit do produto (valor fixo)

 

Muito obrigado mesmo pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que estanho... Nesse trecho do código q você colocou não aparece isso...

 

você apagou essa linha?

echo "$_SESSION['carrinho'][$key]['price'] <br>";

Se não, então apague-a. Ela era só pra gente saber qual valor estava retornando

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código um pouco mais acima:

	<?php
          		$key = array_search($row['prod_id'], $itens);
          	?>
          	<div id="removeItem" onclick="javascript: removeItem('<?=$key?>')">#</div>
			<?
	    	//echo $_SESSION['carrinho'][$key]['price'];
	    	
           echo '<input type="text" maxlength="10" size="2" name="'.$key.'" id="'.$key.'" value="'.$_SESSION['carrinho'][$key]['qtde'].'" class="inpqtde" />'; ?>

	    	<?$moeda = str_replace('.',',',$_SESSION['carrinho'][$key]['price']);?>

   	      <input type="text" maxlength="10" class="inpqtde" name="prec_<?=$key?>" id="prec_<?=$key?>" style="width:50px;" value="<?=Moeda2(toDouble($moeda))?>"/>
          </td>
          <td width="114" style="width: 90px;">
            <strong>
            <?
            	$currentQuantity = (int) $_SESSION['carrinho'][$key]['qtde'];
            	$currentUnitPrice = $_SESSION['carrinho'][$key]['price'];

				$total += $currentQuantity * toDouble($moeda);
				echo Moeda($currentQuantity * toDouble($moeda), 2, ',', '.');
			?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.