Jump to content
Fórum Script Brasil
  • 0

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


Helinho

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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!

Edited by Helinho
Link to comment
Share on other 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!

Edited by Helinho
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...