Arquivos de ‘ ASP

Cadastrar, Listar, Editar e Excluir dados de um XML com ASP - Parte 03 23 December 2008 as 7:42 am de Ted k'

Criem um arquivo chamado Editar.asp e nele serão lidas todas as tags que contém no arquivoBanco.xml , mas com a querystring passada pelo arquivo Ler.asp que criamos no artigo anterior. Vamos só alterar uma única tag, um único nó do XML. Lembrando que usei uma tag “nome”: mas vocês poderiam criar uma tag “id” e colocar números seqüenciais ou randômicos, a escolha fica a critério.

Vamos primeiro listar todos os registros, criando os objetos que já utilizamos nos primeiros artigos, nada a mais.

<%@ Language="VBScript" %>
<%
Dim Banco : Banco = Server.MapPath("Banco.xml")
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM")
Set objLER = Server.CreateObject("Microsoft.XMLDOM")
XMLDOC.Load(Banco)
Set objLER = XMLDOC.getElementsByTagName("*")
%>

Logo abaixo desse script vamos criar o formulário com um “for” fazendo a varredura nas tags para pegar só o valor de tag citado na querystring passada:

<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<form action="Editar.asp?nome=<%=Request.QueryString("nome")%>" method="post">
            <input type="hidden" name="CampoUpdate" value="<%=Request.QueryString("nome")%>">
            <%
            For i = 0 To (objLER.length - 1)
            If objLER.Item(i).Text = ""&Request.QueryString("nome")&"" Then
            %>
            <b>Nome: </b><input type="text" name="Nome" value="<% Response.Write(objLER.Item(i).Text) %>"><br>
            <b>E-Mail: </b><input type="text" name="EMail" value="<% Response.Write(objLER.Item(i+1).Text) %>"><br>
            <b>Telefone: </b><input type="text" name="Telefone" value="<% Response.Write(objLER.Item(i+2).Text) %>"><br>
            <%
            End If
            Next
            %>
<input type="submit" value="Editar" name="btEdt">
</form>
</body>
</html>

Reparem a linha onde temos If objLER.Item(i).Text = “”&Request.QueryString(”nome”)&”" Then, é ela que está “selecionando” a tag que quero mostrar.

E por fim a edição:

<%
If Request.Form("btEdt") = "Editar" Then
            Dim Nome, EMail, Telefone, CampoUpdate, i
            Nome             = Request.Form("Nome")
            EMail              = Request.Form("EMail")
            Telefone          = Request.Form("Telefone")

            CampoUpdate = Request.Form("CampoUpdate")
            Set objLER_upDate = XMLDOC.getElementsByTagName("*")
                        For i = 0 To (objLER.length - 1)
                                   If objLER.Item(i).Text = ""&CampoUpdate&"" Then
                                               objLER.Item(i).Text    = Nome
                                               objLER.Item(i+1).Text            = EMail
                                               objLER.Item(i+2).Text            = Telefone
                                   End If
                        Next
                        XMLDOC.Save(Banco)
                        Response.Write("<script>alert('Editado com Sucesso!');location='Listar.asp'</script>")
            Set objLER_upDate = Nothing
End If
Set objLER = Nothing
Set XMLDOC = Nothing
%>

Coloquei a querystring passada em um campo hidden e joguei ele dentro de um “for”, como fiz no formulário, em seguida troquei os valores pelas variáveis em seqüência, Nome, EMail e Telefone, salvei com o método XMLDOC.Save e passei um alert em JavaScript e pronto!!

Façam os testes juntando os três artigos.

Esse tipo de utilização do XML serve para coisas pequenas, por exemplo, um combo de país, cidades de um determinado estado, cores, dentre outros.

Até os próximos artigos!

+ Cadastrar, Listar, Editar e Excluir dados de um XML com ASP - Parte 02 Por Ted k' 10 December 2008 as 11:47 am Nenhum comentário

Continuação do Artigo: Parte 01
Listando e Excluindo dados do XML

Listar todo o conteúdo de um XML é realmente a parte mais fácil, complicado é você listar e formatar o XML dentro de um arquivo com indicadores XSL. No artigo anterior (Parte 01), temos o arquivo Banco.xml com as tags nome, email e telefone. Nesse artigo vamos aprender a listar e excluir todos os elementos de dentro do nó usuario.

De primeira vamos organizar o arquivo Visualizar.xsl, olha só como ele tem que:

Visualizar.xsl

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <center>
      <font color="#000000" size="2" face="MS Sans Serif">Visualizando Dados</font>
      <table width="465" border="1" cellspacing="0" cellpadding="0">
        <tr>
          <td width="117" height="22"><div align="center"><strong>Nome</strong></div></td>
          <td width="125"><div align="center"><strong>E-mail</strong></div></td>
          <td width="107"><div align="center"><strong>Telefone</strong></div></td>
          <td width="106"><div align="center"><strong>Ações</strong></div></td>
        </tr>
        <xsl:for-each select="cadastro/usuario">
          <tr align="center">
            <td height="22"><xsl:value-of select="nome"/></td>
            <td><xsl:value-of select="email"/></td>
            <td><xsl:value-of select="telefone"/></td>
            <td><a><xsl:attribute name="href">Editar.asp?nome=<xsl:value-of select="nome"/><xsl:value-of select="link"/></xsl:attribute>Editar</a>/<a><xsl:attribute name="href">Listar.asp?nome=<xsl:value-of select="nome"/><xsl:value-of select="link"/></xsl:attribute>Apagar</a></td>
          </tr>
        </xsl:for-each>
      </table>
    </center>
  </xsl:template>
</xsl:stylesheet>

Com o stylesheet (que não vem ao caso explicar no momento) vamos fazendo a estrutura de visualização de todos os elementos da tag usuario através de um for-each assim:

e fechando com

Pegamos o valor dos elementos com essa estrutura aqui: .

Usamos o atributo para gerar links, no nosso caso para excluir e editar (que não será mostrado nesse artigo).

Em uma página chamada Listar.asp criamos os objetos para chamar o XML e o XSL e integra-los com o transformNode:

Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM")
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM")

XMLDOC.Load(Server.MapPath("Banco.xml"))
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))
Response.Write(XMLDOC.transformNode(XSLDOC))

Para deletar é simples, criamos um XMLDOC.documentElement para escolher qual nó vamos deletar e chamamos por querystring como tem no do Visualizar.xsl, que no caso usamos o select=”nome”, deletando com o removeChild, segue abaixo o código completo de Listar.asp

Listar.asp

<%@ Language="VBScript" %>
<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<%
Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto

' Listando Dados
XMLDOC.Load(Server.MapPath("Banco.xml"))
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))
Response.Write(XMLDOC.transformNode(XSLDOC))

' Deletando Dados
If CStr(Request.QueryString("Nome")) <> "" Then
	Banco = Server.MapPath("Banco.xml") ' Chamando o Arquivo XML para sofrer alteração
	XMLDOC.Load(Banco)

	Set RaizXML = XMLDOC.documentElement
	Set AlterarReg = RaizXML.selectSingleNode("usuario[nome='"&Request.QueryString("nome")&"']")
	RaizXML.removeChild(AlterarReg) ' Linha de remoção de Objetos

	XMLDOC.Save(Banco)
	Response.Write("<script>alert('Deletado com Sucesso!');location='Listar.asp'</script>")
End If

Set XSLDOC = Nothing
Set XMLDOC = Nothing
%>
</body>
</html>

E pronto, mais um artigo finalizado, até o próximo!

+ Cadastrar, Listar, Editar e Excluir dados de um XML com ASP - Parte 01 Por Ted k' 02 December 2008 as 8:59 am 2 comentários

Esse é o primeiro de três artigos que falam sobre como você usar o XML para servir de “Banco de Dados”. Usarei o método mais simples para fazer esse tipo de conexão.

Vamos começar por como Cadastrar dados em um XML.

Primeiro temos que ter o XML pronto, como um Banco de Dados com suas “Colunas” já estruturadas. Adicionei três tags a ele e uma principal, as tags são nome, email e telefone, junto com a tag usuario, que fecha o registro e junto com a tag cadastro que chega o “pacote”. Então vamos lá:

Banco.xml

<?xml version="1.0" encoding="UTF-8"?>
<cadastro>
  <usuario>
    <nome>teste nome</nome>
    <email>teste email</email>
    <telefone>teste telefone</telefone>
  </usuario>
</cadastro>

Deixei a estrutura fixa, já com as tags nome, email e telefone, já preenchidas para só seguirem a base, saber do que cada elemento é composto.

XML criado então é só criar uma página chamada Cadastro.asp, dentro dela criar um formulário com os campos de Nome, E-Mail e Telefone e um botão para salvar, tudo em tags HTML mesmo.

Na mesma página fiz uma otimização, coloquei o código de cadastramento em ASP dentro da mesma página e ativei o script através do click do botão “Enviar”, finalizando fica assim:

Cadastro.asp

<%@ Language="VBScript" %>
<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<form action="Cadastro.asp" method="post">
    <b>Nome: </b><input type="text" name="Nome"><br>
    <b>E-Mail: </b><input type="text" name="EMail"><br>
    <b>Telefone: </b><input type="text" name="Telefone"><br>
    <input type="submit" value="Cadastrar" name="btCad">
</form>
</body>
</html>
<%
' Cadastrando dentro do arquivo XML
If Request.Form("btCad") = "Cadastrar" Then
	Dim Nome, EMail, Telefone, Banco
	Nome	 = Request.Form("Nome")
	EMail	 = Request.Form("EMail")
	Telefone = Request.Form("Telefone")
	Banco	 = Server.MapPath("Banco.xml")

	Set DocMT = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto
	DocMT.Load(Banco)
	Set RaizXML = DocMT.documentElement
	Set CriarReg = DocMT.createElement("usuario")
	RaizXML.appendChild(CriarReg)
		' Funcção para criar objetos dentro do XML
		Function AlimentarXML(NomeElemento, NomeVariavel)
			Set Campo = DocMT.createElement(""&NomeElemento&"")
			Campo.Text = NomeVariavel
			CriarReg.appendChild(Campo) ' Linha de criação de Objetos
		End Function

	Call AlimentarXML("nome", Nome)
	Call AlimentarXML("email", EMail)
	Call AlimentarXML("telefone", Telefone)

	DocMT.Save(Banco)
	Response.Write("<script>alert('Cadastrado com Sucesso!');location='Cadastro.asp'</script>")
	Set DocMT = Nothing
End If
%>

Para ficar mais fácil, deixei o código todo comentado, mas algumas linhas serão esclarecidas:

Para inserir dados no XML, usei o Microsoft.XMLDOM para conexão. Em cada inserção adiciono uma tag usuario com essa linha abaixo:

Set CriarReg = DocMT.createElement("usuario")

Como são três tags para ser alimentadas usei uma função de minha autoria para fazer esse trabalho, a AlimentarXML e adiciono com a linha Call AlimentarXML(”nome”, Nome) e salvo tudo através do DocMT.Save(Banco) e pronto, é só testar e ver se o XML está sendo manipulado corretamente:

OBS: Quando testei no meu localhost, o arquivo Cadastro.asp deu erro de acesso. Teste ele em um servidor web e funcionou, caso isso aconteçam com vocês também.
Até o próximo artigo!

+ Usando jQuery para cadastrar dados Por Ted k' 19 November 2008 as 4:12 pm Nenhum comentário

A linguagem em si para fazer o cadastramento no banco não é o foco no momento, usei ASP com JScript para isso e usei o jQuery com efeito .fadeIn(”slow”); para isso então vamos lá:

Criei um arquivo chamado funcao_jquery.js para colocar a função de efeito do jQuery:

O Script completo e comentado para ter uma idéia de como funciona:
funcao_jquery.js

$(document).ready(function(){
	$('#btn_enviar').click(function(){
		// Pega valor dos campos Nome e E-Mail
		var nome_post = $('#Nome').val();
		var email_post = $('#EMail').val();
		// Envia para a função criada em ASP
		$.post("Cadastro_JQuery.asp?Cadastrar=Ok",{nome: nome_post, email: email_post},function(){
			// Lista dentro de uma UL>LI os dados postados
			$("ul li:last").after("<li>" + nome_post + " : " + email_post + "</li>").next().fadeIn("slow");
		});
		 // Apaga os Dados do Campo Nome e E-Mail
		$('#Nome').val("");
		$('#EMail').val("");

	return false;
	});
});

Na tela inicial temos esse modelo aqui com campo de Nome e E-Mail só para exemplo:
Imagem 01

Quando você cadastra ele gera uma LI dinamicamente sem refresh e com efeito fade:
Imagem 02

Segue o código completo:

<%@ Language="JavaScript" %>
<%
// Conexao com o Banco de Dados
var Conexao = Server.CreateObject("Adodb.Connection");
Conexao.ConnectionString = "Driver=MySQL ODBC 3.51 Driver; DataBase=paineldevendas13; Server=localhost; Uid=root; PassWord=root;";
Conexao.Open;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>JQuery Cadastrando com ASP</title>
<script language="javascript" src="jquery.js"></script>
<script language="javascript" src="funcao_jquery.js"></script>
</head>
<body>
<h2>JQuery Cadastrando com ASP</h2>
<ul>
<%
var rs = Conexao.Execute("Select * From Teste"); // SQL para listar os dados
if (rs == null) {
	Response.Write("NADA ENCONTRADO");
}
else {
	while (!rs.EOF) {
		Response.Write("<li>"+rs("Nome")+" : "+rs("EMail")+"</li>") // Lista todos os cadastrados do banco
	rs.MoveNext();
	}
}
%>
</ul>

<br><strong>INSIRA DADOS NO BANCO</strong><br>

<form action="Cadastro_JQuery.asp?Cadastrar=Ok" method="post">
	Nome: <input name="Nome" type="text" id="Nome" />
	<br>
	E-Mail: <input name="EMail" type="text" id="EMail" />
<input name="btAdd" type="submit" value="adicionar" id="btn_enviar" />
</form>
</body>
</html>
<%
// Função para cadastrar no banco
if (Request.QueryString("Cadastrar") == "Ok") {
	Conexao.Execute("Insert Into Teste (Nome, EMail) Values ('"+Request.Form("Nome")+"', '"+Request.Form("EMail")+"')");
	Response.Write("");
}
%>

Baixar : jquery-1.2.6.js