Jump to content

hufersil

Members
  • Content count

    929
  • Joined

  • Last visited

  • Days Won

    12

hufersil last won the day on June 9 2017

hufersil had the most liked content!

Community Reputation

145 Muito Bom

About hufersil

  • Rank
    PHP & Flex & Flash & Java Developer
  • Birthday 01/06/1984

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    São Paulo - Capital

Contato

  • Site Pessoal
    http://www.hufersil.com.br

Recent Profile Visitors

2789455 profile views
  1. hufersil

    Ajuda com regex

    $string = "| A# | B/D# | C11 | D | E | F | G |"; echo preg_replace("@([A-Z](#)?)@", '&$1&', $string);
  2. hufersil

    Consulta com Checkbox

    Se eh um checkbox para a mesma informacao e ambas precisam ser enviadas, tem que estar no formato de array: <input type="radio" name="tipo_curso[]" value="Presencial">Presencial <input type="radio" name="tipo_curso[]" value="EAD">EAD Veja os colchetes no atributo name
  3. hufersil

    Agendamento de Tarefas Laravel 5.2

    No seu sistema, não rola controlar a sessão no banco de dados? Tendo isso no banco, ficaria bem mais fácil.
  4. hufersil

    DateTime::diff não calcula corretamente período 16/10/2016 a 19/10/201

    Horário de verão, por isto dá 3 dias (dois do diff, porque não são dias completos e mais um extra). Tem que igualar os timezones (se quiser desconsiderar o horário de verão). $data_1 = new DateTime('2016-10-16', new DateTimeZone('-03:00')); $data_2 = new DateTime('2016-10-19', new DateTimeZone('-03:00'));
  5. hufersil

    Subtrair horas de um tempo

    select sec_to_time( time_to_sec(timediff('2016-10-30 17:00:00','2016-10-10 15:30:00')) - time_to_sec('48:00:00') ); @braços
  6. hufersil

    manter itens que foram selecionados ativo/selected

    Complementando: O nome do elemento select deve indicar que é um array: <select name="dia_da_semana[]" multiple="multiple" size="7"> Veja os [ ] no atributo name
  7. hufersil

    Mesclar dias em um calendário igual Google Calendar

    Acho que ao invés de reinventar a roda, usá-la seria mais produtivo... Veja o FullCalendar
  8. hufersil

    Cálculo de porcentagem com segundos

    Para isso você precisa de uma data inicial também. Seriam 3 datas: Início Fim Atual date_default_timezone_set('America/Sao_Paulo'); $inicio = new DateTime('2016-09-22 17:30:00'); $fim = new DateTime('2016-09-29 14:30:00'); $agora = new DateTime(); $diffInicioFim = $fim->getTimestamp() - $inicio->getTimestamp(); $diffInicioAgora = $agora->getTimestamp() - $inicio->getTimestamp(); $pct = $diffInicioAgora / $diffInicioFim * 100; echo number_format($pct, 2), PHP_EOL;
  9. hufersil

    Pegar resultados de diversos concursos da loteria

    O que ele disse foi para ir fazendo cache gradativamente. Não precisa ser na hora que o usuário acessa. Pode ser através de uma atividade cadastrada via CronTab (tarefas agendadas). A carga inicial, você pode "fazer na mão" mesmo. E quando usuário acessar, ao invés de fazer essa consulta com cURL, utilize uma consulta ao seu banco de dados local.
  10. hufersil

    Assinatura PagSeguro via API cURL

    Use a biblioteca do PagSeguro. Bem mais fácil. https://github.com/pagseguro/php
  11. hufersil

    Puxar lista de presença na horizontal e vertical

    O que eu faria: criaria uma tabela-calendário, como esta: http://www.hufersil.com.br/post/recorrencia-de-datas-com-mysql; colocaria os dados da chamada da semana em uma TEMP; Montaria a query dinamicamente para trazer os dados que preciso; Exemplos: CREATE TABLE calendario ( `data` DATE NOT NULL, dia_semana INT NOT NULL, semana_ano INT NOT NULL, PRIMARY KEY(`data`) ) ENGINE=MyISAM; CREATE TABLE numero ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id) ) ENGINE=MyISAM; INSERT INTO NUMERO VALUES(NULL); INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO NUMERO SELECT NULL FROM NUMERO; INSERT INTO calendario SELECT DATE_ADD('2015-01-01', INTERVAL id-1 DAY), DAYOFWEEK(DATE_ADD('2015-01-01', INTERVAL id-1 DAY))-1, WEEKOFYEAR(DATE_ADD('2015-01-01', INTERVAL id-1 DAY)) FROM numero; CREATE TABLE `aluno` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1; CREATE TABLE `chamada` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_aluno` int(11) NOT NULL, `data_chamada` date NOT NULL, `presente` tinyint(1) DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 ; INSERT INTO `aluno`(`id`, `nome`) VALUES (null, 'Joao'); INSERT INTO `aluno`(`id`, `nome`) VALUES (null, 'Maria'); INSERT INTO `aluno`(`id`, `nome`) VALUES (null, 'Pedro'); PHP # conexao MySQL $db = new PDO('mysql:dbname=testes;host=localhost','root','root'); # formato de datas $formato = 'Y-m-d'; # inicio e fim da semana # pode ser alterado para os periodos desejados $inicio = new DateTime('monday this week'); $fim = new DateTime('friday this week'); # consulta os dias no calendario $sql = sprintf("select * from calendario where data between '%s' and '%s'", $inicio->format($formato), $fim->format($formato)); $stDiasSemana = $db->query($sql) or die('zicou'); # cria uma tabela temporaria com os dados da chamada $sql = sprintf("create temporary table tmp_chamada as select * from chamada where data_chamada between '%s' and '%s'", $inicio->format($formato), $fim->format($formato)); $db->query($sql) or die('zicou'); # uma string auxiliar para montar os dias da chamada $subDiasChamada = ''; foreach($stDiasSemana->fetchAll(PDO::FETCH_ASSOC) as $row) { $subDiasChamada .= sprintf( "SUM(IF(t.data_chamada = '%s' AND t.presente, 1, 0)) as dia_%s,\n", $row['data'], str_replace('-','_',$row['data']) ); } $subDiasChamada = trim(trim($subDiasChamada),','); # cria consulta $sql = " SELECT aluno.id, nome, {$subDiasChamada} FROM aluno LEFT JOIN tmp_chamada t ON t.id_aluno = aluno.id GROUP BY aluno.id "; # daqui pra frente é com você Resultado no PHP My Admin:
  12. hufersil

    Vírus do Boleto

    Sobre o problema do boleto. Como já dito, PDF é uma das melhores alternativas. Mesmo que dê trabalho, aconselho a desenhar o PDF utilizando uma biblioteca disponível. Gosto muito da TCPDF. Não aconselho em nenhuma delas utilizar o maldito WriteHTML. Nunca fica perfeito. Desenhando o boleto linha a linha, você vai ter um produto perfeito que poderá ser reutilizado posteriormente. Munindo-se da programação orientada a objetos, poderá criar as ferramentas necessárias para portar para qualquer banco com poucas modificações no seu código. Sobre o vírus. Entendo que você queira minimizar o problema com seus usuário e tentar fazer com que sua marca não sofra os danos colaterais de uma cagada de um usuário, mas acho que esta é uma batalha perdida. Neste caso, você nunca vai ter o controle do ambiente do usuário, e mesmo que você coloque o verificador de codigo de barras indicado, ele poderá simplesmente não checar, e o problema persistirá. A validação não combate o vírus. Ele continua lá, firme e forte. Só evita que, naquele momento, um boleto a menos seja pago erroneamente. Se um outro usuário usar o mesmo PC para pagar outro boleto (o que é normal, o marido paga um a mulher outro), que seja de outro sistema, vai se um boleto pago errado também. Fazendo uma comparação: eu por exemplo, adoro andar de moto. Imagina que eu vi um pai dar de presente para o filho de 18 anos, que acabou de tirar a carteira, uma Kawasaki ZX10R. 3 semanas depois o filho estava internado em estado grave no hospital porque caiu de moto num track-day. O pai vai poder culpar a marca porque o filho caiu de moto porque não sabia usar a moto? Andar de moto requer atenção, cuidado, os pneus corretos, suspensão correta, vestuário correto, etc. Mesma coisa para usar um PC. Se não souber usar, vai dar problemas mesmo. Um boleto pago errado, pode ser até o menor dos problemas. Se o usuário tiver a sorte de pegar um vírus que acesse seu bankline, aí sim vai ter um estrago. Em síntese: como falei anteriormente, acho louvável você querer minimizar o problema. Se realmente quer que este vírus não "zoe" seus boletos, faça uma alternativa do HTML. Em PDF ou uma imagem completa do boleto podem ser a solução. []'s
  13. hufersil

    WebService Transportadora

    Este trecho do WSDL que você passou define um tipo complexo, como se fosse uma classe. Verifique o WSDL na parte de operações (operation). Lá terá a assinatura da operação e quais são as partes (argumentos) utilizadas em sua chamada. Vou te dar um exemplo de um dos WebServices que desenvolvemos para integração com nossas ferramentas aqui na empresa. Esta é uma operação (um método a ser executado) Veja que tem as tags input e output. O que nos interessa é a input. Ela se refere a um outro elemento, ConsultarCargaRequest. Este elemento está definido assim: Este elemento está dividido em duas partes: Credencial e idCarga. Credencial, está no namespace TNS, o que neste exemplo, define um tipo complexo (Classe). idCarga, está no namespace xsd, o que neste exemplo, define o namespace próprio do WSDL e indica que é uma string. Cada parte complexa, possui suas propriedades, como em uma classe. Vejamos o tipo Credencial: Agora ficou mais fácil: Sabemos que para o método ConsultarCarga, é necessário passar dois parametros. Um do tipo Credencial e outro do tipo string (nesta mesma ordem). O SoapClient do PHP funciona como um proxy. Ou seja, podemos chamar a função diretamente nele que ele ficará responsável por chamar o método mágico __call. Vejamos uma implementação simples deste exemplo passado (não coloquei comentários no código porque está muito simples a leitura): $wsdlURL = 'http://dominio.com/service?wsdl'; $client = new SoapClient($wsdlURL, array( 'exceptions' => true, 'cache_wsdl' => WSDL_CACHE_NONE, 'trace' => true )); $credencial = array( 'usuario' => 'usuario', 'senha' => 'senha' ); echo '<pre>'; try { $result = $client->ConsultarCarga($credencial, '0000014'); print_r($result); } catch(Exception $ex) { echo $ex->getMessage(); } E seu retorno é semelhante a: stdClass Object ( [codigo] => 349 [status] => stdClass Object ( [codigo] => 1 [descr] => A PROGRAMAR [dataHora] => 2014-05-12T17:49:53-03:00 ) [carregamento] => stdClass Object ( [inicio] => [fim] => ) [descarregamento] => stdClass Object ( [inicio] => [fim] => ) [situacao] => stdClass Object ( [dataHora] => ) ) Veja se com estes exemplos fica mais fácil o entendimento. @braços!
  14. hufersil

    Encontrar tag <img> em string e manipulá-la (Regex?)

    Sim, é só acrescentar a regex que vc precisa dentro do loop. Isso você já tinha feito no post #9, mas vai um exemplo alterado: $base = '/common/function/thumb.php?url='; for($i=0, $max = count($matches[0]); $i < $max; $i++) { $newUrl = $base . $matches[2][$i]; $width = 0; $height = 0; if( preg_match('@width:\s*(\d+)px@i', $matches[0][$i], $reg) ) { $width = $reg[1]; } if( preg_match('@height:\s*(\d+)px@i', $matches[0][$i], $reg) ) { $height = $reg[1]; } $newUrl .= sprintf('&width=%d&height=%d&crop=true',$width,$height); $tag = sprintf('<img src="%s" %s %s>', $newUrl, $matches[1][$i], $matches[3][$i]); $html = str_replace($matches[0][$i], $tag, $html); } echo $html;
  15. hufersil

    Encontrar tag <img> em string e manipulá-la (Regex?)

    Chegou a testar meu exemplo?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.