Ir para conteúdo

POWERED BY:

Arquivado

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

luiscarlos5046

[Resolvido] For Each item In Request.Form

Recommended Posts

Olá Galera!

Tenho um formulário que é dinâmico. Os campos podem ter mais ou menos ítens.

Essa é a parte do form que quero capturar e personalizar o envio de um email com os itens marcados:

<%
i = 1
do while not rsP.eof
%>
    
<input name="id_produto<%=i%>" type="checkbox" id="id_produto<%=i%>" value="<% =rsP("id") %>">
<select name="qtd<%=i%>" class="texto03" id="qtd<%=i%>">
    <option value="" selected disabled>Qtd.</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<%
i = i+1
rsP.MoveNext 
Loop
%>

Eu coloquei este código abaixo para capturar os dados do form. Ele captura os dados, mas não sei como posso colocar cada ítem em uma variável para depois personalizar o envio do email.

Dim item
For Each item In Request.Form
  Response.Write item
  Response.Write " = "
  Response.Write Request.Form(item)
  Response.Write "<br>"
Next
Set item = Nothing

Eu mandei exibir na tela os dados, me aparecem assim:

 

nome = Luis Carlos - Designer

end = Rua 10, nº 1234 - Centro

id_produto1 = 1

id_produto3 = 3

fone = 3621-1234

qtd3 = 1

email = not@server.com.br

pagto = entrega

qtd1 = 1

button = Enviar Pedido

 

Alguem pode me dar uma luz de como fazer isso?

 

Obrigado!

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

Em relação a mensagem anterior, consegui mais algum avanço.

Vejam o código que fiz... só falta capturar a quantidade:

 

id_cliente_p = Request.form("id_cliente_p")
nome         = Request.form("nome")
endereco    = Request.form("end")
fone        = Request.form("fone")
pagto        = Request.form("pagto")
email        = Request.form("email")
Subject       = "Pedido de compra efetuado no site Negócios em Jales"
ToEmail       = Session("email_to")

Response.Write "Nome: "& nome &"<br />"
Response.Write "Endereço: "& endereco &"<br />"
Response.Write "Fone: "& fone &"<br />"
Response.Write "Pagamento: "& ucase(pagto) &"<br /><br />"
Response.Write "Email do Cliente: "& email &"<br />"
Response.Write "Email do Vendedor: "& ToEmail &"<br /><br />"

Dim item
For Each item In Request.Form("id_produto")
    strSql = " SELECT id,produto,valor FROM produtos "
    strSql = strSql & " WHERE id_cliente = "& cint(id_cliente_p)
    strSql = strSql & " AND id = "& cint(item)
    set rs = cn2.execute(strSql)

    Response.Write "ID do Produto: "& rs("id") &"<br>"
    Response.Write "Produto: "& Replace(rs("produto"),vbcrlf,"<br>") &"<br>"
    Response.Write "Valor: "& FormatNumber(rs("valor"),2) &"<br>"
    Response.Write "---------------------------------------------------<br>"
Next

For Each qtd In Request.Form("qtd")
    Response.Write "Quantidade: "& qtd &"<br>"
Next

Set item = Nothing
response.End()

O resultado está saindo assim:

 

Nome: Luis Carlos - Designer

Endereço: Rua 10, nº 1234 - Centro

Fone: 4321-1234

Pagamento: ENTREGA

 

Email do Cliente: not@server.com.br

Email do Vendedor: nemail@server.com.br

 

ID do Produto: 2

Produto: CHAMPIGNON bacon, catupiry, champignon

Valor: 22,00

--------------------------------------

ID do Produto: 3

Produto: ESCAROLA anchova, escarola refogada, mussarela

Valor: 23,00

--------------------------------------

Quantidade: 1

Quantidade: 2

 

Preciso colocar a qualtidade no devido lugar com o produto acima...

Quantidade: 1 é para o Produto 2

Quantidade: 2 é para o Produto 3

 

* Como eu coloco isso na sequencia ?

 

Luis Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

a quantidade seria o total de request que você recuperou ???

não entendi muito bem....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa quantidade ai, no caso seria a quantos produtos q a pessoa quer comprar.

Eu vou retornar esse valor ai 1 ou 2..

 

No caso ai em cima, eu simulei o pedido de 2 produtos...

Um eu selecionei 1 produto e outro selecionei 2 produtos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não consegue recuperá-lo separadamente para cada produto gerado ?!?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,

No form eu tenho um loop com Checkbox e um Select(List/Menu) como visto no exemplo do form lá acima.

 

Como visto no último exemplo, eu não tô conseguindo recuperar a quantidade separadamente para cada produto.. Sempre a Quantidade insiste em ficar separado.

Acho que o loop que fiz não é o correto para isto.

 

Quant.: 1
Quant.: 2
---------------------------------------------------
ID do Produto: 1
Produto: PORTUGUESA - cebola, ervilha, mussarela, ovos, palmito, presunto
Valor: 21,00
---------------------------------------------------
ID do Produto: 2
Produto: CHAMPIGNON - bacon, catupiry, champignon
Valor: 22,00
---------------------------------------------------

Teria que ficar assim:

 

---------------------------------------------------
Quant.: 1
ID do Produto: 1
Produto: PORTUGUESA - cebola, ervilha, mussarela, ovos, palmito, presunto
Valor: 21,00
---------------------------------------------------
Quant.: 2
ID do Produto: 2
Produto: CHAMPIGNON - bacon, catupiry, champignon
Valor: 22,00
---------------------------------------------------

Acho que consegui explicar... Ufa!

O código que já mudei está assim agora:

 

For Each item In Request.Form("qtd")
    qtd = Request.Form("qtd")
    qtd = replace(qtd," ","")
Next

ArrayQtd = Split(qtd,",")
For i = 0 to Ubound(ArrayQtd)
    Response.Write(" Quant.: "& ArrayQtd(i) & "<br />")
Next

For Each item In Request.Form("id_produto")
    id_produto = Request.Form("id_produto")
    id_produto = replace(id_produto," ","")
Next

ArrayIP = Split(id_produto,",")
For i = 0 to Ubound(ArrayIP)
    strSql = " SELECT id,produto,valor FROM produtos "
    strSql = strSql & " WHERE id_cliente = "& cint(id_cliente_p)
    strSql = strSql & " AND id = "& ArrayIP(i)
    set rs = cn2.execute(strSql)

    Response.Write "ID do Produto: "& rs("id") &"<br>"
    Response.Write "Produto: "& Replace(rs("produto"),vbcrlf,"<br>") &"<br>"
    Response.Write "Valor: "& FormatNumber(rs("valor"),2) &"<br>"
    Response.Write "---------------------------------------------------<br>"
Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

você recupera eles, atraves do array, dá um Split nele, como esta fazendo e apenas concatene o 1º item da quantidade para o 1º ID, e conforme quantos id´s tiver você associa eles

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é... como é que se faz isso?

Não achei uma forma de fazer isso automático... pois a quantidade de produtos no form pode mudar, não é fixo.

 

Eu fiz o split na quantidade, mas não consigo concatenar a variável da quantidade.

já tentei algumas formas e sem sucesso.

 

Como se faz isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu precisei fazer algo semelhante, e fiz da seguinte forma:

peguei o id do produto e usei esse id para nomear parte do input que teria a quantidade, que nesse caso não usava um combo, mas um input normal.

e na pagina de processamento, realizava um select para obter os id´s.

Criei um loop com o rs e recuperava as quantidades criando sessions.

Apos isso, manipulava da maneira que fosse mais adequada.

por exemplo:

<input type='text' name='qtd"&tab_cidade("id")&"'size='3' maxlength='5'>"
depois para recuperar:

realizo o select e recupero os valores;


set rs=server.createobject("adodb.recordset")
idrs="select id from produto"
set rs = conn.execute(idrs)

DO WHILE NOT rs.EOF

Session("qtad"&rs2("id")) = request.form("qtd"&rs2("id"))

...
...

Pode ser que ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius,

no meu caso, tá difícil heim!

em cada checkbox já tem o id do produto e a coisa é ruim pq todos tem o mesmo nome.

e os produtos são carregados do BD.. já fiz tbm nomeando o nome do checkbox um diferente do outro...

mas o problema está em associar o produto selecionado a quantidade, qdo se seleciona mais de um produto, as quantidades e os produtos não ficam separados um em cada produto selecionado.

 

Acho que vou fazer uma outra etapa e definir a quantidade padrão para 1, e antes de enviar o pedido uma outra área para a pessoa alterar a quantidade.

Quase do modo de um carrinho de compras.

 

Pois é Vinicius, vou batalhar mais um pouco aqui pra ver o que dá certo !

 

Valeu pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim, olha este exemplo

 

if qtd_produtos = "" then
Response.write("erro..."
response.redirect("outra_pagina.asp")
else
qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae xanburzum,

 

Finalmente consegui... Só que com o For Each item In Request.Form não dava certo mesmo.

Estava adicionando sim, só que duplicava os registros pelo tanto de campos que tinha no form, se tivesse 8 campos... o for each adicionava 8 vezes... não sei a causa.. mas fiz de outra forma..

 

Segue ai o código de como consegui.. Eu só tirei a quantidade do form e deixei só o ID do PRODUTO..

 

ArrayIDPdt = Request.Form("id_produto")
if ArrayIDPdt <> "" then
    ArrayIDPdt = ArrayIDPdt  & ","
end if

pdtChecados = split(ArrayIDPdt,",")
if ubound(pdtChecados) > 0 then
    for x=0 to ubound(pdtChecados)-1
        strSql = ""
        strSql = strSql & " Insert into itens "
        strSql = strSql & " ( "
        strSql = strSql & "     id_compras," 
        strSql = strSql & "     produto," 
        strSql = strSql & "     qtd "
        strSql = strSql & " ) "
        strSql = strSql & " values "
        strSql = strSql & " ( "
        strSql = strSql & "     " & id_compras & "," 
        strSql = strSql & "     " & pdtChecados(x) & "," 
        strSql = strSql & "     " & qtd
        strSql = strSql & " ) "
        cn2.execute(strSql)
    next
end if

Um grande abraço!

Muito obrigado pela ajuda a todos ai..

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.