Caros Amigos
Estou iniciando nesta programacao web e apanhando muito com o primeiro programa em PHP, recorrendo a Javascript para tornar os campos dinamicos … peco perdao pelo detalhamento do problema, vamos la:
A ideia é muito simples: listo varios itens que tem no BD, trazendo a quantidade e o usuario digita o valor unitario e aparece o valor total (qtde x unit) em outro campo, na mesma linha.
So que eu nao tenho ideia de quantas linhas eu terei na tela. Um pedido pode ter 1 linha, o outro 20 linhas … entao, no PHP eu usei o while e fui criando as linhas do formulario, onde cada linha tem os 3 campos: qtde (preenchido, disable), unitario (para digitacao) e valor total (que retorna a multiplicacao, disable)
para cada linha, e aqui é importante, eu gerei os nomes de maneira automatica:
cpo_qtde1, cpo_unit1, cpo_tot1 para a primeira linha
cpo_qtde2, cpo_unit2, cpo_tot2 para a segunda linha
cpo_qtde5, cpo_unit5, cpo_tot5 para a quinta linha e assim por diante
usei o tabindex para so passar nos cpo_unitXXX
ao sair do cpo_unit1, temos o evento onBlur=Calcula(variavel);
esta variavel é o numeral que diferencia cada linha, 1, 2 … 5 … etc … tambem gerado la no php
entao tenho
para o item 1 … onBlur=Calcula(1);
para o item 2 … onBlur=Calcula(2);
para o item 5 … onBlur=Calcula(5);
meu formulario tem o nome de frm_itens, e no javascript fiz assim para o primeiro item:
<script type="text/javascript">
function Calcula(linha_controle)
{
if (linha_controle==1)
{
wcpo1_qtde = document.frm_itens.cpo_itmqtde1.value;
wcpo1_unit = document.frm_itens.cpo_itmvalue1.value;
wcpo1_tot = wcpo1_qtde * wcpo1_unit;
document.frm_itens.cpo_itmtot1.value=wcpo1_tot;
}
}
</script>
Eis o problema ! Eu nao posso criar um bloco IF para cada registro que eu tiver na tela. Posso ter 2, 10, 50 … posso ate criar 100 blocos de IF e deixar um aviso caso dê o azar de ter 101 (é uma solucao, claro). Mas acho que posso tornar a funcao acima bem generica. Basicamente, eu precisaria tornar inteligentes as 3 linhas que fazem referencia ao imtqtde1, itmvalue1 e itmtot1
Nao consegui automatizar isto e tirar finalmente o if (linha_controle==1) da rotina. Por ser um programador muito velho, risos, estou perdido nesta juncao de HTML, PHP, Javascrit, SQL, CSS e nao sei mais o que vou encontrar pela frente…
Grande Abraco a Todos
Manuel