terça-feira, 6 de dezembro de 2011

PHP - Find File Extension - Achar os últimos 4 caracteres de uma string - Extensão do Arquivo

Vamos supor que vc queira trocar o nome de uma imagem sem ter q ficar fazendo isso manualmente, por exemplo o nome da figura é:
Captura de tela 2011-12-06 às 19.09.20.png

E esta guardado em $arquivo_name (usado para fazer uploads)

$arquivo_name = $_FILES['arquivo']['name'];

$final = $arquivo_name;
$final = substr($final,(strlen($final)-4),strlen($final));

Ou seja $final = ".png";

Veja q nesse caso não há como usar o list/explode uma vez q o "." aparece inúmeras vezes.

ou

$info = pathinfo($filename);
$name = $info['filename'];
$ext  = $info['extension'];

// Shorter
$name = pathinfo($file, PATHINFO_FILENAME);

// Or in PHP 5.4
$name = pathinfo($filename)['filename'];
 

quinta-feira, 17 de novembro de 2011

PHP - Somar ou Subtrair dias/meses de uma data - Add or Subtract days/months from a date

Adicionar
♦ 10 dias a partir de hoje
echo date('d/m/Y', strtotime("+10 days"));

♦ 10 dias a partir de uma data
echo date('d/m/Y', strtotime("+10 days",strtotime('20-07-2011')));

Subtrair
♦ 10 dias a partir de hoje
echo date('d/m/Y', strtotime("-10 days"));

♦ 10 dias a partir de uma data
echo date('d/m/Y', strtotime("-10 days",strtotime('20-07-2011')));

Se você tem o PHP 5.3 ou maior | If you have PHP 5.3 or higher

Adicionar - Add

                      Meses
                      $inicio='2016-01-01';
                      $parcelas=5;
                      $data_termino = new DateTime($inicio);
                      $data_termino->add(new DateInterval('P'.$parcelas.'M'));
                      $termino_pagamento=$data_termino->format('Y-m-d');

                      Dias
                      $inicio='2016-01-01';
                      $parcelas=5;
                      $data_termino = new DateTime($inicio);
                      $data_termino->add(new DateInterval('P'.$parcelas.'D'));
                      $termino_pagamento=$data_termino->format('Y-m-d');

Subtrair - Subtract

                      Meses
                      $inicio='2016-01-01';
                      $parcelas=5;
                      $data_termino = new DateTime($inicio);
                      $data_termino->sub(new DateInterval('P'.$parcelas.'M'));
                      $termino_pagamento=$data_termino->format('Y-m-d');

                      Dias
                      $inicio='2016-01-01';
                      $parcelas=5;
                      $data_termino = new DateTime($inicio);
                      $data_termino->sub(new DateInterval('P'.$parcelas.'D'));
                      $termino_pagamento=$data_termino->format('Y-m-d');


sexta-feira, 7 de outubro de 2011

MySQL Copiar uma linha de uma tabela para outra - Copy a row to other table

Para tabelas IDENTICAS inclusive o ID (campo autoincrement):

insert into tabela2 select * from tabela1 where id='1'


Para tabelas com IDs diferentes**:

insert into tabela2 (`apelido`, `empresa`, `endereco`, `cidade`, `estado`, `cnpj`, `ie`, `ccm`, `cep`, `tipo`, `data_cadastro`, `data_update`, `endereco_faturamento`, `cidade_faturamento`, `estado_faturamento`, `cep_faturamento`, `cnpj_faturamento`, `ie_faturamento`, `ccm_faturamento`, `endereco_extra`, `cidade_extra`, `estado_extra`, `cep_extra`, `gringa`, `pais`, `status_envio`, `acao`)   select `apelido`, `empresa`, `endereco`, `cidade`, `estado`, `cnpj`, `ie`, `ccm`, `cep`, `tipo`, `data_cadastro`, `data_update`, `endereco_faturamento`, `cidade_faturamento`, `estado_faturamento`, `cep_faturamento`, `cnpj_faturamento`, `ie_faturamento`, `ccm_faturamento`, `endereco_extra`, `cidade_extra`, `estado_extra`, `cep_extra`, `gringa`, `pais`, `status_envio`, `acao` from tabela1 where id='1'

** basta tirar a coluna ID, no meu caso é a primeira coluna.

Para mudar apenas um valor** entre as tabelas:

insert into tabela2 (`apelido`, `empresa`, `endereco`, `cidade`, `estado`, `cnpj`, `ie`, `ccm`, `cep`, `tipo`, `data_cadastro`, `data_update`, `endereco_faturamento`, `cidade_faturamento`, `estado_faturamento`, `cep_faturamento`, `cnpj_faturamento`, `ie_faturamento`, `ccm_faturamento`, `endereco_extra`, `cidade_extra`, `estado_extra`, `cep_extra`, `gringa`, `pais`, `status_envio`, `acao`)   select 'LA WEB', `empresa`, `endereco`, `cidade`, `estado`, `cnpj`, `ie`, `ccm`, `cep`, `tipo`, `data_cadastro`, `data_update`, `endereco_faturamento`, `cidade_faturamento`, `estado_faturamento`, `cep_faturamento`, `cnpj_faturamento`, `ie_faturamento`, `ccm_faturamento`, `endereco_extra`, `cidade_extra`, `estado_extra`, `cep_extra`, `gringa`, `pais`, `status_envio`, `acao` from tabela1 where id='1'

** notem que no select ao invés de apelido esta 'La Web' ou seja todos os apelidos vão ser gravados como La Web, as aspas simples são obrigatórias.

segunda-feira, 25 de julho de 2011

MySQL Concatenar (juntar) variaveis

Abaixo a rotina para juntar variaveis que estejam em duplicidade de id_carro e data de inserção:

SELECT id, GROUP_CONCAT(id_carro SEPARATOR '|'), GROUP_CONCAT(pod SEPARATOR '|'), sum( valor )
FROM planilha_carros
GROUP BY id_carro, data_insercao
HAVING COUNT( * ) >1

terça-feira, 12 de julho de 2011

MySQL pesquisa entre tabelas para achar id que não estão em uma delas

Quando vc tem duas tabelas e quer saber qual id da tabela principal não esta na tabela secundária:

SELECT tabela1.id_carro from tabela1 WHERE tabela1.id_carro NOT IN
( SELECT tabela2.id_carro FROM tabela2)

Onde id_carro é o campo em comum entre as tabelas.


quarta-feira, 1 de junho de 2011

MySQL e PHP, caracteres estranhos no lugar do acento

As vezes migrando uma base de dados de um servidor para o outro, ou upload para a tabela mysql, aparecem caracteres estranhos no lugar dos acentos e por mais que vc mude o <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> ou use a função UTF8_decode nada funciona...

Achei essa função do PHP que funcionou no meu caso:


$entrega_cidade = htmlentities($row['entrega_cidade'], ENT_QUOTES, "UTF-8");

_

sábado, 28 de maio de 2011

TAB automático

O exemplo abaixo executa uma function de ajax (validator) previamente escrita, após serem digitados 11 caracteres:

<input class='preto' size=14 type=text name='campo' maxlength=11 id='campo' onkeyup='if (document.getElementById("campo").value.length==11) validator(this.value);' />


Aqui o TAB muda para outro campo:
<input class='preto' size=14 type=text name='campo' maxlength=11 id='campo' onkeyup='if(document.getElementById("campo").value.length==11)
document.getElementById("campo2").focus();' />

<input type=text name=campo2 id='campo2' />

terça-feira, 18 de janeiro de 2011

Concatenar Varíaveis

Também conhecido como váriaveis váriaveis:

Quando houverem dentro de um loop apenas algumas váriaveis a serem "pescadas"...

<?php
$j=0;
for ($i=0;$i<10;$i++) {
if ($i==2) $a="jurubeba";
elseif ($i==3) $a="mate";
else $a='';
if ($a!='') { $j++; $c[$j]="$a";}
}
echo "<br/><br/>";

for ($x=1;$x<=$j;$x++) {
echo $c[$x];
echo "<br/>";
}

?>

Este exemplo foi criado para ser retirar as respostas de dentro uma variavel(observacao) de um loop de uma query, porém na hora de mostrar na tela devem ser mostradas como uma única observação separadas por cliente.

Ficando assim:
$vv=0;
for ($u=1;$u<=5;$u++) {
$res_fornecedor2 = mysql_query("select DATE_FORMAT(data, '%d/%m/%Y') as agendamentoC, hora, minuto, ajudantes, endereco, id_tipo, comentarios, peso_bruto from TABELA where id_tabela='$id_containerY[$u]'");

$linha_fornecedor2=mysql_fetch_array($res_fornecedor2);

$agendamento2 = $linha_fornecedor2['agendamentoC'];
$ajudantes2 = $linha_fornecedor2['ajudantes'];
$endereco2 = $linha_fornecedor2['endereco'];
$id_tipo_container2 = $linha_fornecedor2['id_tipo_container'];
$observacoes2 = $linha_fornecedor2['comentarios'];
$peso_bruto2 = $linha_fornecedor2['peso_bruto'];

if ($observacoes2) {$vv++; $output2 = str_replace(chr(10), '<br/>', $observacoes2); $observacoesX[$vv]="$output2";}

}

for ($xx=1;$xx<=$vv;$xx++) {
echo "$observacoesX[$xx]<br/>";
}


Se quiser guardar as infos dentro da variavel trocar:

echo "$observacoesX[$xx]<br/>";

por:

$observacoesX.="$observacoesX[$xx]<br/>";