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

Inserir Caixa para deletar registros


py2tz

Pergunta

Tenho alguns BDs com insersão de dados, porem tenho sido visitado por pessoas com IPs da Inglaterra, e vários outros paises, gostaria de modificar a parte do admin para que eu pudesse ter akelas caixas iguais as dos email onde clicamos todas as que queremos deletar de uma só vez, pois são milhares delas.

O sistema esta apto a deletar uma a uma e isso enche o saco.

alguém poderia me ajudar?

O Link que apaga o registro é:

<A HREF="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>" target=_blank>DELETE</A>

E a pagina DELETING é

<%

if(Request.QueryString("id") <> "") then spDeleteLinks__id = Request.QueryString("id")

%>

<%

set spDeleteLinks = Server.CreateObject("ADODB.Command")

spDeleteLinks.ActiveConnection = MM_connDUdirectory_STRING

spDeleteLinks.CommandText = "DELETE FROM LINKS WHERE LINK_ID = " + Replace(spDeleteLinks__id, "'", "''") + ""

spDeleteLinks.CommandType = 1

spDeleteLinks.CommandTimeout = 0

spDeleteLinks.Prepared = true

spDeleteLinks.Execute()

%>

Inclusive deve ter jeito de inserir akela caixinha que marca todos de uma só vez

Obrigado por qualquer ajuda.

Fausto

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

py2tz,

O recurso que você implementou pode ficar basicamente o mesmo. Se eu entendi o que deseja, seria assim:

1) Mudar a instrução DELETE utilizando IN, por exemplo :

DELETE FROM LINKS WHERE LINK_ID IN (" + Replace(spDeleteLinks__id, "'", "''") + ")"

Isso permitirá que a instrução apague mais de um registro na tabela.

2) Na caixa que selecionará todas as outras, basta implementar uma função que altere o atributo "checked" das demais para "true" (marcando) ou "false" (demarcando) que será chamada no evento onclick da caixa. Dessa forma, quando postar vão todos os códigos que foram selecionados para formar a instrução SQL.

Qualquer dúvida, é só postar! Espero que te ajude

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Joia, Sabino

Bem eu alterei o deleting e acrescentei o IN, agora preciso mudar o link DELETE para um box, isso eu acho que deve ser individual né?

Seria isso:

<input type="box" value="true" name="B1">

Para cada linha do registro apareceria uma caixa para clicar ou não, certo? mas não é tipo RADIO conforme abaixo

<input type="radio" value="1" name="resposta" style="border: 1 solid #E8CFA3; font-size: 10px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;">

Se puder colocar um exemplo das caixas que teria de adicionar no codigo de onde ficam os milhares de registros a serem apagados. Obrigado pela força.

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

  • 0

Para substituir o

<A HREF="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">DELETE</A>

Seria este codigo?

<input type="checkbox" name="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">

Ai teria que usar um comando geral para apagar todos os que estiverem clicados, seria esse?

<input type="submit" value="Delete" name="B1">

Desculpe a ignorancia

Fausto

Link para o comentário
Compartilhar em outros sites

  • 0
<%

Dim strAlert
Dim strLinks : strLinks = Request.Form("chkLink")

If Len(strLinks) > 0 Then
    strAlert = "alert('Itens selecionados: " & strLinks & "');" 
End If
%>
<html>
    <head>
        &lt;script language="javascript" type="text/javascript">
            <%=strAlert%>
            
            function critica(obj)
            {
                for (var i = 0; i < obj.chkLink.length; i ++)
                {
                    if (obj.chkLink[i].checked)
                    {
                        return true;
                    }
                }
                alert("Selecione pelo menos um item para exclusão");
                return false;
            }
            
            function selecionarTodos(check)
            {
                var objChk = document.getElementsByName("chkLink")
                for (var i = 0; i < objChk.length; i ++)
                {
                    objChk[i].checked = check;
                }
            }
            
            function deletarLink(id)
            {
                selecionarTodos(false);
                document.getElementById("chk" + id).checked = true;
                document.frmDeletar.submit();
            }
        </script>
    </head>
    <body>
        <form id="frmDeletar" name="frmDeletar" action="deletar.asp" onsubmit="critica(this)" method="post">
            <table>
                <tr>
                    <td>
                        <input type="checkbox" id="chkSelecionarTodos" onclick="selecionarTodos(this.checked)"/>
                    </td>
                    <td>
                        Selecione os liks para exclusão
                    </td>
                </tr>
                <%
                Dim i : For i = 0 To 9
                %>
                <tr>
                    <td>
                        <input type="checkbox" value="<%=i%>" id="chk<%=i%>" name="chkLink"/>
                    </td>
                    <td>
                        <a href="java script:deletarLink(<%=i%>); void(0);">Link<%=i%></a>
                    </td>
                </tr>
                <%
                Next
                %>
                <tr>
                    <td colspan="2" align="right">
                        <input type="submit" value="Excluir" />
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

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

  • 0

Cara tenta esse código ... Funciona perfeitamente para o q você quer ...

<form action="pagina.asp" method="get">
 <%


sql = "Select * from projetos tabela "
set tab = cnn.execute(sql)

if not tab.eof then%>
<table width="100%">
          <tr> 
             <td>Registro para deletar</center></td>          
            <td><input name="Submit" type="submit" value="Excluir"></center></td>
          </tr>
<td>Registro para deletar</td>
              <td><input name="checkbox" type="checkbox" value="<%=tab("campo")%>"></td>
            </tr>
Pagina deletar
'Dim objConn, stringSQL, strConnection, array_campo, i, sql_campo, campo,strDBPath
campo = Request.QueryString("checkbox")
'Caso ocorra algum erro os precessos não são interrompidos 
'e é passado para a próxima linha de comando
On error Resume Next 

        if err = 0 and campo <> "" then
            array_campo = split(campo,",")
            For i=0 to ubound(array_campo)
                sql_campo = sql_campo & "tabela.campo = " & Trim(array_campo(i)) & " OR "
                                                         'campo texto, então" & Trim(array_campo(i)) & " OR "
                                                         'caso numerico '" & Trim(array_campo(i)) & "' OR "
            Next
            sql_campo = left(sql_campo,(len(sql_campo)-4))
            sql = "DELETE FROM tabela WHERE "&sql_campo&""
            
                        set rs = cnn.execute(sql)
            
                      
%>
          Seus dados foram exclu&iacute;dos com sucesso!  
          
            <%else%>
            Ocorreu algum erro. Nenhum dado foi excluido.<br>
            <br>
            <a href="java script:history.back(-1)" >Voltar</a>
               <%End if%>

Link para o comentário
Compartilhar em outros sites

  • 0

Quase foi,

Tá dando esse erro:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'LINK_ID ='.

/projetos/admin/deleting.asp, line 16

Veja se fiz certo, na pagina que mostra os registros

<form action="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>" method="get">

<input name="Submit" type="submit" value="Excluir">

<input name="checkbox" type="checkbox" value="<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">

<td align="center"><font class="txt8"><A HREF="editing.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">EDIT</A></font></td>

</tr>

<%

Repeat1__index=Repeat1__index+1

Repeat1__numRows=Repeat1__numRows-1

rsApprove.MoveNext()

Wend

%>

</form>

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

  • 0

py2tz,

Repare no código que eu postei que existe um função associada ao evento onsubmit do form, justamente para dificultar a postagem se não tiver nenhum item selecionado, isso é importante para prevenir o erro na instrução sql.

Deve ser isso que está causando o problema>: não está validando se em pelo menos um item selecionado.

Outre coisa: a associação do evento onsubmit deve ser onsubmit="return ...". Esqueci o return, mas aqui no Firefox funcionou mesmo assim quando testei antes de postar.

[]'s!

Link para o comentário
Compartilhar em outros sites

  • 0

Mas não vi nenhum onsubmit no codigo, muito menos return.

Me parece que ele não esta achando o tal de LINK_ID, isso la na segunda pagina onde processa a coisa:

<%

if(Request.QueryString("id") <> "") then spDeleteLinks__id = Request.QueryString("id")

%>

<%

set spDeleteLinks = Server.CreateObject("ADODB.Command")

spDeleteLinks.ActiveConnection = MM_connDUdirectory_STRING

spDeleteLinks.CommandText = "DELETE FROM LINKS WHERE LINK_ID = " + Replace(spDeleteLinks__id, "'", "''") + ""

spDeleteLinks.CommandType = 1

spDeleteLinks.CommandTimeout = 0

spDeleteLinks.Prepared = true

spDeleteLinks.Execute()

%>

Sabino se você não sabe, imagina eu, montei um site que ficou enorme, são milhares de paginas sem entender da coisa, mas vo tentando ajustar aki e ali, cheio de bugs mas tá rolando.

Se quizer te passo as duas paginas via email e te dou acesso ao site pra ver isso, é um site de radioamadorismo, é hobby.

Abraço e obrigado pela ajuda.

Fausto

Link para o comentário
Compartilhar em outros sites

  • 0

O trecho de código que tem onsubmit é esse:

<form id="frmDeletar" name="frmDeletar" action="deletar.asp" onsubmit="critica(this)" method="post">

Ao invés de onsubmit="critica(this)" o certo é onsubmit="return critica(this)"

Esta postando vazio, por isso esta dando o erro. Se o request vier vazio, vai ficar

LINK_ID =

na query sem valor nenhum, ai da erro mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Sabino, começou a funcionar, mas ainda tem alguma coisa ruim,

O sistema esta deletando somente um registro, mesmo marcando uns 2 ou tres, apaga so um., sempre o primeiro da lista.

Tá assim:

<form id="frmDeletar" name="frmDeletar" action="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>" onsubmit="return critica(this)" method="post">
        <tr align="left" valign="middle" bgcolor="#FFFFFF"> 
          <td><font class="txt8"><%=(rsApprove.Fields.Item("LINK_NAME").Value)%></font></td>
          <td><font class="txt8"><a href="<%=(rsApprove.Fields.Item("LINK_URL").Value)%>" target="_blank"><%=(rsApprove.Fields.Item("LINK_URL").Value)%></a></font></td>
          <td align="center"><font class="txt8"><%=(rsApprove.Fields.Item("LINK_DATE").Value)%></font></td>
          <td align="center"><font class="txt8"><A HREF="approving.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">APPROVE</A></font></td>
          <td align="center"><font class="txt8"><A HREF="deleting.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">DELETE</A>
<input name="checkbox" type="checkbox" value="<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">
<input name="Submit" type="submit" value="Excluir">   
          <td align="center"><font class="txt8"><A HREF="editing.asp?<%= MM_keepNone & MM_joinChar(MM_keepNone) & "id=" & rsApprove.Fields.Item("LINK_ID").Value %>">EDIT</A></font></td>
        </tr>
        <% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rsApprove.MoveNext()
Wend
%>
</form>

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

  • 0

Beleza, parou de dar erro. Os problemas agora são:

1) O arquivo deleting.asp está pegando request.querystring e por isso pega apenas o código que foi passado na URL no action do form (deleting.asp?id=...).

O correto é utilizar, nesse caso, request.form para pegar os valores postados no form e não na querystring;

2) No arquivo deleting.asp, a instrução SQL ainda está com LINK_ID = ... o correto é LINK_ID IN (...) para deletar mais de um.

Espero que ajude!

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...