Ir para conteúdo

POWERED BY:

Arquivado

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

Henrique-raptor

pegar um valor de um imput

Recommended Posts

Boa Tarde...

 

Estou desenvolvendo um sistema de pedido em PHP, agora estou com um probleminha, quando eu inserir um item ja pre cadastrado, na linha ele aparece a descrição, unidade de medida e o valor unitário, ai o usuário digita a quantidade desse item, e ja faz a atualização do total. Andei lendo alguns tópicos a respeito e vi o pessoal usando java script para pega os valores dos imputs referente a aquele item.

 

Com um item apenas deu certo, mas ai começou o probleminha, quando eu inserir outro item e faço o mesmo procedimento os valores eu digitei não são inseridos, na verdade ele recebe os valores que eu coloquei no primeiro item. ai gostaria de uma orientação de como posso fazer essa atualização correspondente a linha do item em questão.

 

Quem puder me ajudar, agradeço

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

Precisaria ver seu código para ter uma idéia de como está fazendo, mas uma forma seria criando uma função javascript, mais ou menos assim (Não cheguei a testá-la, mas creio que deva funcionar):

/**
 * Calcula total da linha em questão usando jQuery
 * @param el Elemento que será passado na chamada da função
 */

function calculaTotal(el){
	/* 	Sobe dois elementos na hierarquia do documento
		Estou assumindo que você está utilizando uma tabela e cada linha desta tabela seja um produto
		Sendo assim, o primeiro .parent() sobe do input para o <td>, e o segundo para o <tr>
	*/
	var linha = el.parent().parent();
	
	// Procura na linha pelo valor unitário
	var valUnit = linha.find('.valUnit').val();
	
	// Obtém a quantidade de produtos (assumindo que este evento será chamado no onblur
	var qtd = el.val();
	
	// Calcula o total
	var total = parseFloat(valUnit) * parseInt(qtd);
	
	// Atribui o valor total ao campo total com uma precisão de duas casas decimais
	linha.find('.txtTotal').val(total.toFixed(2));
	// Caso o total seja somente um spam, div, td etc, use o código abaixo
	linha.find('.txtTotal').text(total.toFixed(2));
	
}

e na chamada do onblur do campo utilizar o seguinte:

<input type="text" name="txtQtd" id="seu_id_aqui" onblur="calculaTotal($(this));" />

Estou assumindo que você já esteja usando jQuery neste projeto, caso não esteja é necessário linkar a biblioteca, ou adaptar o código para javascript puro.

 

Veja se ajuda.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

function mostra(unidade, descricao, quant, valor_unitario, cliente, pedido, id){
unid=document.getElementById("unidade").value;
desc=document.getElementById("descricao").value;
quant=document.getElementById("quant").value;
valor_unit=document.getElementById("valor_unitario").value;

window.location="update_item.php?id="+id+"&unidade="+unid+"&descricao="+desc+"&quantidade="+quantidade+"&valor_unit="+valor_unit+"&cliente="+cliente+"&pedido="+pedido;
}
<form name="form1" action="" method="post">
<table width="95%" border="0" align="center">
  <tr class="text_table_os">
    <td width="4%" align="center">Item</td>
    <td width="4%" align="center">Und</td>
    <td width="50%" align="center">Descrição </td>
    <td width="6%" align="center">Quant</td>
    <td width="11%" align="center">VL Unit</td>
    <td width="11%" align="center">VL Total</td>
    <td width="7%" align="center"> </td>
    <td width="7%" align="center"> </td>
  </tr>
  <?php
  $i = 1;
  $select1 =("select produto.*, pedido.* FROM produto, pedido WHERE produto.id_produto = pedido.id_produto AND  id_cliente ='$id_cliente' AND numero_pedido='$pedido'");
  $res1 = mysql_query($select1);
  $cont = mysql_num_rows($res1);
  while($linha =mysql_fetch_array($res1)){
 $id = $linha["id"];
 $id_cliente = $linha["id_cliente"];
 $numero_pedido = $linha["numero_pedido"];
 $id_produto = $linha["id_produto"];
 $data = $linha["data"];
 $produto = $linha["produto"];
 $quantidade =$linha["quantidade"];
 $unidade = $linha["unidade"];
 $vl_unit = $linha["valor"];
 $total = $linha["total"];
  ?>
  
  <tr align="center">
    <td><label for="textfield"></label>
      <input name="textfield" type="text" class="imput_pedido" id="textfield" size="1" readonly="readonly" value="<?php echo $i?>" style="text-align:center" /></td>
    <td><input name="unidade" type="text" class="imput_pedido" id="unidade" size="2" readonly="readonly" value="<?php echo $unidade?>"style="text-align:center" /></td>
    <td><input name="descricao" type="text" class="imput_pedido" id="descricao" size="60" readonly="readonly" value="<?php echo $produto?>"/></td>
    <td><label for="quant"></label>
      <input name="quant" type="text" class="imput_pedido" id="quant" size="2" maxlength="4" style="text-align:center" onkeydown="mascara( this )" onkeyup="mascara( this )" value="<?php echo $quantidade?>"/></td>
    <td><input name="valor_unitario" type="text" class="imput_pedido" id="valor_unitario" style="text-align:right" size="6" maxlength="9" onkeydown="valor(this)" onkeyup="valor( this )" value="<?php echo $vl_unit?>"/></td>
    <td><input name="total" type="text" class="imput_pedido" id="total" value="<?php echo $total?>" size="8" readonly="readonly" style="text-align:right"/></td>
    <td><a href="#" onclick="mostra(unidade, descricao, quant, valor_unitario, <?php echo $id_cliente?>, <?php echo $pedido?>, <?php echo $id?>)">AT</a></td>
    <td>EX</td>
  </tr>
  <?php
  
  $i++;
  }
  ?>
</table>
</form>

 

Estou usando uma função em java script mesmo, tentei fazer :assobiando: . mas dessa forma so ta pegando os dados dos primeiros imputs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, a função javascript que você criou está pegando o campo por ID.

 

Agora vem a questão, você está inserindo cada linha com um ID diferente? pois se tiver com ID igual ele vai dar erro mesmo, ou só pega o valor do primeiro ID que ele encontrar ou nem pega... rs

 

No caso você tem que ter um id único para cada campo de cada linha, pode concatenar o nome do campo com o id do produto, por exemplo:

 

id="quant<?=$produto['id'];?>" 

e no link utilizar também os id's como parametros:

onclick="mostra(unidade, descricao, quant, valor_unitario, <?php echo $id_cliente?>, <?php echo $pedido?>, <?php echo $id?>, 'quant<?=$produto['id'];?>')"> <!-- E repetir isso para todos os campos -->

 

Já lá na função javascript, utilizar da seguinte forma:

function mostra(unidade, descricao, quant, valor_unitario, cliente, pedido, id, quant){ // Adicionei o campo quant, tem que fazer isso com todos os demais
unid=document.getElementById("unidade").value;
desc=document.getElementById("descricao").value;
quant=document.getElementById(quant).value;
valor_unit=document.getElementById("valor_unitario").value;

window.location="update_item.php?id="+id+"&unidade="+unid+"&descricao="+desc+"&quantidade="+quantidade+"&valor_unit="+valor_unit+"&cliente="+cliente+"&pedido="+pedido;
}

 

Qualquer dúvida, só avisar.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não entendi essa parte id="quant<?=$produto['id'];?>", porque ja estou passado o ID da linha que está vindo do banco de dados.

 

 

Nao estou usando o jquery, mas se for mais fácil para achar a solução poderia me auxiliar com essa função. Não domino muito essa biblioteca.

 

 

 

Porque estou fazendo o seguinte passando os dados que estão no input para função e ela enviar para outra pagina onde estou fazendo o calculo de cada produto e atualizando no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não entendi essa parte id="quant<?=$produto['id'];?>", porque ja estou passado o ID da linha que está vindo do banco de dados.

Então cara... essa parte seria para você definir para cada campo um ID único, pois da forma que você está fazendo, você tem vários campos com o mesmo id, por isso só está sendo feito o cálculo da primeira linha.

 

Incluindo o id do produto ao id do(s) campo(s) você passa a ter um id para cada produto. e com isso você conseguirá ter acesso a este campo da forma que te passei no post anterior.

 

Qualquer coisa é só gritar... rs

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo, desse jeito ai infelizmente não funcionou. da forma como você representou ai da erro.

 

<input name="unidade<?php =$linha["id"]?>" type="text" class="imput_pedido" id="unidade<?php =$linha["id"]?>" size="2" readonly="readonly" value="<?php echo $unidade?>"style="text-align:center" />

 

tentei criando um vetor

<input name="unidade[<?php echo $i?>]" type="text" class="imput_pedido" id="unidade<[<?php echo $i?>]?>" size="2" readonly="readonly" value="<?php echo $unidade?>"style="text-align:center" />

não deu certo também, ou eu que estou fazendo errado.

 

estou passando como paramento dessa forma:

 

onclick="mostra(unidade[<?php echo $i?>]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá o erro está aqui:

id="unidade<?php =$linha["id"]?>"

 

Neste caso ou você usa <?=$linha... ou <?php echo $linha...

 

Esta sintaxe (<?=) é como se fosse uma "abreviação" do <?php echo

é chamada de short_open_tags se estiver desativada pode ser ativada no php.ini

 

Se com ela estiver desativada dará erro, neste caso use o <?php echo

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites
<script language="javascript">

	function mostra(teste)
		{
		  w=document.getElementById("teste").value;
		  alert(w);
}
</script>
<body>
<?php 
for($i=0; $i<2; $i++){
?>
<input id="teste<?php $i?>" name="teste" type="text" value="">
<input name="teste" type="button"  onclick="mostra(teste)" value="enviar"/><br />
<?php 
}
?>
</body>

rapaz esse troço da dando dor de cabeça, fiz um esquema parecido aqui no meu trampo, desse modelo que você me disse, mas insisti em pega so o primeiro input.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<input id="teste<?php $i?>"

tinha esquecido de colocar o echo aqui, mas coloquei e nada tbm.

 

REATE TABLE IF NOT EXISTS `pedido` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `id_cliente` int(11) NOT NULL,  `numero_pedido` int(11) NOT NULL,  `id_produto` int(11) NOT NULL,  `data` varchar(20) DEFAULT NULL,  `produto_desc` varchar(100) DEFAULT NULL,  `und` varchar(10) NOT NULL,  `quantidade` int(11) DEFAULT NULL,  `valor_unit` decimal(10,2) DEFAULT NULL,  `total` decimal(10,2) DEFAULT NULL,  PRIMARY KEY (`id`))

 

Essa é a tabela onde sera armazenados os produtos.

Compartilhar este post


Link para o post
Compartilhar em outros sites


CREATE TABLE IF NOT EXISTS `clientes` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cliente` varchar(150) DEFAULT NULL,

`endereco` varchar(150) DEFAULT NULL,

`bairro` varchar(45) DEFAULT NULL,

`cidade` varchar(300) NOT NULL,

`telefone` varchar(45) DEFAULT NULL,

PRIMARY KEY (`id`)

)

 

 

CREATE TABLE IF NOT EXISTS `produto` (

`id_produto` int(11) NOT NULL AUTO_INCREMENT,

`produto` varchar(30) NOT NULL,

`unidade` varchar(3) NOT NULL,

`valor` decimal(10,2) NOT NULL,

PRIMARY KEY (`id_produto`)

)

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.