Maxweell 0 Denunciar post Postado Novembro 8, 2010 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
JackDenio 0 Denunciar post Postado Novembro 8, 2010 Verifique se os valores de suas variáveis são inteiros ... Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Novembro 8, 2010 Um dos valores são decimais...o outro é inteiro... só da se for inteiro? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 8, 2010 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
Maxweell 0 Denunciar post Postado Novembro 8, 2010 Esta com ponto! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 8, 2010 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
Maxweell 0 Denunciar post Postado Novembro 8, 2010 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
William Bruno 1501 Denunciar post Postado Novembro 8, 2010 tá.. seguinte: echo '<pre>'; var_dump( $_POST, $valor, $quant, $qnt ); posta oque aparecer. Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Novembro 8, 2010 array(2) { ["id"]=> array(1) { [8]=> string(1) "8" } ["quant"]=> array(1) { [8]=> string(1) "2" } } NULL array(1) { [8]=> string(1) "2" } Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 8, 2010 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
Maxweell 0 Denunciar post Postado Novembro 8, 2010 <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
William Bruno 1501 Denunciar post Postado Novembro 8, 2010 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
Maxweell 0 Denunciar post Postado Novembro 8, 2010 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
William Bruno 1501 Denunciar post Postado Novembro 8, 2010 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
Bruno Augusto 417 Denunciar post Postado Novembro 8, 2010 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
William Bruno 1501 Denunciar post Postado Novembro 9, 2010 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
Maxweell 0 Denunciar post Postado Novembro 9, 2010 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
William Bruno 1501 Denunciar post Postado Novembro 9, 2010 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
Maxweell 0 Denunciar post Postado Novembro 9, 2010 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
William Bruno 1501 Denunciar post Postado Novembro 9, 2010 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