Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Ianni

[Resolvido] Formulário de Pedido

Recommended Posts

Bom Dia !

 

Após um breve afastamento do forum, estou voltando, ainda que meio lentamente.

Estou com um desafio que tem me queimado os neuronios ao buscar uma solução para ele.

Tenho um formulário de pedidos que será usado num sistema administrativo de uma empresa.

Após escolher o nome do cliente e o produto, é exida a relação dos produtos para montar o pedido.

Usando ajax, essa parte está pronta e funciona bem.

O que tem me tirado o sossego é como vou tratar isso ao processar os dados.

Segue abaixo o código da relação dos produtos:

 

 

response.write "<table border='0'><tr><td><b>Nome</b></td><td><b>Peso</b></td><td><b>Quantidade</b></td><td><b>Comprar</b></td></tr>"

 

while not tab_cidade.eof

 

response.write "<tr><td>"&tab_cidade("nome")&"  </td><td> "&tab_cidade("peso")&" </td><td align='center'><input type='text' name='qtd' size='3' maxlength='5'></td><td align='center'>  <input type='checkbox' name="∏("id")&"'></td><td></tr>"

 

Penso em fazer na quantidade o mesmo que coloquei no checkbox, o que, em tese é possivel, pois checaria primeiro o fabricante e criaria um loop para pegar a quantidade total de produtos. Após isso comparo com os valores que recebi para criar as variaveis que irá receber os dados do formulário.

 

O que me intriga é: existe outra forma mais fácil de fazer isso? ou estou no caminho certo?

 

tab_cidade.movenext

 

wend

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria a mesma logica de um carrinho de caompras, naun...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, seria a mesma coisa, porem os exemplos que vi, são todos 1 produto por vez, quero que tenha vários produtos, podendo assim escolher mais d 1 na mesma página e enviar para processamento.

A intenção é inserir 1 produto de cada vez no bd ao se criar o pedido, sempre relacionando o numero do pedido com o produto e sua quantidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz com checkbox a quantidade e você pode por ate um combobox com os produtos , podendo ser de varias categorias...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não peguei a linha do raciocinio.

Mas a primeira parte está como gostaria.

Após a escolha do cliente e do fabricante, é exibido os produtos, peso, quantidade, e um checkbox para selecionar o produto.

Isso é enviado para uma página onde é exibido o nome do produto, seu preço (que é calculado conforme o cliente pois tem clientes que compram grandes quantidades e por isso tem desconto.) a quantidade escolhida.

O que pretendo fazer agora:

1) Fazer exibir mais de um produto selecionado para compra - 2ªpágina. (parte q ainda estou com um nó na cabeça)

2) Criar um radiobox para escolher entre continuar a compra ou finaliza-la. (parte fácil)

3) Se continuar, os dados desses produtos é inserido no bd e volta para a escolha do fabricante com o nome do cliente armazenado numa sessão.

Se finalizar, ocorre a mesma coisa mas a sessão é destruida.

Acredito que resolvendo o primeiro problema, resolvo o 3 tb pois haverá em 90% das transações mais de um produto selecionado.

 

Abraços,

Vinicius Ianni

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como esperado, surgiu algumas "bolas na trave" que estou empacando. (É osso não estar com todo material de trabalho a mão)

fiz um record count pra pegar o total de produtos do fabricante escolhido:

 

set rs2=server.createobject("adodb.recordset")
stct="SELECT count(id) as total FROM produtos WHERE fabricante='"&fab&"'"
set rs2 = conn.execute(stct)

criei uma variavel pra pegar esse valor, coloquei o cint pq no for estava dando tipos incompativeis.

 

contado = Cint(rs2.fields(0))
for i=0 to contado
prodnom(i) = request.form("prodname'"&(i)&"'")
response.write prodnom(i)
next

Agora acusa erro no prodnom(i) ....

onde estou errando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca:

contado = rs2("total")

dar erro assim tbm?

 

e o for faz assim:

for i=0 to contado
response.write request.form("prodname"&i)
next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que achei parte dos erros, essa parte, o é construida no forumlario com o id do produto, então seria prodname181=181

ao recupera os valores o laço teria de começar do valor mais baixo e ir até o mais alto.

Sendo assim mudei o select para isto:

stct="SELECT id FROM produtos WHERE fabricante='"&fab&"'"

 

e o for ficou assim:

 

contado = rs2("id")

for i=0 to contado

response.write request.form("prodname"&i)

 

tentei com

for i=0 to ubound(contado)

 

e com

for i=0 to lbound(contado)

 

mas não executou o response.write e também não acusa erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

paracontar você pode usar esses dois metodos

 

naun eskça de alterar o cursortype para pode usar o se for usar o recordcount

 

recordset.CursorType = 3 (AdOpenDynamic)

 

dependendo da situacaun melhor usar um contatdor normal ou a clausula count do SQL, pois se

 

o seu bd for muito grande o recordcount do objeto recordset para apresentar queda de

 

desempenho

 

exemplo:

 

<%
DIM mySQL, objRS
mySQL = "SELECT * FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mySQL, objConn

DIM iRecordCount
iRecordCount = 0
DO WHILE NOT objRS.EOF
iRecordCount = iRecordCount + 1
objRS.MoveNext
Loop

Response.Write "(" & iRecordCount & ")"

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing
%>

SQL COUNT

 

 

<!--#INCLUDE VIRTUAL="/includes/connection.asp" -->

<%
DIM mySQL, objRS
mySQL = "SELECT Count(*) AS intTotal FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open recSQL, objConn

Response.Write objRS("intTotal")

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing
%> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estava usando o select count(id) ... pois é um bd mysql.

 

Mas percebi que esse metodo está errado.

Pois na página onde tem o formulário, esse campo que pretendo resgatar, é construido assim:

<input type='hidden' name='prodname"&rsprod("id")&"' value='"&rsprod("id")&"'>"&rsprod("nome")&"  </td>

 

Assim sendo, uma clausula sql com count não dá o resultado esperado, pois a contagem será dos registros e preciso que pegue os id´s dentro da faixa construida pelo select:

 

stct="SELECT id FROM produtos WHERE fabricante='"&fab&"'"

 

para depois criar uma variavel com seu respectivo valor:

 

prodname(i) = request.form("prodname"&i)

 

ainda não fiz a criação dessa variavel, o que estou testando por enquanto é um response.write request.form("prodname"&i)

 

o problema é que está dando erro no lbound, que dá type mismatch.

 

segue abaixo o trecho do código que apresenta erro:

 

fab = request.form("fabnon")

set rs2=server.createobject("adodb.recordset")

stct="SELECT id FROM produtos WHERE fabricante='"&fab&"'"

set rs2 = conn.execute(stct)

 

contado = rs2("id")

For i = lBound (contado) To uBound (contado)

'for i=0 to contado

response.write request.form("prodname"&i)

'response.write prodnom(i)

next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Após quebrar muito a cabeça, resolvi fazer usando o while.

 

funciona como quero.

 

Agora estou em duvida com como criar uma variavel dinamica.

Preciso que seu nome tabém seja dinamico, não apenas seu valor.

Como está o codigo agora:

 

DO WHILE NOT rs2.EOF

prodnam rs2("id") = request.form("prodname"&rs2("id"))

response.write pronam &rs2("id")

rs2.movenext

loop

 

Como esperado o nome da variavel "prodnam" não funciona.

Como devo fazer para que o nome da variavel também seja alterado?

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.