sexta-feira, 15 de janeiro de 2010
MySQL - Pesquisa automática por data - de 3 meses atrás até 1 dia atrás
OBS: Esta pesquisa esta limitada a 5 resultados (limit 5) e esta setada para trazer os resultados aleatóreamente.
select SEUS_CAMPOS from SUA_TABELA where (campo_data<SUBDATE(Now(), INTERVAL 1 DAY) and campo_data>SUBDATE(Now(), INTERVAL 91 DAY)) ORDER BY RAND() limit 5
terça-feira, 15 de dezembro de 2009
PHP Tirar Acentos - remove special characters
function retira_acentos($texto)
{
$array1 = array( "á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç"
, "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç" );
$array2 = array( "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
, "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C" );
return str_replace( $array1, $array2, $texto);
}
$texto = retira_acentos($variavel_q_quer_tirar_acentos);
$variavel_q_quer_tirar_acentos = $texto;
Se quiser ainda tirar carateres especiais como $ ou ª ou º entre outros sugiro um uso combinado de regex com str_replace conforme abaixo:
function retira_acentos($texto)
{
$array1 = array( "á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç"
, "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç" );
$array2 = array( "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
, "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C" );
$texto= str_replace( $array1, $array2, $texto);
$texto=preg_replace("/[^a-z0-9\s\-]/i", "", $texto);
$texto=preg_replace("/\s/", "_", $texto); // Replace all spaces with underline
return $texto;
}
$texto = retira_acentos($variavel_q_quer_tirar_acentos);
Para não ter problema com o nome do arquivo, sugiro usar assim:
// Descobrir os 4 ultimos caracteres do arquivo, por exemplo .pdf
$final = $arquivo_name;
$final = substr($final,(strlen($final)-4),strlen($final));
$nome_sem_final=substr($arquivo_name, 0, -4);
$arquivo_name = retira_acentos($nome_sem_final).$final;
Para achar a extensão do arquivo temos também:
$info = pathinfo($filename);
$name = $info['filename'];
$ext = $info['extension'];
// Shorter
$name = pathinfo($file, PATHINFO_FILENAME);
// Or in PHP 5.4
$name = pathinfo($filename)['filename'];
// Or in PHP 5.6, 7>
$ext=pathinfo($filename, PATHINFO_EXTENSION);
quinta-feira, 3 de dezembro de 2009
VirtualBox Guest Additions
Quem atualizou o Ubuntu 8.0.4 atualmente pode ter problemas. Para sanar use o abaixo:
use o comando uname -r (troque KERNELVERSION pelo resultado no comando abaixo)
1. sudo apt-get install build-essential linux-headers-KERNELVERSION
2. Clique 2x no icone do virtualbox additions na área de trabalho e clique em auto-run
3. Desligue e ligue novamente a virtual machine e pronto!
use o comando uname -r (troque KERNELVERSION pelo resultado no comando abaixo)
1. sudo apt-get install build-essential linux-headers-KERNELVERSION
2. Clique 2x no icone do virtualbox additions na área de trabalho e clique em auto-run
3. Desligue e ligue novamente a virtual machine e pronto!
sexta-feira, 27 de novembro de 2009
MySql - Apagar varios dados em varias tabelas
Para apagar dados com um, ou mais campos em comum:
Exemplo:
delete FROM t1,t2,t3 USING t1 INNER JOIN t2 INNER JOIN t3 where t1.id=t2.id and t2.id=t3.id and clientemaster=830
sexta-feira, 6 de novembro de 2009
Linux update Apache, PHP e MySQL de uma só vez
Faça primeiro:
apt-get update
apt-get dist-upgrade (para + info sobre esse link clique aqui)
Depois
apt-get install apache2 mysql-server-5.0 php5 php5-mysql libapache2-mod-php5 php5-cli php-pear
E não se esqueça:
apt-get install bind9
apt-get install exim4
sexta-feira, 23 de outubro de 2009
PHP Verificar Email em um form
Verifica se o email é valido assim como a existência do domínio.
if ($email) {
function valida_email($email){
$email = explode("@",$email); //Separa o nome de usuário do dominio do e-mail
if(count($email) != 2){ //Testa se existe o nome de usuário e o e-mail
return 0;
}
list($user,$domain) = $email;
if(!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*$/xi",$user)){ //Testa se o email segue o padrão
return 0;
}
if(!checkdnsrr($domain,"MX")){ //Testa se existe a entrada MX
return 0;
}
return 1;
}
$v_email = valida_email($email);
if ($v_email=='0') {
die ("Por favor verifique o endereço de email.");
}
}
if ($email) {
function valida_email($email){
$email = explode("@",$email); //Separa o nome de usuário do dominio do e-mail
if(count($email) != 2){ //Testa se existe o nome de usuário e o e-mail
return 0;
}
list($user,$domain) = $email;
if(!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*$/xi",$user)){ //Testa se o email segue o padrão
return 0;
}
if(!checkdnsrr($domain,"MX")){ //Testa se existe a entrada MX
return 0;
}
return 1;
}
$v_email = valida_email($email);
if ($v_email=='0') {
die ("Por favor verifique o endereço de email.");
}
}
quarta-feira, 21 de outubro de 2009
Linux Pasta Compartilhada no Sun VirtualBox
Colocar SEMPRE no final do /etc/fstab
Ubuntu versão 8.x.x
NOME_DA_PASTA_COMPARTILHADA /var/www vboxsf defaults 0 0
Ubuntu versão 9.x.x
NOME_DA_PASTA_COMPARTILHADA /var/www vboxsf
Não esquecer de instalar o VBOXADDITIONS!
Ubuntu versão 8.x.x
NOME_DA_PASTA_COMPARTILHADA /var/www vboxsf defaults 0 0
Ubuntu versão 9.x.x
NOME_DA_PASTA_COMPARTILHADA /var/www vboxsf
Não esquecer de instalar o VBOXADDITIONS!
quinta-feira, 15 de outubro de 2009
MySQL - Copiar apenas arquivos inexistentes de uma tabela para outra
Notar que TABELA1_BKP2 é a tabela que contém o maior numero de inputs e TABELA1 é a tabela onde serão inseridos os dados.
Isso se deve ao fato de eu ter um backup com mais dados que minha tabela original, devido a um erro na hora de apagar alguns dados, como em minha tabela original todo dia entram novos cadastros não havia a possibilidade de apenas passar por cima voltando o backup.
Vale lembrar que as tabelas tem o mesmo numero de campos, assim como todos os campos tem as mesmas características.
Para localizar:
select * from TABELA1_BKP2 left join TABELA1 on TABELA1_BKP2.id = TABELA1.id where TABELA1.id is null;
Para copiar:
INSERT INTO TABELA1 ( id , Empresa , Endereco , Cidade , Estado , cep , DDI , DDD , Fone , Fax , nome , Cargo , cpfID , Atividade_Principal , Atividade , email , ip , data , cnpj , locamapa , disponivel ) select TABELA1_BKP2.id, TABELA1_BKP2.Empresa, TABELA1_BKP2.Endereco, TABELA1_BKP2.Cidade, TABELA1_BKP2.Estado, TABELA1_BKP2.cep, TABELA1_BKP2.DDI, TABELA1_BKP2.DDD, TABELA1_BKP2.Fone, TABELA1_BKP2.Fax, TABELA1_BKP2.nome, TABELA1_BKP2.Cargo, TABELA1_BKP2.cpfID, TABELA1_BKP2.Atividade_Principal, TABELA1_BKP2.Atividade, TABELA1_BKP2.email, TABELA1_BKP2.ip, TABELA1_BKP2.data, TABELA1_BKP2.cnpj, TABELA1_BKP2.locamapa, TABELA1_BKP2.disponivel from TABELA1_BKP2 left join TABELA1 on TABELA1_BKP2.id = TABELA1.id where TABELA1.id is null;
Agradecimento especial ao DFroz pelas dicas. Valeu Bro!! ;)
Isso se deve ao fato de eu ter um backup com mais dados que minha tabela original, devido a um erro na hora de apagar alguns dados, como em minha tabela original todo dia entram novos cadastros não havia a possibilidade de apenas passar por cima voltando o backup.
Vale lembrar que as tabelas tem o mesmo numero de campos, assim como todos os campos tem as mesmas características.
Para localizar:
select * from TABELA1_BKP2 left join TABELA1 on TABELA1_BKP2.id = TABELA1.id where TABELA1.id is null;
Para copiar:
INSERT INTO TABELA1 ( id , Empresa , Endereco , Cidade , Estado , cep , DDI , DDD , Fone , Fax , nome , Cargo , cpfID , Atividade_Principal , Atividade , email , ip , data , cnpj , locamapa , disponivel ) select TABELA1_BKP2.id, TABELA1_BKP2.Empresa, TABELA1_BKP2.Endereco, TABELA1_BKP2.Cidade, TABELA1_BKP2.Estado, TABELA1_BKP2.cep, TABELA1_BKP2.DDI, TABELA1_BKP2.DDD, TABELA1_BKP2.Fone, TABELA1_BKP2.Fax, TABELA1_BKP2.nome, TABELA1_BKP2.Cargo, TABELA1_BKP2.cpfID, TABELA1_BKP2.Atividade_Principal, TABELA1_BKP2.Atividade, TABELA1_BKP2.email, TABELA1_BKP2.ip, TABELA1_BKP2.data, TABELA1_BKP2.cnpj, TABELA1_BKP2.locamapa, TABELA1_BKP2.disponivel from TABELA1_BKP2 left join TABELA1 on TABELA1_BKP2.id = TABELA1.id where TABELA1.id is null;
Agradecimento especial ao DFroz pelas dicas. Valeu Bro!! ;)
segunda-feira, 5 de outubro de 2009
MySQL - Criar usuário - dar e revogar privilégios para cada tabela
usuario geral com todos os privilégios
MYSQL> GRANT ALL PRIVILEGES ON NOME_DA_DATABASE.* TO USUARIO@localhost IDENTIFIED BY 'SENHA' WITH GRANT OPTION;
usuario específico com alguns privilégios(os principais)
MYSQL> CREATE USER 'USUARIO'@'localhost' IDENTIFIED BY 'SENHA';
MYSQL> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON NOME_DA_DATABASE.* TO USUARIO@localhost IDENTIFIED BY 'SENHA';
alterar senha:
SET PASSWORD FOR usuario_q_quer_trocar_senha@"localhost" = PASSWORD('UMA_SENHA_BEM_DIFICIL');
FLUSH PRIVILEGES;
revogar privilégios:
REVOKE ALL ON NOME_DA_DATABASE.* FROM 'teste'@'localhost';
REVOKE ALL ON NOME_DA_DATABASE.* FROM 'teste'@'%';
MYSQL> GRANT ALL PRIVILEGES ON NOME_DA_DATABASE.* TO USUARIO@localhost IDENTIFIED BY 'SENHA' WITH GRANT OPTION;
usuario específico com alguns privilégios(os principais)
MYSQL> CREATE USER 'USUARIO'@'localhost' IDENTIFIED BY 'SENHA';
MYSQL> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON NOME_DA_DATABASE.* TO USUARIO@localhost IDENTIFIED BY 'SENHA';
alterar senha:
SET PASSWORD FOR usuario_q_quer_trocar_senha@"localhost" = PASSWORD('UMA_SENHA_BEM_DIFICIL');
FLUSH PRIVILEGES;
revogar privilégios:
REVOKE ALL ON NOME_DA_DATABASE.* FROM 'teste'@'localhost';
REVOKE ALL ON NOME_DA_DATABASE.* FROM 'teste'@'%';
MySQL Alterar senha do root
mysqladmin -u root password uma_senha_dificil
Obs: Este comando deve ser executado do shell do linux.
OU passwd
Obs: Este comando deve ser executado do shell do linux.
OU passwd
Assinar:
Postagens (Atom)
Linux bash file returns unexpected token `$'do\r''
open file in vi edit with vi filename.sh command; type in vi :set ff=unix command; save file with :wq It will save the file with unix...
-
Adicionar ♦ 10 dias a partir de hoje echo date('d/m/Y', strtotime("+10 days")); ♦ 10 dias a partir de uma data echo ...
-
function retira_acentos($texto) { $array1 = array( "á", "à", "â", "ã", "ä", "é...