| |
May 30
O TESTE 1 e TESTE 3 me mostram o resultado do tipo inteiro já o segundo teste usando |count serve para dar display do resultado como uma string. Para o TESTE 2 funcionar como a saída é uma string se o resultado for
zero o |count vai mostra (array). Usando um |@count ele mostra zero (0).
Para funcionar a situação use @count != ‘0’ para resultado maior que zero e @count == ‘0’ para igual a zero.
<?php
#array cheio
$_SESSION['unidades'] = array('1','2','3','4');
#array vazio
//$_SESSION['unidades'] = array();
?>
TESTE : {if !empty($smarty.session.unidades)}
empty cheio 1 ({$smarty.session.unidades|@count })
{elseif empty($smarty.session.unidades)}
empty vazio 2 ({$smarty.session.unidades|@count })
{/if}
<br />
TESTE 2 : {if $smarty.session.unidades|@count != '0' }
|count cheio 1 ({$smarty.session.unidades|@count})
{elseif $smarty.session.unidades|@count == '0' }
|count vazio 2 ({$smarty.session.unidades|@count})
{/if}
<br />
TESTE 3 : {if count($smarty.session.unidades) > 0 }
count cheio 1 ({$smarty.session.unidades|@count})
{elseif count($smarty.session.unidades) <= 0 }
count vazio 2 ({$smarty.session.unidades|@count})
{/if}
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.
May 28
Estava precisando calcular o envio de SEDEX para vender alguns produtos no mercado livre e fui procurar no Google se alguem já tinha criado algo para simplificar o calculo para agilizar para o usuário.
Entrei um código no fórum http://forum.prestashopbr.com e fiz alguma alterações para se encaixar no que eu precisava. Estou compartilhando o código.
Exemplo funcionando.
<?php
if($_POST) {
function frete($cod_servico,$cep_origem,$cep_destino,$peso,$comprimento=0,$altura=0,$largura=0) {
$cep_destino = eregi_replace("([^0-9])","",$cep_destino);
$cep_origem = eregi_replace("([^0-9])","",$cep_origem);
// Crio um objeto para manipular o XML.
$doc = new DomDocument;
// Carrega o arquivo XML com um arquivo DOMDocument
$doc->Load("http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico=" . $cod_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;
if($root->item($i)->getElementsByTagName('Erro')->item(0)->nodeValue > 0) {
echo $root->item($i)->getElementsByTagName('MsgErro')->item(0)->nodeValue;
die;
}
// Busca por elementos filhos (child) definidos no array
foreach ($children as $child) {
$valor[$id][$child] = $root->item($i)->getElementsByTagName($child)->item(0)->nodeValue;
}
}
return $valor;
}
// Código do Serviço que deseja calcular, veja tabela acima:
if ($_POST['cep-destino']) {
//$cod_servico = $_POST['servico'];
$cep_origem = '81010210';// CEP de Origem, em geral o CEP da Loja
$cep_destino = $_REQUEST['cep-destino'];// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário
$peso = '0.300';// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
// COMPRIMENTO: comprimento do volume em centímetros - somente número de 16 a 60
$comprimento = 30;
// ALTURA: altura do volume em centímetros - somente número de 2 a 60
$altura = 15;
// LARGURA: largura do volume em centimetros - somente número de 5 a 60
$largura = 20;
$fretes = frete('41106,40010',$cep_origem,$cep_destino,$peso,$comprimento,$altura,$largura);
foreach ($fretes as $servico => $campos ) {
$valor = str_replace(",", ".", $campos['Valor']);
$valor = $valor + 4.00;
$valor = number_format($valor,2, ',', '');
if($servico == '41106') {
echo " Valor PAC " . $valor . " prazo de entrega {$campos['PrazoEntrega']} dia(s).<br/>";
} elseif ($servico == '40010') {
echo " Valor SEDEX " . $valor . " prazo de entrega {$campos['PrazoEntrega']} dia(s).<br/>";
}
}
}
} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="<a href="http://demo.phaneronsoft.com/img/favicon.ico">http://demo.phaneronsoft.com/img/favicon.ico</a>" rel="shortcut icon" type="image/x-icon" />
<title>Sistema para Calcular Frete SEDEX e PAC a partir de CEP informado. | Phaneronsoft</title>
<script src="<a href="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js">http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js</a>" type="text/javascript"></script>
<script type="text/javascript">
function submitForm() {
/*
usa método request() da classe Form da prototype, que serializa os campos
do formulário e submete (por POST como default) para a action especificada no form
*/
function mostrarLoading(){
$('loading').style.display = 'block';
$('value').innerHTML = ' ';
}
$('form-pesquisa-repasse').request({
onLoading:mostrarLoading,
onComplete: function(transport){
/*
se o retorno for diferente de -1, entende-se que não houve problemas, então apaga-se
os campos do formulário usando o método reset() da classe Form
*/
if(transport.responseText !=-1) {
$('loading').style.display = 'none';
$('value').innerHTML = transport.responseText;
} else {
$('form-pesquisa-repasse').reset();
$('loading').style.display = 'none';
$('value').innerHTML = 'Erro ao consultar';
}
}
});
return false;
}
</script>
<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:450px;
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;
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;
}
#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>
<center>
</center>
<div id="wrapper">
<h3>
<span>Pesquisa valor de frete</span>
</h3>
<form id="form-pesquisa-repasse" action="" method="post" onsubmit="submitForm(); return false;" class="formMain formSearch wsizep100">
<fieldset>
<legend>Filtrar Referência</legend>
<label class="wsize010" for="cep-destino">
<span class="nameField">CEP Destino</span>
<input id="cep-destino" class="text" type="text" value="" maxlength="9" title="CPF destino" name="cep-destino" tabindex="2"/>
</label>
<label for="pesquisar" class="wsize010">
<input type="button" onclick="submitForm(); return false;" value="pesquisar" class="button inline"/>
</label>
</fieldset>
</form>
<span>* Digitar somente número no CEP</span>
<br />
<span id="value"></span>
<span id='loading'>Pesquisando...</span>
</div>
</body>
</html>
<?php
} // fim else
?>
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.
<?php
//script original pego em http://forum.prestashopbr.com/viewtopic.php?f=9&t=322&start=30
#####################################
# Código dos Serviços dos Correios #
# FRETE PAC = 41106 #
# FRETE SEDEX = 40010 #
# FRETE SEDEX 10 = 40215 #
# FRETE SEDEX HOJE = 40290 #
# FRETE E-SEDEX = 81019 #
# FRETE MALOTE = 44105 #
# FRETE NORMAL = 41017 #
# SEDEX A COBRAR = 40045 #
#####################################
if($_POST) {
// Código do Serviço que deseja calcular, veja tabela acima:
if ($_POST['servico']) {
$cod_servico = $_POST['servico'];
}
// CEP de Origem, em geral o CEP da Loja
$cep_origem = '81010210';
// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário
$cep_destino = $_POST['cep-destino'];
$cep_destino = eregi_replace("([^0-9])","",$cep_destino);
// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
$peso = '0.300';
// URL de Consulta dos Correios
$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";
// Capta as informações da página dos Correios
$correios_info = file($correios);
// Processa as informações vindas do site dos correios em um Array
foreach($correios_info as $info){
// Busca a informação do Preço da Postagem
if(preg_match("/\<preco_postal>(.*)\<\/preco_postal>/",$info,$tarifa)){
$embalagem = 4.00; // Aqui você pode colocar o valor da embalagem para envio do produto
$total = $tarifa[1] + $embalagem;
}
}
// Neste exemplo estou colocando apenas PAC e SEDEX
switch ($cod_servico) {
case 41106:
$nome_servico = "Valor do frete via PAC ";
break;
case 40010:
$nome_servico = "Valor do frete via SEDEX ";
break;
}
// Caso venha valor de resposta é numerio e maior que o custo da embalagem senão ocorreu algum erro na solicitação.
if(is_numeric($total) && ($total > $embalagem)) {
// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89
// Caso você não queira formatar basta comentar a linha abaixo que será exibido assim 10.89 e basta executar o comando abaixo
$total = number_format($total,2,',','.');
echo $nome_servico . $total;
} else {
echo 'Erro ao consultar verifique se CEP esta correto';
}
} else {
?>
<html>
<head>
<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 método request() da classe Form da prototype, que serializa os campos
do formulário e submete (por POST como default) para a action especificada no form
*/
form.request({
onComplete: function(transport){
/*
se o retorno for diferente de -1, entende-se que não houve problemas, então apaga-se
os campos do formulário usando o método reset() da classe Form
*/
if(transport.responseText !=-1) {
$('value').innerHTML = transport.responseText;
} else {
form.reset();
$('value').innerHTML = 'Erro ao consultar';
}
}
});
return false;
}
</script>
<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:450px;
z-index:0;
}
.formMain .select {
text-transform:uppercase;
width:99%;
border:1px solid #B6B6B6;
display:block;
}
.formSearch fieldset {
border:1px solid #CCCCCC;
margin:0;
padding:0 10px;
}
.formMain label {
display:block;
float:left;
margin-right:4px;
padding-bottom:5px !important;
}
.formMain 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;
}
.formMain .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:100%;
}
.formMain .inline {
margin:15px 0 0 !important;
}
.formMain .text, .formMain .select, .formMain .textarea, .formMain .password {
border:1px solid #B6B6B6;
display:block;
text-transform:uppercase;
}
.formMain 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;
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;
}
</style>
</head>
<body>
<div id="wrapper">
<h3>
<span>Pesquisa valor de frete</span>
</h3>
<form id="form-pesquisa-repasse" action="" method="post" onsubmit="submitForm(this); return false;">
<fieldset>
<legend>Filtrar Referência</legend>
<label for="servico">
<span>Envio</span>
<select id="servico" name="servico" title="Serviços dos Correios" tabindex="1">
<option value="41106">PAC</option>
<option value="40010">SEDEX</option>
</select>
</label>
<label for="cep-destino">
<span>CEP Destino</span>
<input id="cep-destino" type="text" value="" maxlength="9" title="CPF destino" name="cep-destino" tabindex="2"/>
</label>
<label for="pesquisar">
<input type="submit" id="pesquisar" name="pesquisar" tabindex="3" value="Pesquisar" />
</label>
</fieldset>
</form>
<span>* Digitar somente número no CEP</span>
<br />
<span id="value"></span>
</div>
</body>
</html>
<?php
} // fim else
?>
May 28
Atendendo a solicitação de um visitante do blog criei este tutorial com os princípios básicos para converter um arquivo XML em CSV.
Crie um arquivo com o nome produtos.xml e insira o código abaixo.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<catalogo>
<produto id='p1'>
<nome>Caderno</nome>
<preco>2,00</preco>
<quantidade>100</quantidade>
</produto>
<produto id='p2'>
<nome>Caneta</nome>
<preco>1,00</preco>
<quantidade>200</quantidade>
</produto>
<produto id='p3'>
<nome>Lapis</nome>
<preco>0,50</preco>
<quantidade>50</quantidade>
</produto>
<produto id='p4'>
<nome>Livro Matematica</nome>
<preco>11,00</preco>
<quantidade>10</quantidade>
</produto>
<produto id='p5'>
<nome>Apontador</nome>
<preco>1,00</preco>
<quantidade>20</quantidade>
</produto>
</catalogo>
É necessário criar um diretório com o nome csv e dar permissão de leitura e escrita antes de executar o código.
Crie um arquivo com nome xml2csv.php e coloque o código abaixo.
<?php
$doc = new DomDocument;
// Carrega o arquivo XML com um arquivo DOMDocument
$doc->Load('produtos.xml');
// Defino o nome do elemento pai (root).
$root = $doc->getElementsByTagName('produto');
// Defino o nome dos elementos filhos no arquivo XML que eu desejo.
$children = array('nome','preco','quantidade');
$cvs = NULL;
// Crio o cabeçalho do arquivo CSV com o nome de todos os campos.
$cvs .= "codigo,nome,preco,quantidade";
// Quebra de linha do arquivo CSV.
$cvs .= "\n";
// Faço um loop para pegar todos os elementos pai (root) encontrados.
for ($i=0; $i < $root->length; $i++) {
// Pega o valor do atributo do elemento pai (root).
$id = $root->item($i)->getAttribute('id');
// Irei dar um escape em todos os valores usando aspas duplas.
$cvs .= '"' . $id . '",';
// Busca por elementos filhos (child) definidos no array
$valor = array();
foreach ($children as $child) {
$valor[] = '"' . $root->item($i)->getElementsByTagName($child)->item(0)->nodeValue . '"';
}
// Uso o implode para criar uma string com os valores separados por vírgula.
$cvs .= implode(',', $valor);
// Quebra de linha do arquivo CSV.
$cvs .="\n";
}
// getcwd() retorna o diretório atual.
$caminho = getcwd(). '/csv/';
$data = date('d_m_y_H_i_s');
$file_path = $caminho.$data.'_lista.csv';
// Verifique se vc tem permissão de leitura e escrita neste diretorio
if(fwrite($file=fopen($file_path,'w+'),$cvs)) {
fclose($file);
echo "Arquivo gravado com sucesso!";
} else {
echo "Erro ao abrir arquivo!";
}
?>
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.
May 26
Estrutura básica de um arquivo XML.
A primeira linha é o cabeçalho do arquivo XML.
Neste caso estou usando o encoding UTF-8.
Os documentos XML tem um estrutura em árvore.
Todos os arquivos XML sempre terão um elemento raiz (root element).
Este elemento é o pai dos outros elementos.
Os elementos a seguir são os filhos (child element).
Exemplo da estrutura básica de um arquivo XML.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child>
</child>
</root>
Dentro da tag dos elementos é possível definir atributos.
Neste exemplo o nome do atributo criado é o id do produto.
<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
<produto id='p1'>
<nome>Caderno</nome>
<preco>2,00</preco>
<quantidade>100</quantidade>
</produto>
<produto id='p2'>
<nome>Caneta</nome>
<preco>1,00</preco>
<quantidade>200</quantidade>
</produto>
<produto id='p3'>
<nome>Lapis</nome>
<preco>0,50</preco>
<quantidade>50</quantidade>
</produto>
</catalogo>
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.
May 23
No código a seguir segue um exemplo de como ler um arquivo XML e gravar os dados no banco de dados MySQLe gerar um log da query executada.
Neste exemplo costa apenas as funções de INSERT, DELETE, UPDATE e SELECT.
Para facilitar a vida eu já deixei no código as query para criar o banco e as tabelas utilizadas para executar o código. Eu deixei os valores default de conexão com o MySQL altere os dados da conexão caso esteja usando outra configuração.
A idéia de criar um log das querys executadas no sistema servem para detectar erros e também como um registro caso alguem valor tenha sito movimentado de forma errada.
<?php
// Fazendo a conexão com o servidor MySQL
//Caso queira apenas criar o arquivo XML mude valor para false.
$ativar_conexao = true;
if ($ativar_conexao == true) {
// mysql_pconnect("server", "login", "senha")
$conexao = mysql_pconnect("192.168.1.210","root","dj@jdl#.") or die('falha ao conectar');
// Verifica se o banco de dados existe antes de criar.
$query = 'CREATE DATABASE IF NOT EXISTS test';
if(!mysql_query($query,$conexao)) {
echo 'falha ao criar banco<br />';
}
mysql_select_db("test",$conexao) or die('falha ao selecionar db');
// Verifica se a tabela existe antes de criar.
$query = "CREATE TABLE IF NOT EXISTS tb_produtos (
pk_produtos int not null auto_increment primary key,
codigo varchar(255),
nome varchar(255),
preco decimal(12,2),
quantidade int(11))";
if(!mysql_query($query,$conexao)) {
echo 'falha ao criar tabela<br />';
}
}
// Fim comentario
$doc = new DomDocument;
// Carrega o arquivo XML com um arquivo DOMDocument
$doc->Load('produtos.xml');
$items = $doc->getElementsByTagName('produto');
// Defino o nome tags no arquivo XML que eu desejo.
$campos = array('nome','preco','quantidade');
$query = NULL;
$query .= "insert into tb_produtos (codigo,nome,preco,quantidade) values ";
for ($i=0; $i < $items->length; $i++) {
$value = NULL;
$value .= " (";
$codigo = $items->item($i)->getAttribute('id');
$value .= "'$codigo',";
echo $items->item($i)->getAttribute('id') , '<br />';
// Busca por elementos definidos no array
$valor = array();
foreach ($campos as $campo) {
$dado = "'" . $items->item($i)->getElementsByTagName($campo)->item(0)->nodeValue . "'";
// Verifico se o campo é preco pq no arquivo xml o preço esta com virgula e para inserir no banco é necessario ponto
if($campo == 'preco') {
// Faz a troca de virgula por ponto.
$dado = str_replace(',','.',$dado);
}
// pego o valor de cada tag e adiciono em um array para fazer o insert no banco.
$valor[] = $dado;
echo $items->item($i)->getElementsByTagName($campo)->item(0)->tagName , ': ';
echo $items->item($i)->getElementsByTagName($campo)->item(0)->nodeValue , '<br />';
}
// uso o implode para criar uma string com os valores separados por vírgula.
$value .= implode(',', $valor);
$value .= ') ';
// Adiciono os dados do valores do insert em array.
$values[] = $value;
echo '<hr>';
}
// uso o implode para criar uma string com os valores separados por vírgula.
$query .= implode(',', $values);
// mostra a query criada na tela.
echo $query;
if ($ativar_conexao == true) {
// GRAVA LOG do arquivo executado mesmo se query estiver errada.
if((stristr($query, 'DELETE') || stristr($query, 'UPDATE') || stristr($query, 'INSERT') || stristr($query, 'SELECT'))) {
// Verifica se a tabela existe antes de criar.
$query_log = "CREATE TABLE IF NOT EXISTS tb_log (
pk_log int not null auto_increment primary key,
tx_sql text,
acao ENUM('DELETE', 'UPDATE', 'INSERT','SELECT')
);";
if(!mysql_query($query_log,$conexao)) {
echo 'falha ao criar tabela<br />';
}
if(stristr($query, 'DELETE')) {
$acao = 1;
} elseif(stristr($query, 'UPDATE')) {
$acao = 2;
} elseif(stristr($query, 'INSERT')) {
$acao = 3;
} elseif(stristr($query, 'SELECT')) {
$acao = 4;
}
$query_log = "INSERT INTO tb_log (tx_sql,acao) VALUES
(\"$query\",$acao)";
if(!mysql_query($query_log,$conexao)) {
echo 'falha ao inserir dados de log<br />';
}
}
if(!mysql_query($query,$conexao)) {
echo 'falha ao inserir dados<br />';
}
}
Crie um arquivo produtos.xml em um editor de texto e coloque o código abaixo.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<catalogo>
<produto id='p1'>
<nome>Caderno</nome>
<preco>2,00</preco>
<quantidade>100</quantidade>
</produto>
<produto id='p2'>
<nome>Caneta</nome>
<preco>1,00</preco>
<quantidade>200</quantidade>
</produto>
<produto id='p3'>
<nome>Lapis</nome>
<preco>0,50</preco>
<quantidade>50</quantidade>
</produto>
<produto id='p4'>
<nome>Livro Matematica</nome>
<preco>11,00</preco>
<quantidade>10</quantidade>
</produto>
<produto id='p5'>
<nome>Apontador</nome>
<preco>1,00</preco>
<quantidade>20</quantidade>
</produto>
</catalogo>
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.
May 15
Cria as tabelas.
create table
tb_comentario (
pk_comentario int not null auto_increment primary key,
tx_comentario text
)
create table
tb_data_comentario (
pk_data_comentario int not null auto_increment primary key,
dt_comentario date
)
Faz o insert dos dados para teste.
insert into tb_comentario (tx_comentario)
values
('Tutorial de procura e migração de dados no MySql DATA=20090515 (YYYYMMDD)'),
('Tutorial de procura e migração de dados no MySql DATA=20090516 (YYYYMMDD)'),
('Tutorial de procura e migração de dados no MySql DATA=20090517 (YYYYMMDD)')
Verifica se tabela recebeu os dados do insert.
select * from tb_comentario
WHERE tx_comentario is not null
Pesquisar dados dentro de um campo tipo text para pegar somente a data.
SELECT DATE(CONCAT(SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +5,4) , "-" , SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +9,2) , "-" , SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +11,2)))
FROM tb_comentario
WHERE tx_comentario is not null
Faz o Insert dos dados da tabela tb_comentario para tb_data_comentario.
INSERT INTO tb_data_comentario (pk_data_comentario,dt_comentario)
SELECT
pk_comentario ,
DATE(CONCAT(SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +5,4) , "-" , SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +9,2) , "-" , SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +11,2))) as date
FROM tb_comentario
WHERE tx_comentario is not null
Faz o Update dos dados da tabela tb_comentario.
UPDATE tb_data_comentario
SET
dt_comentario = (SELECT DATE(CONCAT(SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +5,4) , "-" , SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +9,2) , "-" , SUBSTRING(tx_comentario,INSTR(tx_comentario, 'DATA=') +11,2))) + INTERVAL 3 DAY as date
FROM tb_comentario
WHERE tx_comentario is not null and pk_data_comentario = pk_comentario )
Verifica se os dados foram atualizados.
select * from tb_data_comentario
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.
May 08
Qual a diferença entre um domínio “.com” e um “.com.br”?
Cada país possui um orgão responsável pelos registro de domínios.
No Brasil chama-se Fapesp (www.fapesp.br),
Nos EUA, o órgão responsável chama-se Internic.
Fapesp e Internic são independentes, e registram domínios com terminações diferentes.
Vale lembrar que o pagamento das taxas cobradas para Fapesp ou Internic para o registro e manutenção de domínios são de responsabilidade do proprietário do domínio.
fonte: http://www.3dwebstudio.com.br/duvidas/6.htm
Sites .com
Os sites que tem a terminação do seu nome como .com são conhecidos como domínios genéricos, ou seja, não estão associados a nenhum pais em específico.
Sites .com.br
Os sites que tem a terminação do seu nome como .com.br são domínios regionais e estão associados com o Brasil, isto é, foram registrados no Brasil e são mantidos pelo CGI — Comitê Gestor da Internet no Brasil.
fonte: http://www.luis.blog.br/
.AERO Indústrias de transporte aéreo
.BIZ Business, geralmente escolhido para negócios
.COM Empresas comerciais
.COOP Cooperativas
.EDU Instituições educacionais (escolas e universidades)
.GOV Instituições governamentais
.INT Instituições internacionais
.INFO Sites informativos ou de divulgação
.MIL Instalações militares
.MUSEUM Museus
.NAME Para indivíduos
.NET Companhias ou organizações que administram grandes redes
.ORG Organizações sem fins lucrativos e/ou que não se enquadram em nenhum dos outros casos
.PRO Contadores, advogados, físicos e outros profissionais
.TV Sites voltados a assuntos televisivos
fonte: forum.clubedohardware.com.br/
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.
May 07
Informação sobre tráfego da internet brasileira.
PTT METRO
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.
May 06
Neste exemplo irei mostrar como criar elementos dentro do código html usando javascript e remover elemento estes elementos.
Criei uma lista de pedidos para exemplificar o uso destas funções.
Exemplo funcionando.
Crie um arquivo html chamado pedidos.html e insira o código abaixo.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<script type="text/javascript">
// Remove elementos
function removeElement(id) {
// Declara variavel lista que indica onde o elemento será removido.
var lista = document.getElementById('lista');
// Declara variavel elemento que indica qual elemento será removido.
var elemento = document.getElementById(id);
// Função removeChild irá procurar elementos que estão dentro da variavel lista com o valor
// da variavel elemento para remover.
lista.removeChild(elemento);
}
// Adiciona elementos basedo no valor dos combo box (select)
function adicionar(id) {
// Cria uma variavel que captura o valor do elemento selecionado no combo box.
var valor = document.getElementById(id).value;
// Cria uma variavel com referencia ao Id do Elemento
var lista = document.getElementById('lista');
// Cria uma variavel para inidicar a quantidade de elementos com o mesmo Id. Com valor inicial 1.
var qtd = 1;
// Verifica se elemento com o Id informado existe.
if(document.getElementById('element_' + valor)){
// Caso o elemento exista é atribuido o valor referente a quandide de vezes que foi adicionado
// este elemento.
qtd = document.getElementById('item_' + valor).value;
// Apos pegar o valor da quantidade. O elemento é removido para que não ocorra duplicação.
removeElement('element_' + valor);
// Incrementa a quantidade do elemento para o proximo registro.
qtd++;
}
// Variavel que contem dados dos novos elementos na lista.
// É criado uma tag <li> que contem informação do elemento adicionado.
// Dentro deste registro é adicionado um link <a> para remover o elemento.
// Tambem é adicionado um <input> do tipo hidden com o valor e a quantidade do elemento.
var dado = '<li id="element_' + valor + '"><span><strong>'
+ valor +
' Qtd '
+ qtd +
'</strong> <a title="Remover" onclick="removeElement(\'element_' + valor + '\'); return false;" href="javascript:void(0);">Remover</a></span><input id="item_'
+ valor +
'" type="hidden" value="'
+ qtd +
'" name="pedido['
+ valor +
']"/></li>';
// Pega o codigo HTML dento da lista e adiciona novos registros.
lista.innerHTML = lista.innerHTML + dado;
}
</script>
<style type="text/css">
body {
background:#FFFFFF none repeat scroll 0 0;
font-family:Arial,Helvetica,sans-serif;
font-size:12px;
height:100%;
line-height:1.3em;
margin:0;
width:100%;
}
div#wrapper {
margin:auto;
position:relative;
width:906px;
z-index:0;
}
input {
border:1px solid #CDCDCD;
background:#FFFFFF;
color:#000033;
}
input, select, textarea, label, button {
line-height:normal;
margin:2px 1px 1px 2px;
}
ul, li {
list-style: none;
}
li {
background:#FDFDFD;
color:#000033;
padding: 2px;
margin: 4px;
text-transform: uppercase;
}
legend {
color: #EB7800;
font-size:14px;
font-weight: bold;
}
</style>
<title>Lista de Pedidos</title>
</head>
<body>
<div id="wrapper">
<fieldset>
<legend>Cardápio</legend>
<label for="desc_bebidas">Bebidas</label>
<select id="desc_bebidas" name="desc_bebidas">
<option value="coca-cola">Coca-Cola</option>
<option value="fanta">Fanta</option>
</select>
<!-- Botão com a função de adicionar valor selecionado no combo box ao ser clicado -->
<input type="button" name="adicionar" value="Adicionar" onclick="adicionar('desc_bebidas');"><br>
<label for="desc_pratos">Pratos</label>
<select id="desc_pratos" name="desc_pratos">
<option value="espaguete">Espaguete</option>
<option value="pizza">Pizza</option>
</select>
<!-- Botão com a função de adicionar valor selecionado no combo box ao ser clicado -->
<input type="button" name="adicionar" value="Adicionar" onclick="adicionar('desc_pratos');"> <br>
<label for="desc_sobremesas">Sobremesas</label>
<select id="desc_sobremesas" name="desc_sobremesas">
<option value="pudim">Pudim</option>
<option value="sorvete">Sorvete</option>
</select>
<!-- Botão com a função de adicionar valor selecionado no combo box ao ser clicado -->
<input type="button" name="adicionar" value="Adicionar" onclick="adicionar('desc_sobremesas');"><br>
</fieldset>
<!-- Envia dados via POST para pedidos.php -->
<form action="pedidos.php" method="post">
<fieldset>
<legend>Descrição</legend>
<textarea rows="3" cols="100" id="desc_observacao" name="desc_observacao"></textarea>
</fieldset>
<div id="pedidos">
<fieldset>
<legend>Pedidos</legend>
<div>
<!-- Lista onde será adicionado registros dos valores dos combo box selecionados -->
<ul id="lista"></ul>
</div>
</fieldset>
</div>
<input type="submit" value="Enviar Pedido">
</form>
</div>
</body>
</html>
Crie um arquivo php chamado pedidos.php e insira o código abaixo.
<?php
// Organiza lista do array para o debug.
echo "<pre>";
// Mostra Array de entrada de POST e GET
print_r($_REQUEST);
?>
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 tutorias aqui apresentados.
|
|
Comentários Recentes