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 não tenho ideia de quantas linhas eu terei na tela. Um pedido pode ter 1 linha, o outro 20 linhas .. então, 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
então 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:
Eis o problema ! Eu não 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
não 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 não sei mais o que vou encontrar pela frente...
Pergunta
Manuel 1437
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 não tenho ideia de quantas linhas eu terei na tela. Um pedido pode ter 1 linha, o outro 20 linhas .. então, 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
então 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:
view plaincopy to clipboardprint?
Eis o problema ! Eu não 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
não 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 não sei mais o que vou encontrar pela frente...
Grande Abraco a Todos
Manuel
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.