Sistema e manual para Calcular Frete SEDEX, e-SEDEX e PAC dos Correios (versão 1.1)

Ferramentas, JQuery, Javascript, PHP, XML No Comments » Marcelo Korjenioski

Desde semana pas­sada o antigo web­ser­vice dos cor­reios parou de fun­ci­o­nar com PAC.
Foi feita a cor­re­ção do código e agora o PAC esta fun­ci­o­nando novamente.

Sis­tema para Cal­cu­lar Frete 1.1

Docu­men­ta­ção para uti­li­zar o web­ser­vice dos Cor­reios para efe­tuar o cal­culo de forma personalizada.

SCPP_Manual_Implementacao_Calculo_Remoto_de_Precos_e_Prazos

Abaixo segue o código para mani­pu­lar os dados do web­ser­vice usando o PHP.

Segue o exem­plo do código abaixo funcionando.

<?php
/**
* Faz consulta no webservice dos correios e gera array dos valores.
* @copyright  Phaneronsoft
* @author Marcelo Korjenioski - faleconosco@phaneronsoft.com
* @see http://www.phaneronsoft.com
* @filesource correios.php
* @version 1.0
*/

// PESO: Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
define('PESO',0.300);
// COMPRIMENTO: comprimento do volume em centímetros - somente número de 16 a 60
define('COMPRIMENTO',30);
// ALTURA: altura do volume em centímetros - somente número de 2 a 60
define('ALTURA',15);
// LARGURA: largura do volume em centimetros - somente número de 5 a 60
define('LARGURA',20);
// CODIGO_SERVICO: É possivel fazer mais de uma consulta ao mesmo tempo, basta separar os códigos por virgula.
// Neste caso PAC 41106 e SEDEX 40010
define('CODIGO_SERVICO','41106,40010');
// CEP_ORIGEM: seu CEP com 8 dígitos - somente números
define('CEP_ORIGEM','81010210');
// CEP_DESTINO: CEP do seu cliente com 8 dígitos - somente números
define('CEP_DESTINO','60245965');

// Crio um objeto para manipular o XML.
$doc = new DomDocument;
// Carrega o arquivo XML com um arquivo DOMDocument
$doc->Load("http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&amp;nCdServico=" . CODIGO_SERVICO . "&amp;nVlPeso=" . PESO . "&amp;sCepOrigem=" . CEP_ORIGEM . "&amp;sCepDestino=" . CEP_DESTINO . "&amp;nCdFormato=1&amp;nVlComprimento=" . COMPRIMENTO . "&amp;nVlAltura=" . ALTURA . "&amp;nVlLargura=" . LARGURA);
// Defino o nome do elemento pai (root).
$root = $doc->getElementsByTagName('cServico');

// Carrega o arquivo XML com um arquivo DOMDocument
$correios = "http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&amp;nCdServico=" . CODIGO_SERVICO . "&amp;nVlPeso=" . PESO . "&amp;sCepOrigem=" . CEP_ORIGEM . "&amp;sCepDestino=" . CEP_DESTINO . "&amp;nCdFormato=1&amp;nVlComprimento=" . COMPRIMENTO . "&amp;nVlAltura=" . ALTURA . "&amp;nVlLargura=" . LARGURA;
// Defino o nome do elemento pai (root).
$root = $doc->getElementsByTagName('cServico');

// Defino o nome dos elementos filhos no arquivo XML que eu desejo.
$children = array('Valor','PrazoEntrega');

// Faço um loop para pegar todos os elementos pai (root) encontrados.
$valor = array();
for ($i=0; $i < $root->length; $i++) {
// Pega o valor do atributo do elemento pai  (root).
    $id =  $root->item($i)->getElementsByTagName('Codigo')->item(0)->nodeValue;

// Busca por elementos filhos (child) definidos no array
    foreach ($children as $child) {
        $valor[$id][$child] = $root->item($i)->getElementsByTagName($child)->item(0)->nodeValue;
    }
}
echo '<pre>';
var_dump($valor);

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , , , , , ,

Shell Script (Linux)

Sites No Comments » J. C.

— —  —  —  —  —  —  —  — —

#!/bin/bash

echo “Fala ae Mundo!”

— —  —  —  —  —  —  —  — —

Está ai o seu pri­meiro Shell Script, vou expli­car de forma mais detalhada:

Abra seu ter­mi­nal de comando e nele vamos nave­gar até a pasta /tmp (caso não tenha a pasta tmp, você pode criar ela no dire­tó­rio /home, usando o comando mkdir tmp

Agora que esta­mos na pasta /home/tmp, vamos criar um arquivo cha­mado: 1shell.sh, para criar um arquivo vazio basta usar o comando touch “nome­do­ar­qui­vo­e­ex­ten­são” (sem as aspas).

Uti­lize o comando ls para exi­bir os arqui­vos que estão na pasta /home/tmp para certificar-se que seu 1shell.sh foi cri­ado corretamente.

Vamos para a edi­ção deste novo shells­cript, mas antes uma pequena com­pa­ra­ção para faci­li­tar a vida de todos, o que é um shells­cript se não um .bat do linux :P , ok vol­tando a edi­ção: abra seu arquivo shell com o edi­tor de texto vi, para isso digite: vi 1shell.sh.

Den­tro do edi­tor aperte a tecla i para incluir seu texto e digite como está la em cima no começo do post.

A linha #!/bin/bash é o que indica para o linux que seu arquivo é um shells­cript. Depois de digi­tar o texto, pre­ci­one ESC para parar de incluir e digite :wq, esse ultimo comando é sal­var e sair. Certo antes de exe­cu­tar seu shell você deve dar as per­mis­sões neces­sa­rias para ele rodar como um executavel.

Para isso você deve usar o comando chmod +x “nome­do­ar­quivo”. Fazendo isso você vai alte­rar a per­mis­são dele para que possa ser executavel.

Agora vamos ao teste :D digite: ./1shell.sh e veja o resul­tado na tela!!!

root@intranet:/home# mkdir tmp

root@intranet:/home# cd tmp

root@intranet:/home/tmp# ls

root@intranet:/home/tmp# touch 1shell.sh

root@intranet:/home/tmp# ls

1shell.sh

root@intranet:/home/tmp# vi 1shell.sh

rea­ding 1shell.sh

root@intranet:/home/tmp# chmod +x 1shell.sh

root@intranet:/home/tmp# ./1shell.sh

Fala ae Mundo!

root@intranet:/home/tmp#

Logo vou expli­car mais coman­dos e com eles você podera incre­men­tar seu shell, e até mesmo pro­gra­mar nele!

Abra­ços e até a proxima.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , ,

Descobrir ID de elemento através de uma Class usando JQuery

HTML, JQuery, Javascript, Sites No Comments » Marcelo Korjenioski

Des­co­brir ID de ele­mento atra­vés de uma Class usando JQuery é o tema de hoje.
Eu não sou o tipo do pro­gra­ma­dor que fica se pre­o­cu­pando com a quan­ti­dade de linhas por arquivo.
Gosto mesmo é de criar um código sim­ples e de fácil manu­ten­ção. Esta semana estava que­rendo colo­car
um efeito “slide” em algu­mas lis­tas porem não que­ria criar uma fun­ção para cada lista. Então resolvi
criar uma classe comum para elas e atri­buir IDs para os botões e para as lis­tas. Desta maneira foi sim­ples
resol­ver meu pro­blema pois posso iden­ti­fi­car os IDs dos ele­men­tos atra­vés da classe.
Segue o código abaixo para expli­car melhor a situação.

Segue o exem­plo funcionando


<head>
<title>Descobrir id de elemento usando uma classe com JQuery</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<style type="text/css">
ul {list-style:none;}
* {margin:0;padding:0;border:0px;}
html {height:100%;}
.agrupa_programacao {float:left;display:inline;width:970px;margin-top:30px;}
.divisao_programacao {float:left;display:inline;width:230px;margin-right:10px;}
.lista_programacao,.lista_programacao2 {float:left;display:inline;width:228px;margin-top:5px;background:#fff;border:1px solid #bbb;}
.lista_programacao2 {margin-top:0px;border-top:0px}
.tit_programacao, .tit_programacao2, .tit_programacao3 {float:left;display:inline;width:198px;height:20px;background:#acbcc0 url(../img/seta.jpg) no-repeat 9px 16px;padding:12px 0 12px 30px;text-align:left;font:14px Verdana, Arial, Helvetica, sans-serif;font-weight:bold;color:#fff;border-bottom:1px solid #fff;}
.tit_programacao2 {color:#133c8b;background:#f4f1f1;}
.tit_programacao3 {background:#d9eff3 url(../img/seta2.gif) no-repeat 9px 7px;padding:5px 0 5px 30px;color:#133c8b;font:bold 12px Verdana, Arial, Helvetica, sans-serif;}
h3.tit_programacao3{border-left:1px solid #BBBBBB;border-right:1px  solid #BBBBBB;cursor:pointer;}
.txt_programacao, .txt_programacao2, .txt_programacao3 {float:left;display:inline;width:198px;padding:10px 15px 10px 15px;background:#f4f1f1;font:11px Verdana, Arial, Helvetica, sans-serif;color:#5e5e5e;border-bottom:1px solid #fff;}
.txt_programacao2 {background:#d7d7d7;}
.txt_programacao3 {background:#fff;}
</style>
</head>
<body>
<div>
<h3 id="frutas">Frutas</h3>
<ul id="frutas_lista">
<li id="1">Abacaxi</li>
<li id="2">Pera</li>
<li id="3">Maça</li>
</ul>
<h3 id="verduras">Legumes</h3>
<ul id="verduras_lista">
<li id="1">Alface</li>
<li id="2">Couve</li>
<li id="3">Cenoura</li>
</ul>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function(){ // Inicio o script apenas quando toda a pagina estiver carregada.
// Atribuo a função onclick em todos os elementos com a classe informada
$(".tit_programacao3").click(function () {
//Pego o ID do elemento.
var id = $(this).attr('id');
// Como defini os ids para o titulo e lista, apenas faço uma
// concatenação para identificar a lista para receber a ação.
if ($("#" + id + "_lista").is(":hidden")) {
$("#" + id + "_lista").slideDown("normal");
} else {
$("#" + id + "_lista").slideUp("normal");
}
});
});
</script>
</body>
</html>

Asso­ci­ando a classe com id é pos­sí­vel redu­zir a quan­ti­dade de código faci­li­tando a manu­ten­ção e agi­li­zando o desenvolvimento.

Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apre­sen­ta­dos.
É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , ,

Exemplo Básico de AJAX com JQUERY.

HTML, JQuery, Javascript 4 Comments » Marcelo Korjenioski

Hoje estava con­ver­sando com um amigo que come­çou a estu­dar AJAX
para fazer uma entre­vista de emprego para pro­gra­ma­dor Jr e que pediam conhe­ci­men­tos bási­cos de PHP, AJAX e JQuery.

Per­gun­tei para ele o que você entende por AJAX?
“É um bagu­lho que pega infor­ma­ções do lado ser­vi­dor sem
pre­ci­sar recar­re­gar a página.”

A res­posta esta certa e o con­ceito é este.

Então hoje resolvi criar um post sobre o que é o tal de AJA­Xem um
exem­plo pra­tico e sim­ples de enten­der que mos­trei para meu amigo.

Vamos usar o JQuery para fazer a cone­xão AJAX.
No exem­plo vamos pegar o con­teúdo de uma pagina “texto.html” e adi­ci­o­nar
o con­teúdo na página “index.html” em uma tag span.

Vamos criar uma página index.html com o código abaixo.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EXEMPLO BASICO DO USO DO AJAX COM JQUERY</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<input type="button" onclick="ajax();" value="Pegar texto" name="Pegar texto" />
<br />
<span id="conteudo_ajax"></span>
</body>
</html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function ajax () {
// Caso queira limpar o valor do elemento antes de adicionar remova o comentario abaixo.
//$("#conteudo_ajax").empty();
jQuery.ajax({
type: "get", // Defino o método de envio POST / GET
url: 'texto.html', // Informo a URL que será pesquisada.
success: function(html){
$("#conteudo_ajax").append(html); // Adiciono o valor dentro do elemento.
}
});
}
</script>

Agora crie uma página  texto.html com o texto para pesquisa


Texto que foi pego usando AJAX.

O código é sim­ples mas já dá uma idéia de como fun­ci­ona o AJAX para quem esta come­çando a estudar.

Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apre­sen­ta­dos.
É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , ,

Alterar idioma do NetBeans para Inglês.

Ferramentas 2 Comments » Marcelo Korjenioski

Sem­pre quando vou bai­xar o Net­be­ans ele detecta o idi­oma do meu Win­dows e coloca em por­tu­guês mas bai­xando a ver­são em inglês.
Para alte­rar o idi­oma do Net­be­ans para inglês.
Vá em “C:\Arquivos de programas\NetBeans 6.8 Beta\etc”.
Abra o arquivo “netbeans.conf” com um edi­tor de texto.
Na linha de comando netbeans_default_options adi­ci­one
”-J-Duser.language=en –J-Duser.region=US”.
Salve o arquivo e abra o Net­be­ans que agora estará em inglês para faci­li­tar sua vida.

Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apre­sen­ta­dos.
É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , ,

Como efetuar a instalação do LiveZilla usando MySQL.

Ferramentas, MySQL, PHP 5 Comments » Marcelo Korjenioski

Assim como hoje não é mais neces­sá­rio você desen­vol­ver um Blog por causa do Word­press acre­dito que criar um Chat de suporte para seu site tam­bém esta dei­xando de ser gra­ças ao LiveZilla.

Neste tuto­rial vou mos­trar como ins­ta­lar o Live­Zilla usando MySQL, PHP e WinXP.
O pro­cesso é rápido é vai dei­xar seu chefe e cli­ente con­ten­tes.
O pri­meiro passo é bai­xar o Live­Zilla aqui (http://livehelp.livezilla.net/downloads/en/).
Tenha o  MySql e PHP ins­ta­lado reco­mendo usar o Wamp para efe­tuar o teste (http://www.wampserver.com/en/).

Para ins­ta­lar não tem segredo é next, next finish.
Depois de ins­ta­lar ele vai criar dois ata­lhos na área de tra­ba­lho o Live­Zilla Cli­ent e o Live­Zilla Ser­ver Admin.

Vamos abrir o Live­Zilla Ser­ver Admin para con­fi­gu­rar nosso Chat.
Sele­ci­one “Cre­ate new Live­Zilla Ser­ver” e cli­que no botão Next.

LiveZilla Server Admin

Vai sur­gir uma tela para você criar uma conta Admin no sis­tema.
Pre­en­cha os cam­pos como no exem­plo e cli­que no botão Next.

criar_admin

Na pró­xima tela mos­tra um for­mu­lá­rio para criar o pri­meiro grupo de suporte para o Chat. Depois é pos­sí­vel criar mais gru­pos de suporte.
Pre­en­cha os cam­pos como no exem­plo e cli­que no botão Next.

criar_grupo_suporte

Agora che­gou a hora de gerar os arquivo PHP do Chat.
Você tem a opção de enviar via FTP ou extrair local­mente.
Eu no exem­plo uso o Wamp então enviei direto para meu dir www/livezilla.
Esco­lha sua opção e cli­que em Next.

exportar_arquivos_chat

Apos enviar o arquivo surge a tela para tes­tar a ins­ta­la­ção do Live­Zilla.
Basta infor­mar o nome da cone­xão com o ser­ver e sua URL.
Cli­que no botão Ser­ver Test se esti­ver ok

testar_chat

Agora cli­que no botão test e digite o nome de usuá­rio e senha que foi cri­ado para o Admin e cli­que no botão Ok para ini­ciar o teste.

server_test

Se o teste ocor­reu com sucesso cli­que no botão Ser­ver­page e você verá esta pagina.

pagina_livezilla

Feche a janela de Test e cli­que em Next para con­fi­gu­rar o MySQL.

Pre­en­cha os cam­pos como no exem­plo e cli­que no botão Cre­ate Tables.
Caso tenha algum ao criar as tabe­las cli­que no link Show SQL Dump e exe­cute direto no seu BD.

data_management

Se a cone­xão esti­ver cor­reta cli­que em Next e para fina­li­zar a configuração.

wizard_completd

Agora vamos cli­car no ata­lho Live­Zilla Cli­ent para ini­ciar o aten­di­mento do Chat.
Entre com o nome de usuá­rio e senha cri­a­dos para o Admin e seu Chat já esta funcionando.

client_login

Abra o nave­ga­dor e digite a URL do ser Live­Zilla no meu caso http://localhost/livezilla/
Cli­que no link Start Demo Chat.
Pre­en­cha os cam­pos como no exem­plo e cli­que em ini­ciar Chat.

usario_login_chat

Agora no Live­Zilla Cli­ent vai sur­gir uma soli­ci­ta­ção para ini­ciar o Chat.
Cli­que em Accept Request e iniciar.

usario_login_chat_request

A ins­ta­la­ção esta feita agora basta explo­rar o Live­Zilla pois exis­tem mui­tas opções para faci­li­tar o tra­ba­lho do pes­soal do suporte.

Em um post futuro irei comen­tar estas fun­ções.
Caso tenha alguma duvida ou suges­tão deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apre­sen­ta­dos.
É isso pes­soal uma ótimo final de semana e até o pró­ximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , ,

Sistema para rastrear entregas nos Correios.

PHP 2 Comments » Marcelo Korjenioski

Olá pes­soal depois de um tempo sem pos­tar sur­giu uma neces­si­dade de ras­trear minhas enco­men­das nos  Correios.

Como não gosto de ficar aper­tando F5 no site dos Cor­reios que vive com pro­ble­mas resolvi fazer a con­sulta via Ajax. O codigo é sim­ples e apro­vei­tei a ideia do sis­tema para cal­cu­lar frete.

Segue exem­plo fun­ci­o­nando.

</p>
<?php
if($_POST) {
header("Content-Type: text/html; charset=ISO-8859-1");
$p_cod_lis = $_POST['P_COD_LIS'];
if($p_cod_lis == '') {
echo '<center>Código não informado</center>';
}
$url = "http://websro.correios.com.br/sro_bin/txect01$.Inexistente?P_LINGUA=001&P_TIPO=002&P_COD_LIS=$p_cod_lis";

$conecurl = @fopen("$url","r") or die ('<center>erro na conexão</center>');
while(!feof($conecurl)) {
$lin .= fgets($conecurl,4096);
}
fclose($conecurl);

$lin = strtolower($lin);

$rest = substr($lin,0);
$nprimetable = strpos($rest,'<table ');
$fechatable = strpos($rest,'<hr ');
$quantopula = $fechatable - $nprimetable ;
$conteudo = substr($lin, $nprimetable ,$quantopula);

function get_anchor($html)
{
$er = "/<td.*?>.*?<\/td>/";
preg_match_all($er,$html,$links);
$link = $links[0];
return $link;
}

function get_label($url)
{
$label = str_replace("</td>","",preg_replace("/^<td.*?>/","",$url));
return $label;
}

echo $conteudo;

} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="http://demo.phaneronsoft.com/img/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<title>Sistema para rastrear entregas no correio. | Phaneronsoft</title>
<style type="text/css">
* {
font-family:"Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:12px;
font-style:normal;
font-variant:normal;
font-weight:normal;
line-height:normal;
}

body {
background:#FFFFFF none repeat scroll 0 0;
height:100%;
margin:0;
margin-top:20px;
width:100%;
}

div#wrapper {
margin:auto;
position:relative;
width:390px;
z-index:0;
}

.select {
text-transform:uppercase;
width:99%;
border:1px solid #B6B6B6;
display:block;
}

.formSearch fieldset {
border:1px solid #CCCCCC;
margin:0;
padding:0 10px;
}

label {
display:block;
/*float:left;*/
margin-right:4px;
padding-bottom:5px !important;
}

legend {
color:#1E398D;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
padding:10px 5px;
}

.button {
background:#F5EED3;
border:1px solid #CCCCCC;
color:#666666;
cursor:pointer;
font-size:12px;
font-weight:bold;
letter-spacing:1px;
margin:10px 0 0;
overflow:visible;
text-transform:uppercase;
width:150px;
}

.formMain .inline {
margin:15px 0 0 !important;
}

.text,  .select,  .textarea, .password {
border:1px solid #B6B6B6;
display:block;
text-transform:uppercase;
}

fieldset span.nameField {
color:#666666;
text-transform:uppercase;
}

h3 {
border-bottom:1px solid #F58220;
margin:0;
padding:0;
}

h3 span {
-x-system-font:none;
color:#1E398D;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
}

#value {
-x-system-font:none;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
text-transform:capitalize;
}

#value table {
margin:0;
padding:0;
border:0;
}

#rastrear {
padding-top:30px;
}

#loading {
display:none;
color:#9B0000;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
text-transform:capitalize;
}

</style>
</head>
<body>

<div id="wrapper">
<h3>
<span>Rastrear pedido</span>
</h3>

<form method="post" action="" name="rastreamentohome" onsubmit="submitForm(this); return false;">
<fieldset>
<legend>Identificador do objeto:</legend>
<label for="P_COD_LIS">
<textarea cols="48" id="P_COD_LIS" rows="3" name="P_COD_LIS"></textarea>
</label>
<label for="pesquisar">
<input type="submit" id="pesquisar" name="pesquisar" value="pesquisar" tabindex="3" />
</label>
</fieldset>
</form>

<span id="value"></span>
<span id='loading'>Pesquisando...</span>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
function submitForm(form) {
/*
usa metodo request() da classe Form da prototype, que serializa os campos
do formulario e submete (por POST como default) para a action especificada no form
*/
function mostrarLoading(){
$('loading').style.display = 'block';
$('value').innerHTML = ' ';
}

form.request({
onLoading:mostrarLoading,
onComplete: function(transport){
/*
se o retorno for diferente de -1, entende-se que nao houve problemas, entao apaga-se
os campos do formulario usando o metodo reset() da classe Form
*/
if(transport.responseText !=-1)  {
$('loading').style.display = 'none';
$('value').innerHTML = transport.responseText;
} else {
form.reset();
$('loading').style.display = 'none';
$('value').innerHTML = 'Erro ao consultar';
}
}

});
return false;
}
</script>
</body>
</html>
<?php } ?>

Caso tenha alguma duvida ou suges­tão deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , ,

Criar função no PostgreSQL GROUP_CONCAT equivalente ao GROUP_CONCAT MySQL

MySQL, PostgreSQL 1 Comment » Marcelo Korjenioski

Hoje estava pre­ci­sando con­ca­te­nar dados de um campo e des­co­bri que no Post­greSQL não existe uma fun­ção equi­va­lente ao group_concat do MySQL.

Exem­plo do MySQL

select GROUP_CONCAT(nome ORDER BY nome DESC SEPARATOR ',') as nomes from usuarios

Então pro­cu­rando na web encon­trei esta função.

MS SQL to Post­gre SQL


create aggregate array_accum (
sfunc = array_append,
basetype = anyelement,
stype = anyarray,
initcond = '{}'
);

CREATE OR REPLACE FUNCTION _group_concat(text, text)
RETURNS text AS $$
SELECT CASE
WHEN $2 IS NULL THEN $1
WHEN $1 IS NULL THEN $2
ELSE $1 operator(pg_catalog.||) ',' operator(pg_catalog.||) $2
END
$$ IMMUTABLE LANGUAGE SQL;

CREATE AGGREGATE group_concat (
BASETYPE = text,
SFUNC = _group_concat,
STYPE = text
);

Para exe­cu­tar a fun­ção basta usar.

select group_concat(distinct nome) as nomes from usuarios

Caso tenha alguma duvida ou suges­tão deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn

Função para Converter de CSV para Array no PHP

CSV, PHP No Comments » Marcelo Korjenioski

Olá pes­soal este semana esta com difi­cul­da­des para impor­tar um arquivo CSV pegando o nome das colu­nas ou setando elas em um array para adap­tar o nome das colu­nas com o mesmo nome dos meus fields no BD então com um pouco de pes­quisa e paci­ên­cia criei esta função.

O uso é sim­ples basta indi­car o cami­nho do arquivo e o tipo de sepa­ra­dor que o CSV usa. O padrão é vír­gula porem no Office usa ponto e vírgula.

Crie um arquivo com o nome produtos.csv e insira o código abaixo.


codigo;nome;preco;quantidade
1;lapis;1.20;2
2;borracha;0.50;10
3;caneta;1.50;20

Agora crie um arquivo converte.php e insira o código.


<?php
$caminho = "produtos.csv";

$campos = array('codigo','nome','preco','quantidade</code></span></span>');

$cvs_array = CVStoArray($caminho,$campos);
echo '<pre>';
var_dump($cvs_array);

function CVStoArray($arquivo,Array $campos=null,$separador=';') {
$ponteiro = fopen($arquivo, "r"); // Abro o arquivo para somente leitura
$colunas_nome = fgetcsv($ponteiro, 1000, $separador); // Pego a primeira linha onde tem os nomes dos campos
$numero_colunas = count($colunas_nome);// Vejo quantas colunas o CSV tem para comparar com os $campos.

if(count($campos) != $numero_colunas)
$campos = $colunas_nome;

// executo um looping até pegar todos os registros.

while($valor = fgetcsv($ponteiro, 1000, $separador)) {
$valores[] = $valor;
}
fclose($ponteiro); // fecho a conexão.
$x = 0;
$y = 0;

// Aqui eu pego as colunas e linhas e vou adicionando os valores no $array.

foreach($valores as $i) {
foreach($campos as $z) { // looping para pegar as colunas de acordo com o nome dos campos informados.
$array[$x][$z] = $i[$y];
$y++; // incremento o valor para ir para a próxima coluna.
}
$y = 0; // zero o ponteiro das colunas para ir para a próxima linha.
$x++; // incremento o valor da linha para o próximo registro
}
return $array;
}

?>

Caso tenha alguma duvida ou suges­tão deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn

Adicionar um novo item no inicio do Array com chave nula.

HTML, PHP No Comments » Marcelo Korjenioski

Hoje estou apre­sen­tando nova­mente uma solu­ção para quando for popu­lar
um select den­tro de um for­mu­lá­rio usando um array de dados no esquema
valor => nome.

Vamos ao pro­blema e a solução.

Diga­mos que eu que­ria vali­dar este select para ver se foi mar­cado algo e eu não
posso alte­rar o HTML ou DB onde pego este array.
Se não tiver um valor nulo no select ele ira pegar o pri­meiro item do array no
caso o Admin.

$array_atual = array('1' => 'Admin','2'=>'Usuário');

Se usar a fun­ção array_unshift(); posso adi­ci­o­nar
no iní­cio do array um novo item porem ele terá uma chave int e eu quero um nula.

$array_atual = array('1' => 'Admin','2'=>'Usuário');
array_unshift($array_atual, 'Selecione');

Então a solu­ção para adi­ci­o­nar uma chave nula é usar

$array_atual = array('1'=>'Admin','2'=>'Usuário');
$array_atual = array(''=>'Selecione') + $array_atual;

Exis­tem varias manei­ras de resol­ver este pro­blema mas esta foi a mais sim­ples que encon­trei.
Caso tenha alguma duvida ou suges­tão deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

É isso pes­soal uma ótima semana e até o pró­ximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Designed by NattyWP Wordpress Themes.
Images by desEXign.