Arquivo da categoria: PHP

OpenCart: Com o aumento do dolar, veja como atualizar o preço de todos os seus produtos via SQL

opencart-634x250

Com o aumento do dolar, resolvi postar aqui como fazer para aumentar o preço de todos os seus produtos baseado numa porcentagem.

No caso tive que aumentar 0.05% em cima de todos os produtos.

Para fazer isso, você precisa rodar uma linha SQL diretamente no servidor (pode ser feito facilmente pelo phpmysql admin do seu provedor de hospedagem)

UPDATE opencart_product SET price = round(price*1.05,2)

Onde “opencart_product” é o nome da minha tabela de produtos e “1.05” é o valor que quero deixar no produto, no caso 100% + 0.05%.

Você também pode baixar o valor do produto proporcionalmente dessa mesma forma. Se você tirar 10% de todos os produtos a query ficaria assim:

UPDATE opencart_product SET price = round(price*0.9,2)

Espero que essa informação seja útil para você, assim como foi para mim 🙂

Share

Feliz ano novo com javascript !

natal-16Primeiramente, gostaria de desejar a todos os leitores e amigos que acompanham meu blog:

Um feliz natal e um próspero ano novo !

Entrando nesse ritmo de natal e ano novo, desenvolvi um pequeno código em javascript para desejar feliz natal e ano novo para os leitores do meu blog.

O código está realmente simples, e pode ser alterado e utilizado aonde quiser… Só não esqueça de deixar sua opnião nos comentários abaixo!

O script funciona da seguinte maneira:
3 variáveis são definidas no inicio:
Data atual (var agora).
Data do ano novo (var anoNovo).
Data máxima de exibição (var anoNovoMax).

O alert com a mensagem será exibida enquanto a data atual estiver dentro do intervalo das outras 2 datas.

Abaixo segue o código:

<script language="JavaScript">
var agora = new Date();
var anoNovo = new Date(2010, 0, 1, 0, 0, 0, 0);
var anoNovoMax = new Date(2010, 0, 1, 23, 59, 59, 0);
if(agora >= anoNovo && agora<anoNovoMax)
{
alert("Feliz ano novo !");
}
</script>

Para implementar no wordpress, é bem simples:
Adicione um Widget de texto em seu wordpress, e sem atribuir um titulo, insira o codigo javascript diretamente no campo de baixo “descrição”. Fazendo isso, o widget não ficará visível, mas o código vai funcionar… 🙂

Para implementar em seu site:
Basta inserir o javascript em sua página.

Dica:
Como o javascript pega a data da máquina do cliente, você corre o risco de pegar a data errada.  Uma solução seria usar o PHP para definir a data, ou seja,  seria a data atual seu servidor. Exemplo:

var agora = new Date(<?php echo date("Y, m, d, H, i, s"); ?>);

Então é isso… Façam bom proveito !

Aqui no blog, já está implementado as mensagens de Feliz Natal e Feliz Ano Novo… Serão exibidas durante todo o dia 25 e 01, respectivamente ! Visitem o Blog e confiram ! 😉

 

Share

PHP: Arquivo de log personalizado

 

PHP: http://www.php.net/
PHP: http://www.php.net/

Semana passada, estive fazendo num pequeno site, uma área de login. Foi então que fiz uma funçãozinha no PHP que gera logs diários dos eventos ocorridos desde o login até o logoff, como por exemplo, ações tomadas pelos usuários na parte administrativa.

Abaixo, vocês poderão conferir o código que utilizei, logicamente adaptado para que fosse publicado aqui.

Os arquivos de log são gerados baseado no dia em que se encontra. Como os arquivos estão em formato .txt, utilizei um prefixo no arquivo, para que o acesso não seja tão óbvio por pessoas desautorizadas.

A função armazena no arquivo a hora da ocorrência, seguido pelo IP da máquina do cliente e a mensagem definida por você.

Vamos então seguir para o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
date_default_timezone_set('America/Sao_Paulo');
 
function Logger($msg){
 
$data = date("d-m-y");
$hora = date("H:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
 
//Nome do arquivo:
$arquivo = "Logger_$data.txt";
 
//Texto a ser impresso no log:
$texto = "[$hora][$ip]> $msg \n";
 
$manipular = fopen("$arquivo", "a+b");
fwrite($manipular, $texto);
fclose($manipular);
 
}
 
?>

Salve o arquivo acima como logger.php

Na linha 3 estou declarando o timezone para São Paulo, mesmo estando no Rio de Janeiro, o horário é o mesmo. Isso serve para configurar a data para minha localidade, já que no meu caso, o servidor se encontra em outro fuso horário.

Nas linhas 7, 8 e 9 estou declarando as variáveis de data, hora e ip da máquina que gerou o log (cliente).

Na linha 12 está o nome do arquivo. Será algo do tipo Logger_19-06-2009.txt (dia-mês-ano). Caso deseje armazenar o log em uma pasta já existente, altere a linha para:
$arquivo = “minhapasta/Logger_$data.txt”;

Na linha 17 está a função de abertura do arquivo.  Passando o “a+” como parâmetro, apenas nos dias que tiver alguma coisa para ser inserida no log, é que o arquivo será criado ou se já existir, escreverá o registro no fim do arquivo. O parâmetro “b” serve para questões de portabilidade ( inserção recomendado no manual do php )

As linhas 18 e 19 manipulam e fecham o arquivo definido na linha 12.

Agora vamos para o código onde vamos utilizar nossa função:

1
2
3
4
5
6
7
8
9
<?php
 
include "logger.php";
 
Logger("Testando a função logger !");
Logger("Como você pode ver, estou logando uma informação !");
Logger("Teste 1, Teste 2, Teste 3!");
 
?>

Salve o arquivo acima como teste.php na mesma página onde se encontra o logger.php.

Pronto. O Script acima gera 3 saídas consecutivas no seu arquivo de log.
Conferindo o resultado:
Nome do arquivo gerado:
Logger_19-06-09.txt

Conteúdo:
[21:57:36][201.7.xxx.xxx]> Testando a função logger !
[21:57:36][201.7.xxx.xxx]> Como você pode ver, estou logando uma informação !
[21:57:36][201.7.xxx.xxx]> Teste 1, Teste 2, Teste 3!

Bom, espero que o script sirva para mais alguém. 🙂

===========================================

Atualização em 13/abril/2011

A leitora Renata nos comentários de hoje (13/04/11) deixou uma dúvida muito boa… Vale a pena editar a matéria e acrescentar a solução dela aqui…

Ela estava encontrando problemas para centralizar os arquivos de log em um só lugar. Ela trabalhava com pastas para organizar seus arquivos, e ao incluir a função logger nos arquivos, fazia com que os logs fossem gravados separadamente em cada pasta.

Por que isso ocorreu ?

Ela estava incluindo a função da maneira correta: include “../logger.php”; mas o problema estava mesmo dentro da função Logger.

Na variável $arquivo, onde definimos o nome do arquivo de log, a função parte do princípio que o arquivo .txt está do lado do arquivo .php que contém a função…

Consideremos o seguinte path de diretórios:

/
/logs/Logger.txt
/logger.php
/folder1/pagina1.php

Ao incluir a função logger de dentro da “pagina1”, chamando a função como a Renata fez (“../logger.php”), faz com que ao definir a variavel $arquivo = “teste.txt” o PHP vai salvar o arquivo dentro da pasta “folder1” pois ele interpreta o codigo a partir daquele contexto.

Para resolver isso, ao entrar na função Logger, voce precisa mudar o contexto da execução para ele salvar o log corretamente na pasta log (independente de onde ela estiver), e no final da função, você precisa voltar o contexto para onde ele estava, para evitar possiveis problemas.

Segue então o novo código que resolve o problema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
date_default_timezone_set('America/Sao_Paulo');
 
function Logger($msg){
 
//pega o path completo de onde esta executanto
$caminho_atual = getcwd(); 
 
//muda o contexto de execução para a pasta logs
chdir("/home/rafaelbiriba/public_html/logs");
 
$data = date("d-m-y");
$hora = date("H:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
 
//Nome do arquivo:
$arquivo = "Logger_$data.txt";
 
//Texto a ser impresso no log:
$texto = "[$hora][$ip]> $msg \n";
 
$manipular = fopen("$arquivo", "a+b");
fwrite($manipular, $texto);
fclose($manipular);
 
//Volta o contexto de execução para o caminho em que estava antes
chdir($caminho_atual);
 
}
 
?>
Share

PHP: Ocultando erros de código

PHP: http://www.php.net/
PHP: http://www.php.net/

É muito comum após concluir todo e desenvolvimento de um projeto PHP, alguns error serem mostrados na tela, como um E_WARNING ou E_NOTICE. Isso pode ocorrer por muitos motivos, como indisponibilidade temporária no acesso ao banco de dados, tempo máximo de execução excedido, dentre outros.

Durante o desenvolvimento é altamente recomendado deixar os erros habilitados, justamente para ser feita a depuração dos mesmos, antes de finalizar o projeto. Depois de concluido, podemos desabilitar os erros, para caso haja uma eventualidade, não fique aparecendo diretamente na tela do usuário / cliente !

Para isso, vamos criar uma página PHP, onde vamos deixar os comandos para habilitar/desabilitar de forma simples e rápida, e vamos incluir a página criada nas páginas em que os erros não deverão ser exibidos. Vamos começar:

[ mostra_erros.php ]
<?php

error_reporting(0);
ini_set(“display_errors”, 0 );

?>

Definimos  de início error_reporting para ser zero, com isso nenhum erro é reportado. Logo em seguida atribuimos ao display_errors o valor zero, poderia ser também true ou false, um e zero, respectivamente. O código acima fará com que o PHP não exiba nenhum tipo de erro na tela. Para exibir todos os erros novamente utilize o código abaixo:
[ mostra_erros.php ]
<?php

error_reporting(E_ALL);
ini_set(“display_errors”, 1 );

?>

Veremos a seguir, algumas outras combinações, para ser exibido somente o erro desejado. Primeiro vamos entender o que cada erro mais comum do PHP quer dizer:
( Definições completas disponíveis no manual PHP.net: )

E_ERROR: Estes indicam erros que não podem ser recuperados, como problemas de alocação de memória. A execução do script é interrompida.
E_WARNING: Avisos em tempo de execução (erros não fatais). A execução do script não é interrompida.
E_PARSE: Erro em tempo de compilação. Erros gerados pelo interpretador.
E_NOTICE: Indica que o script encontrou alguma coisa que pode indicar um erro, mas que também possa acontecer durante a execução normal do script.
E_STRICT: Permite ao PHP sugerir mudanças ao seu código as quais irão assegurar melhor interoperabilidade e compatibilidade futura do seu código.
E_ALL: Todos erros e avisos, como suportado, exceto de nível E_STRICT

Caso você deseje exibir apenas os erros de tipo E_WARNING deve ser usado o seguinte código:

[ mostra_erros.php ]
<?php

error_reporting(E_WARNING);
ini_set(“display_errors”, 1 );

?>

Observe que agora atribuimos ao display_errors o valor 1 ( true ), para reportamos apenas os erros E_WARNING, como definimos na função error_reporting.

Podemos ainda utilizar as seguinte combinações:

[ mostra_erros.php ]
<?php

error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set(“display_errors”, 1 );

?>

Desta forma apenas os erros do tipo E_ERROR, E_WARNING e E_PARSE serão exibidos na tela. Uma outra forma seria:

[ mostra_erros.php ]
<?php

error_reporting(E_ALL ^ E_WARNING);
ini_set(“display_errors”, 1 );

?>

Com isso, todos os erros serão mostrados ( E_ALL ), com exceção do E_WARNING.

Já temos nosso arquivo de configuração ( mostra_erros.php ), agora basta chamar o arquivo de configuração nas páginas em que gostaria de alterar a configuração.

<?php

include “mostra_erros.php”;

?>

Adicione a ‘include’ acima no inicio das páginas PHP,  para que seja definido os parametros antes da página ser carregada. Quando precisar depurar algum erro nos códigos, ou acrescentar mais linhas ao código, basta alterar o arquivo mostra_erros.php e habilitar a exibição dos erros conforme foi apresentado nos exemplos acima.

Share