| |
Feb 08
Desde semana passada o antigo webservice dos correios parou de funcionar com PAC.
Foi feita a correção do código e agora o PAC esta funcionando novamente.
Sistema para Calcular Frete 1.1
Documentação para utilizar o webservice dos Correios para efetuar o calculo de forma personalizada.
SCPP_Manual_Implementacao_Calculo_Remoto_de_Precos_e_Prazos
Abaixo segue o código para manipular os dados do webservice usando o PHP.
Segue o exemplo 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&nCdServico=" . CODIGO_SERVICO . "&nVlPeso=" . PESO . "&sCepOrigem=" . CEP_ORIGEM . "&sCepDestino=" . CEP_DESTINO . "&nCdFormato=1&nVlComprimento=" . COMPRIMENTO . "&nVlAltura=" . ALTURA . "&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&nCdServico=" . CODIGO_SERVICO . "&nVlPeso=" . PESO . "&sCepOrigem=" . CEP_ORIGEM . "&sCepDestino=" . CEP_DESTINO . "&nCdFormato=1&nVlComprimento=" . COMPRIMENTO . "&nVlAltura=" . ALTURA . "&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 comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
Compartilhe com seus amigos:
Tags: CEP, correios, Frete, manual, PAC, Sedex, webservice
Nov 25
— — — — — — — — — —
#!/bin/bash
echo “Fala ae Mundo!”
— — — — — — — — — —
Está ai o seu primeiro Shell Script, vou explicar de forma mais detalhada:
Abra seu terminal de comando e nele vamos navegar até a pasta /tmp (caso não tenha a pasta tmp, você pode criar ela no diretório /home, usando o comando mkdir tmp
Agora que estamos na pasta /home/tmp, vamos criar um arquivo chamado: 1shell.sh, para criar um arquivo vazio basta usar o comando touch “nomedoarquivoeextensão” (sem as aspas).
Utilize o comando ls para exibir os arquivos que estão na pasta /home/tmp para certificar-se que seu 1shell.sh foi criado corretamente.
Vamos para a edição deste novo shellscript, mas antes uma pequena comparação para facilitar a vida de todos, o que é um shellscript se não um .bat do linux , ok voltando a edição: abra seu arquivo shell com o editor de texto vi, para isso digite: vi 1shell.sh.
Dentro do editor 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 shellscript. Depois de digitar o texto, precione ESC para parar de incluir e digite :wq, esse ultimo comando é salvar e sair. Certo antes de executar seu shell você deve dar as permissões necessarias para ele rodar como um executavel.
Para isso você deve usar o comando chmod +x “nomedoarquivo”. Fazendo isso você vai alterar a permissão dele para que possa ser executavel.
Agora vamos ao teste digite: ./1shell.sh e veja o resultado 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
reading 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 explicar mais comandos e com eles você podera incrementar seu shell, e até mesmo programar nele!
Abraços e até a proxima.
Compartilhe com seus amigos:
Tags: linux, script, shell
Nov 20
Descobrir ID de elemento através de uma Class usando JQuery é o tema de hoje.
Eu não sou o tipo do programador que fica se preocupando com a quantidade de linhas por arquivo.
Gosto mesmo é de criar um código simples e de fácil manutenção. Esta semana estava querendo colocar
um efeito “slide” em algumas listas porem não queria criar uma função para cada lista. Então resolvi
criar uma classe comum para elas e atribuir IDs para os botões e para as listas. Desta maneira foi simples
resolver meu problema pois posso identificar os IDs dos elementos através da classe.
Segue o código abaixo para explicar melhor a situação.
Segue o exemplo 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>
Associando a classe com id é possível reduzir a quantidade de código facilitando a manutenção e agilizando o desenvolvimento.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
Tags: Descobrir, JQuery, Listas
Oct 28
Hoje estava conversando com um amigo que começou a estudar AJAX
para fazer uma entrevista de emprego para programador Jr e que pediam conhecimentos básicos de PHP, AJAX e JQuery.
Perguntei para ele o que você entende por AJAX?
“É um bagulho que pega informações do lado servidor sem
precisar recarregar a página.”
A resposta esta certa e o conceito é este.
Então hoje resolvi criar um post sobre o que é o tal de AJAXem um
exemplo pratico e simples de entender que mostrei para meu amigo.
Vamos usar o JQuery para fazer a conexão AJAX.
No exemplo vamos pegar o conteúdo de uma pagina “texto.html” e adicionar
o conteú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 é simples mas já dá uma idéia de como funciona o AJAX para quem esta começando a estudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
Tags: ajax, iniciante, JQuery
Oct 26
Sempre quando vou baixar o Netbeans ele detecta o idioma do meu Windows e coloca em português mas baixando a versão em inglês.
Para alterar o idioma do Netbeans para inglês.
Vá em “C:\Arquivos de programas\NetBeans 6.8 Beta\etc”.
Abra o arquivo “netbeans.conf” com um editor de texto.
Na linha de comando netbeans_default_options adicione
”-J-Duser.language=en –J-Duser.region=US”.
Salve o arquivo e abra o Netbeans que agora estará em inglês para facilitar sua vida.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
Tags: IDE, Idioma, NetBeans
Oct 16
Assim como hoje não é mais necessário você desenvolver um Blog por causa do Wordpress acredito que criar um Chat de suporte para seu site também esta deixando de ser graças ao LiveZilla.
Neste tutorial vou mostrar como instalar o LiveZilla usando MySQL, PHP e WinXP.
O processo é rápido é vai deixar seu chefe e cliente contentes.
O primeiro passo é baixar o LiveZilla aqui (http://livehelp.livezilla.net/downloads/en/).
Tenha o MySql e PHP instalado recomendo usar o Wamp para efetuar o teste (http://www.wampserver.com/en/).
Para instalar não tem segredo é next, next finish.
Depois de instalar ele vai criar dois atalhos na área de trabalho o LiveZilla Client e o LiveZilla Server Admin.
Vamos abrir o LiveZilla Server Admin para configurar nosso Chat.
Selecione “Create new LiveZilla Server” e clique no botão Next.

Vai surgir uma tela para você criar uma conta Admin no sistema.
Preencha os campos como no exemplo e clique no botão Next.

Na próxima tela mostra um formulário para criar o primeiro grupo de suporte para o Chat. Depois é possível criar mais grupos de suporte.
Preencha os campos como no exemplo e clique no botão Next.

Agora chegou a hora de gerar os arquivo PHP do Chat.
Você tem a opção de enviar via FTP ou extrair localmente.
Eu no exemplo uso o Wamp então enviei direto para meu dir www/livezilla.
Escolha sua opção e clique em Next.

Apos enviar o arquivo surge a tela para testar a instalação do LiveZilla.
Basta informar o nome da conexão com o server e sua URL.
Clique no botão Server Test se estiver ok

Agora clique no botão test e digite o nome de usuário e senha que foi criado para o Admin e clique no botão Ok para iniciar o teste.

Se o teste ocorreu com sucesso clique no botão Serverpage e você verá esta pagina.

Feche a janela de Test e clique em Next para configurar o MySQL.
Preencha os campos como no exemplo e clique no botão Create Tables.
Caso tenha algum ao criar as tabelas clique no link Show SQL Dump e execute direto no seu BD.

Se a conexão estiver correta clique em Next e para finalizar a configuração.

Agora vamos clicar no atalho LiveZilla Client para iniciar o atendimento do Chat.
Entre com o nome de usuário e senha criados para o Admin e seu Chat já esta funcionando.

Abra o navegador e digite a URL do ser LiveZilla no meu caso http://localhost/livezilla/
Clique no link Start Demo Chat.
Preencha os campos como no exemplo e clique em iniciar Chat.

Agora no LiveZilla Client vai surgir uma solicitação para iniciar o Chat.
Clique em Accept Request e iniciar.

A instalação esta feita agora basta explorar o LiveZilla pois existem muitas opções para facilitar o trabalho do pessoal do suporte.
Em um post futuro irei comentar estas funções.
Caso tenha alguma duvida ou sugestão deixe um comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótimo final de semana e até o próximo post.
Compartilhe com seus amigos:
Tags: Chat, LiveZilla, Suporte
Oct 14
Olá pessoal depois de um tempo sem postar surgiu uma necessidade de rastrear minhas encomendas nos Correios.
Como não gosto de ficar apertando F5 no site dos Correios que vive com problemas resolvi fazer a consulta via Ajax. O codigo é simples e aproveitei a ideia do sistema para calcular frete.
Segue exemplo funcionando.
</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 sugestão deixe um comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
Tags: correios, entregas, rastrear
Sep 17
Hoje estava precisando concatenar dados de um campo e descobri que no PostgreSQL não existe uma função equivalente ao group_concat do MySQL.
Exemplo do MySQL
select GROUP_CONCAT(nome ORDER BY nome DESC SEPARATOR ',') as nomes from usuarios
Então procurando na web encontrei esta função.
MS SQL to Postgre 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 executar a função basta usar.
select group_concat(distinct nome) as nomes from usuarios
Caso tenha alguma duvida ou sugestão deixe um comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
Sep 10
Olá pessoal este semana esta com dificuldades para importar um arquivo CSV pegando o nome das colunas ou setando elas em um array para adaptar o nome das colunas com o mesmo nome dos meus fields no BD então com um pouco de pesquisa e paciência criei esta função.
O uso é simples basta indicar o caminho do arquivo e o tipo de separador que o CSV usa. O padrão é vírgula 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 sugestão deixe um comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
Sep 01
Hoje estou apresentando novamente uma solução para quando for popular
um select dentro de um formulário usando um array de dados no esquema
valor => nome.
Vamos ao problema e a solução.
Digamos que eu queria validar este select para ver se foi marcado algo e eu não
posso alterar o HTML ou DB onde pego este array.
Se não tiver um valor nulo no select ele ira pegar o primeiro item do array no
caso o Admin.
$array_atual = array('1' => 'Admin','2'=>'Usuário');
Se usar a função array_unshift(); posso adicionar
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 adicionar uma chave nula é usar
$array_atual = array('1'=>'Admin','2'=>'Usuário');
$array_atual = array(''=>'Selecione') + $array_atual;
Existem varias maneiras de resolver este problema mas esta foi a mais simples que encontrei.
Caso tenha alguma duvida ou sugestão deixe um comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.
Compartilhe com seus amigos:
|
|
Comentários Recentes