Web Service para consultar CEP em PHP

Boa tarde, segue uma dica para quem quer consumir o webservice dos correios e ter informações de endereço por cep.

Segue o código abaixo:

$ws_url = ‘http://webservice.uni5.net/web_cep.php’;
$ws_query = array(
‘auth’ => ‘9f31e2742fbb98246cbd784c97faaaf6’, //Chave de autenticação do WebService
‘formato’ => ‘query_string’, //Valores possíveis: xml, query_string ou javascript
‘cep’ => ‘75690-000’ //CEP que será pesquisado
);

$ws_url .= ‘?’;
foreach($ws_query as $get_chave => $get_vl){
$ws_url .= $get_chave.’=’.urlencode($get_vl).’&’;
}

parse_str(file_get_contents($ws_url), $resultado);

switch($resultado[‘resultado’]){
case ‘2’:
$strString = ”
<b>Cidade: </b> “.$resultado[‘cidade’].”
<b>UF: </b> “.$resultado[‘uf’].”
“;
break;

case ‘1’:
$strString = ”
<b>Tipo de Logradouro: </b> “.$resultado[‘tipo_logradouro’].”
<b>Logradouro: </b> “.$resultado[‘logradouro’].”
<b>Bairro: </b> “.$resultado[‘bairro’].”
<b>Cidade: </b> “.$resultado[‘cidade’].”
<b>UF: </b> “.$resultado[‘uf’].”
“;
break;

default:
$strString = “Resultado: : “.$resultado[‘resultado’];
break;
}

echo $strString;

 

Por enquanto é só, espero poder ajudar alguém!

Anúncios

Método response.redirect do asp tradicional no php

samis0001

Boa tarde pessoal, hoje eu me deparei com um problema que por sinal era bem simples, mas me deu uma certa canseira, mas cheguei a uma solução.

O problema era o seguinte:

Quando eu executava algum método que estava em uma classe externa, e depois de executar o tal método, e eu precisasse retornar à classe principal, executar o método que estava sendo executado passando para o método o mesmo código, eu estava passando via GET (na url) o código para ser executado o método normalmente.

Até ai tudo bem, retornava para a classe principal, o mesmo código via GET com o método nativo do PHP header como segue o exemplo abaixo.

<?
header(“location: classeprincipal.php?codigoretornado=10”);
?>

Porém com este método eu estava recebendo inúmeras exceções.
Pois bem, a solução mais rápida que eu achei foi retornar a classe principal e ao método, o código como segue o exemplo abaixo.

Criei uma function que faz o trabalho e funcionou certinho.

Segue o exemplo abaixo.

<?
function Redirecionar($url)
{
if ($url==-1)
{
echo” <script>history.go(-1);</script>”;
}
else
{
echo” <script>document.location.href=’$link'</script>”;
}
}

//Executar o método passando o parâmetro que é a url
Redirecionar(“http://www.meulinq.com.br/codigo=10&#8221;);

?>

Por enquanto é só, espero que ajude alguém.
Ótima tarde!

Samis Lobato

Intervalo entre datas PHP

Samis_Carecatura

 

 

 

 

 

 

 

 

 

 

 

Boa tarde caros seguidores, como sempre eu posto minhas dificuldades e suas soluções.

Tive um problema em trazer uma data do banco e comparar com uma outra de data de uma outra tabela e fazer a diff dela, então segue abaixo a solução, espero ajudar alguem com essa dúvida.

//Primeiramente setamos as duas datas, inicial e final para lançarmos dentro da classe que fará a comparação, e convertemos para o formato TimeStamp.
$DataInicial = date(‘Y-m-d’, strtotime($row[“DataInicial”]));
$DataFinal = date(‘Y-m-d’, strtotime($row[“DataFinal”]));

$inicio_evento = strtotime($DataInicial );
$fim_evento= strtotime($DataFinal );

//Neste trecho, nós já podemos saber a diferença entre as duas datas
$diferenca = $inicio_evento – $fim_evento;

$dias = intval($diferenca / 86400);

//Agora basta exibir o resultado para seu usuário.
echo “Ainda restam $dias dia(s).”;

 

É isso ai, espero ter ajuda alguém, ótima tarde de segunda-feira para todos!

Expressão Regular no C#

10390495_867086803307173_3718949370503317271_n

 

 

 

 

 

 

 

 

 

 

Uma expressão regular ou ( regex ), abreviação do inglês para ( regular expression) provê uma forma concisa e flexível de identificar cadeias de caracteres, como por exemplo caracteres particulares, palavras reservadas, palavras ou padrões de caracteres.

Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que, ou serve para gerar e analisador expressões sintáticas ou examinar textos e identificar partes que não são de seu interesse.

Pois bem, vou dar um exemplo simples de uso de uma Expressão Regular.

Vamos usar para verificar se seu usuário digitou um e-mail válido. Neste exemplo estou usando VS2010 e C# 3.

A primeira coisa a se fazer é importar a liby:

using System.Text.RegularExpressions;

Você agora irá criar uma instancia dessa classe, que é a Regex, e já passando a cadeia de caracteres como segue abaixo.

Regex regex = new Regex(@”^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$”);

E para verificar se sua condições esta satisfeita faça o seguinte:

if (regex.IsMatch(txtemail.text))

Exeplo na prática: Regex regex = new Regex(@”^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$”);

if (regex.IsMatch(txtemail.text)) { //Email válido } Else { //Email invalido }

 

Espero ter ajudado!

Email Windows Forms

Image

Boa noite!
Em uma de minhas necessidade de ter na minha aplicação uma área onde o cliente poderia entrar em contato comigo, sem precisar sair da app, criei um suporte on-line, onde eu recebo as mensagens no meu email quando um cliente de alguma app da Vipersys necessita de enviar uma tela de erro ou até mesmo sugerir alguma novidade no sistema entre muitas outras coisas, cabe a você agora a criatividade, segue abaixo o código com alguns comentários que achei necessário.

// Você precisará incluir as seguintes namespaces
using System;
using System.Text;
using System.Windows.Forms;
using System.Net.Mail;
using System.Net.Mime;
using System.Net;

namespace EnvioEmailCS
{
public partial class Form1 : Form
{
// Aqui você instancia a classe MailMessage
MailMessage eMail = new MailMessage();

public Form1()
{
InitializeComponent();
}

//Neste caso estou colocando para disparar o evento de enviar o email no load do meu form
private void Form1_Load(object sender, EventArgs e)
{
// Aqui você seta os parâmetros de envio do email
// Estou usando variáveis, mas você pode substituir por componentes (TextBox)
string strEmailCLiente = “vipersys@gmail.com”;
string strSenha = “########”;
string strEmailSuporte = “vipersysweb@hotmail.com”;
string strAssunto = “Email com C#”;
string strMensagem = “Vipersys Tecnologia da Informação”;
using (MailMessage mailMessage = new MailMessage(new MailAddress(strEmailSuporte), new MailAddress(strEmailSuporte)))
{
//Atribuo o conteúdo aos dois principais atores no envio do email
//A propiedade Body, leva o título/assunto, preenche o corpo do email
//A propiedade Subject, leva o corpo do email
mailMessage.Body = strAssunto;
mailMessage.Subject = strMensagem;
try
{
SmtpClient SmtpServer = new SmtpClient();
SmtpServer.Credentials = new System.Net.NetworkCredential(strEmailCLiente, strSenha);
SmtpServer.Port = 587;

SmtpServer.Host = “smtp.gmail.com”;
SmtpServer.EnableSsl = true;

eMail = new MailMessage();
String[] addr = strEmailSuporte.Split(‘,’);
eMail.From = new MailAddress(strEmailCLiente);
Byte i;
for (i = 0; i < addr.Length; i++)
eMail.To.Add(addr[i]);

eMail.Subject = strAssunto;
eMail.Body = strMensagem;

eMail.IsBodyHtml = true;
eMail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
eMail.ReplyTo = new MailAddress(strEmailSuporte);
SmtpServer.Send(eMail);
MessageBox.Show(“Email enviado com sucesso!”, “Vipersys Tecnologia”, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “EMail”, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

}
}
}

label transparente

Imagem

 

Bom dia comunidade, hoje eu tive um pequeno problema com um label, vou relatar e em seguida dar a solução encontrada. Pois bem, eu tinha uma PictureBox no meu formulário, pois precisava de um fundo na tela, e quando eu colocava o label no form, o fundo ficava cinza e eu não conseguia colocar ele transparente pelas propriedades, tive que perder uns minutinhos e fazer uma pesquisa e cheguei à tão esperada solução do problema, segue abaixo a solução.

==========================Solução==========================

            lblCartao.Parent = imgCiaFundo;
            lblCartao.BackColor = Color.Transparent;
            lblCartao.ForeColor = Color.White;

==========================Solução==========================

 

=========================Explicação=========================

            lblCartao.Parent = imgCiaFundo; // lblCartao é minha label, imgCiaFundo é minha picture box
            lblCartao.BackColor = Color.Transparent; // Aqui eu seto a propriedade backcolor com o valor transparente
            lblCartao.ForeColor = Color.White; //Aqui somente coloca a cor da fonte da label branca

=========================Explicação=========================

 

Espero ter ajudado alguém, forte abraço!

 

Erro com tamanho de inteiro C#

Depois de um pico de energia aqui que eu perdi umas linhas de C# digitada, eu pra me desestressar, resolvi escrever um post.

E sem falar no calor imenso aqui na cidade de Rio Quente. Vamos ao que interessa!!!

Alguém por ai já deve ter passado pelo seguinte problema.

ERRO: Valor era muito grande ou muito pequeno para Int32.

No meu teste eu usei um tipo ” INT ” com o seguinte tamanho:  1564985632159 que acabou estourando pelo tamanho. Usei também a seguinte rotina abaixo para fazer o teste.

int UltimoHodometro = Convert.ToInt32(drUltimoHodometro[“Hodometro”].ToString());
int HodometroAtual = Convert.ToInt32(txtHodometro.Text);

if (HodometroAtual <= UltimoHodometro)
{
//testa isso ou aquilo ou sei lá o que
}

Usando esta rotina acima e o tamanho informado no teste, com certeza você reberá o seguinte erro: ( Valor era muito grande ou muito pequeno para Int32. )

Para resolver este problema é muito fácil, vou postar abaixo uma rotina que sana este problema e em seguida vou explicar.

long UltimoHodometro = Convert.ToInt64(drUltimoHodometro[“Hodometro”].ToString());
long HodometroAtual = Convert.ToInt64(txtHodometro.Text);

if (HodometroAtual <= UltimoHodometro)
{
//testa isso ou aquilo ou sei lá o que
}

Observe o que foi alterado:

int -> Long
Convert.ToInt32 – > Convert.ToInt64

Isso na mesma rotina, a diferença é que para você trabalhar com inteiros de 64bits você deve usar o Long e vice versa.

A solução então é essa basta usar o Long que seus problemas vão diminuir!

Boa tarde a todos!