Ir para conteúdo

POWERED BY:

Arquivado

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

Maxweell

Multiplicacao dos valores de array por valores de post

Recommended Posts

Fala pessoal to precisando de uma ajuda aqui

eu preciso multiplicar valores de uma array por um valor de um post

exemplo:

Eu pego a variavel por post

$qtd = $_POST['qtd'];
Depois eu pego o valor da tabela e jogo o valor na array

$qr = mysql_query("SELECT * FROM tabela");
$i = mysql_fetch_array($qr);
$valor = $i['valor'];
Eu preciso multiplicar estes valores,

eu tentei $total = $qtd * $valor; mas na deu certo!

Apareceu: Fatal error: Unsupported operand types

Compartilhar este post


Link para o post
Compartilhar em outros sites

a variavel que é decimal está no formato ii.dd ?

 

tipo.. dois e meio = 2.5 ?

ou está com virgula ?

 

lembre-se que a maioria das linguagens de programação, trabalham com o sistema americano, ou seja, com o ponto, como separador decimal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim:

echo '$qnt: ',$qnt,' <br />','$valor: ', $valor;
$total = $qtd * $valor;

poste oque aparecer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, ja to vendo que o erro ta aqui

 

$quant: Array

$valor:

 

Creio que nao esteja pegando o "id" pro valor aparecer em branco..

agora essa quant ae, nao sei nao!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá.. seguinte:

 

echo '<pre>';
var_dump( $_POST, $valor, $quant, $qnt );

posta oque aparecer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.. muito estranho isso...

 

como tá o HTML do teu form?

 

veja, oque tive que fazer para reproduzir a tua situação:

<?php
	$post = Array
	(	
		'id' => Array
		(
			8 => '8'
		),
		'quant' => Array
		(
			8 => '2'
		)
			
	);

	echo '<pre>';
	var_dump( $post );

no teu caso, você deveria fazer assim:

echo $post['quant'][8];
ai acessa o 2 ali.. mas tá muito estranho isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

<table>
<form action="?acao=up" method="post">

<tr><a href=pagina2.php>Continuar comprando</a></tr>
	<tr>
	  <td>Nome</td>
	  <td>Quantidade</td>
	  <td>Unidade</td>
	  <td>Subtotal</td>
	  
	</tr>
<?php

$sql = mysql_query("select * from carrinho c, item i WHERE c.id = i.id");
$totalcar = 0;
while($i = mysql_fetch_assoc($sql)){
$totalprod = $i['unitario']* $i['quant_car'];
$totalcar += $i['unitario']* $i['quant_car'];
?>
	<tr>
	<?php echo '<td><input type=hidden value='.$i['id'].' name=id['.$i['id'].']></td>';?>
	  <td><?php echo $i['nome']?></td>
	  <?php echo '<td><input type=text name=quant['.$i['id'].'] value='.$i['quant_car'].'></td>';?>
	  <td><?php echo $i['unitario'] ?></td>
	  <td><?php echo $totalprod; ?></td>
	</tr>

<?php

}
echo '<tr>
<td>Total</td>
     <td>'.$totalcar.'</td>';
?>
<input type=submit value=atualizar>
</form>
</table>
Deixa eu tentar explicar pra você...

esse é um carrinho de compras...o restante do codigo(add e del) ta normal..eu só preciso fazer o update...

a atualização das quantidades e subtotal, está ok, o que falta é gravar no banco mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá.. solução simples:

 

-> colocar o total num hidden ai já no form, ai você já recebe calculado no script do update

outra:

 

$total = Array();
foreach( $_POST['id'] AS $id )
{
  $total[ $id ] = $_POST['quant'][ $id ] * ALGUMA_COISA;
}

olhando pro teu form, cadê o hidden do valor do produto ?

troque o ALGUMA_COISA por ele

 

veja que no final, você vai ter um array $total com todos os totais.. onde a chave é o ID do Produto.

dai, você precisa percorrer esses arrays, e fazer a operação com o banco que quiser.

 

por isso, sugiro de novo que faça um hidden do total no form (bem mais simples)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi...

eu tenho que fazer assim?

No form:

<?php echo '<td><input type=hidden name=total['.$i['id'].'] value='.$totalprod = $i['unitario']* $i['quant_car'].'></td>';?>

E depois

 

$sub = $_POST['total'];
		$total = Array();
			foreach( $_POST['id'] AS $id ){  
			$total[ $id ] = $_POST['quant'][ $id ] * $sub;
		}	

Compartilhar este post


Link para o post
Compartilhar em outros sites

calma... quase isso.

 

ou um ou outro.

faça apenas:

<?php echo '<td><input type=hidden name=total['.$i['id'].'] value='.( $i['unitario']* $i['quant_car'] ).'></td>';?>
e então, receba o

 

$_POST['total'][ ID DO PRODUTO ]

 

e faça o teu INSERT/UPDATE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisa disso tudo não.

 

Vamos imaginar que o campo de quantidade seja preenchível pelo usuário e o atributo name do HTML seja qtde.

 

Após fazer a consulta e ter um array em mãos (depois do while(), mysql_fetch_array() e tudo mais) basta usar array_map().

 

$data = array( 1, 1.5, 2, 2.5, 3 ); // Esse viria do Banco

$qtde = 2; // Esse de $_POST

$data = array_map( function( $item ) use( $qtde ) {
                      return $item * $qtde;
                  }, $data );

var_dump( $data );

/**
* Saída
*
* array
*  0 => int 2
*  1 => float 3
*  2 => int 4
*  3 => float 5
*  4 => int 6
*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Bruno...

 

entendi oque você quis dizer, mas acredito que não se aplica muito bem a esse caso.

se eu quiser 2 itens do produto de id=4 e ele custar 1.5

e quiser 5 do produto de id=7 e ele custar 9

 

já não serve oque você propos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian, fiz isso que você falou, coloquei um input hidden la,

peguei por Post, mas na hora de atualizar, zera a qtd e zera o total, acho que a var ta vazia..

 

Meu post ficou assim:

 

$sub = $_POST['sub'];
E o input

<?php echo '<td><input type=text name=sub['.$i['id'].'] value='.( $i['unitario']* $i['quant_car'] ).'></td>';?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá.. então cara, pra saber'como tá'..

 

use o var_dump() paradebugar...

 

echo '<pre>';
var_dump( $_POST );
analise oque chega para você depois do submit.

 

veja se o calculo ali:

( $i['unitario']* $i['quant_car'] )
tá acontecendo corretamente.

 

aperta Ctrl+U (exibir > código fonte) e veja se o value desse input está correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O calculo ta certo, ta calculando normal...

coloquei o var_dump()

 

array(3) {
  ["id"]=>
  array(1) {
    [7]=>
    string(1) "7"
  }
  ["quant"]=>
  array(1) {
    [7]=>
    string(1) "2"
  }
  ["sub"]=>
  array(1) {
    [7]=>
    string(1) "2"
  }
}
array(1) {
  [7]=>
  string(1) "2"
}
Continua zerando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta onde você faz o UPDATE.

 

faça o seguinte:

$sql = "UPDATE ... ";
echo $sql,'<br />';
mysql_query( $sql )or die( mysql_error() );

entendeu ?

 

diga oque retornar do echo do $sql

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.