Ir para conteúdo

POWERED BY:

Arquivado

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

Helinho Coelho

[Resolvido] UPDATE com vários campos e vários registros (ASP)

Recommended Posts

Boa noite,

 

Estou apelando para este post porque já fiquei mais de 9 horas lendo, pesquisando e tentando montar um UPDATE MySQL em ASP para múltiplos registros com três campos cada. O mais perto que cheguei (pelo dúvidas frequentes do fórum) foi através do código abaixo.

 

 

Bom, eu tenho uma tabela "fotos" com os campos: id, titulo e sessao. Tenho duas páginas ASP: uma com o formulário que contém a tabela com todos os registros listados e outra que faz o update no MySQL a partir dos dados deste formulário.

 

1) fotos_listar.asp


<form name="formulario" method="post" action="fotos_editar.asp">

<% While Not RS.EOF ...%>
(...)

<input name="titulo_<%=(RSgaleria.Fields.Item("id").Value)%>" type="text" value="<%=(RSgaleria.Fields.Item("titulo").Value)%>" />
<input name="sessao_<%=(RSgaleria.Fields.Item("id").Value)%>" type="text" value="<%=(RSgaleria.Fields.Item("sessao").Value)%>" />

<input name="botao" type="submit" value="Atualizar todos os dados!" />

(...)
<% Whend ...%>

</form>

 

Obs: Na página acima ela me retorna perfeitamente uma tabela aparecendo todos os registros listados com seus respectivos campos (até aí tudo bem!). O problema está na próxima página! (acredito eu)

 

 

 

 

2) fotos_editar.asp

<!--#include file="inc_conexao.asp" -->
<%
Dim i
For i = 1 to Request.Form.Count

SQL1 = "SELECT * FROM fotos WHERE id= " &i
Set RSfotos = conexao.Execute(SQL1)

titulo = Int(Request("titulo"&i))
sessao = Int(Request("sessao"&i))
id = i

SQL2 = "UPDATE fotos SET titulo = '"&titulo&"', sessao = '"&sessao&"' " &_
" WHERE id = " & id
conexao.Execute SQL2
Next

conexao.close
Set RSfotos = Nothing


Response.Redirect("update_ok.asp")
%>

 

 

Obs: O UPDATE é realizado, porém com todos os valores em zero. Ou seja, é feito o update mas todos os registros e todos os campos ficam com o valor "0" inserido. Bom, isso foi o mais perto que "acho" ter chegado!

 

 

 

No mais agradeço a atenção!

 

 

 

=]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testa retirando o int do request form e caso ainda não dê certo, dá um response.write na sql2:

titulo = Request.Form("titulo"&i))
sessao = Request.Form("sessao"&i))

 

E se não funcionar:

SQL2 = "UPDATE fotos SET titulo = '"&titulo&"', sessao = '"&sessao&"' WHERE id = " & id
response.write sql2
'conexao.Execute SQL2

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

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

UPDATE fotos SET titulo = '"&request.form("titulo")(i)&"', sessao = '"&request.form("sessao")(i)&"' WHERE id = " & request.form("id")(i)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Vinícius e Xanburzum,

 

Tentei fazer utilizando as duas sugestões de vocês porém não funcionou. Sendo assim, eu remontei a minha estrutura de form e execução. Vou explicar detalhadamente como fiz agora:

 

1) na página "fotos_listar.asp" (eu resumi o código aqui, ok? porque está funcionando bem, mas fiz algumas modificações.)

 

<form id="formulario" name="formulario" method="post" action="fotos_atualizar.asp">

<% While Not RSfotos.EOF) %>

<img src="galeria/<%RSfotos.Fields.Item("foto").Value)%>" width="90" height="90" />
<input name="checkbox" type="checkbox" value="<%=(RSfotos.Fields.Item("id").Value)%>" />
<input name="titulo" type="text" value="<%=(RSfotos.Fields.Item("titulo").Value)%>" />
<select name="sessao" value="<%=(RSsessao.Fields.Item("sessao_fotos").Value)%>"</select>
<%
RSfotos.MoveNext()
Wend
%>

<input name="botao" type="submit" value="Atualizar todos os dados marcados!" />

</form>

 

Aqui eu criei um "checkbox" para filtrar os registros que deverão ser alterados no UPDATE da próxima página.

 

Sendo assim, neste form eu tenho:

• 1 imagem que não sofrerá nenhuma alteração

• 1 checkbox contendo em seu value o ID do registro listado

• 1 textfield contendo em seu value o valor do título da foto

• 1 select contendo em seu value o valor da sessão da foto

 

Então a visualização desta página fica assim:

galeria.jpg

 

 

2) na página "fotos_atualizar.asp" eu adaptei algumas funções como se segue abaixo, porém não está funcionando:

 

<!--#include file="inc_conexao.asp" -->
<%
Dim checkbox
   checkbox = Request("checkbox")

If checkbox <> "" Then
Set RSfotos = conexao.Execute("SELECT id FROM fotos WHERE id = " &checkbox)

While Not RSfotos.EOF

id = RSfotos("id")
titulo = Request("titulo")
sessao = Request("sessao")

conexao.Execute "UPDATE fotos SET titulo = '"&titulo&"', sessao = '"&sessao&"' " &_
" WHERE id = " &id

Wend

conexao.close
Set RSfotos = Nothing
End If

Response.Redirect("update_ok.asp")
%>

 

 

O quê será que preciso fazer para esse UPDATE funcionar certinho chamando os IDs respectivos? Mais uma vez agradeço a atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ENCONTREI A SOLUÇÃO COM O "LeoB" PARA A QUESTÃO ABERTA NESTE POST (testada e funcionando perfeitamente):

 

 

Bom, então abaixo segue o código de como ficou a solução para UPDATE de vários registros e com vários campos (by LeoB):

 

1) página fotos_listar.asp

<form id="formulario" name="formulario" method="post" action="fotos_atualizar.asp">

<% While Not RSfotos.EOF) %>

<img src="galeria/<%RSfotos.Fields.Item("foto").Value)%>" width="90" height="90" />
<input name="titulo<%=(RSfotos.Fields.Item("id").Value)%>" type="text" value="<%=(RSfotos.Fields.Item("titulo").Value)%>" />
<select name="sessao<%=(RSfotos.Fields.Item("id").Value)%>" value="<%=(RSsessao.Fields.Item("sessao_fotos").Value)%>"</select>

<%
RSfotos.MoveNext()
Wend
%>

<input name="botao" type="submit" value="Atualizar todos os dados!" />

</form>

 

 

2) página fotos_atualizar.asp

<!--#include file="inc_conexao.asp" -->
<%
Set RSfotos = conexao.Execute("SELECT id FROM fotos")

While Not RSfotos.EOF
  id = RSfotos("id")

  titulo = Request("titulo" & id)
  sessao = Request("sessao" & id)

  conexao.Execute "UPDATE fotos SET titulo = '"&titulo&"', sessao = '"&sessao&"' " &_
  " WHERE id = " &id

  RSfotos.MoveNext
Wend

conexao.close
Set RSfotos = Nothing

Response.Redirect("update_ok.asp")
%>

 

 

Até a próxima!

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.