Ir para conteúdo
Fórum Script Brasil
  • 0

UPDATE com vários campos e vários registros (ASP)


Helinho

Pergunta

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!

=]

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

não seria o caso de retirar o INT de

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

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

se o id é i

então

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

    SQL2 = "UPDATE fotos SET titulo = '"&Request("titulo"&i)&"', sessao = '"&Request("sessao"&i)&"' WHERE id = " & id
    conexao.Execute SQL2
Next

conexao.close
Set RSfotos = Nothing

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

Link para o comentário
Compartilhar em outros sites

  • 0

Olá bareta,

Tentei fazer utilizando a sua sugestão 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, 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!

Editado por Helinho
Link para o comentário
Compartilhar em outros sites

  • 0

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!

Editado por Helinho
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...