Ir para conteúdo

HwapX

Members
  • Total de itens

    96
  • Registro em

  • Última visita

  • Dias vencidos

    2

Tudo que HwapX postou

  1. HwapX

    ID e Múltiplos dados

    Acho que o nome da tabela acabou dificultando a interpretação, pelo que entendi cada pedido pode ter vários itens só que você está utilizando a tabela PEDIDO para armazenar os itens, nesse caso o ideal seria criar uma tabela adicional para os itens. Tabela: PEDIDO ID ... Tabela: PEDIDO_ITENS ID ID_PEDIDO ID_SERVICO Tabela: SERVIÇOS ID SERVICO Não recomendo o que direi a seguir, mas supondo que o número seja a única informação do pedido você poderia então alterar sua tabela PEDIDO e adicionar um campo NUMERO que será igual para todos os itens do mesmo pedido (como gerar esse número é outra história). Tabela: PEDIDO ID NUMERO ID_SERVICO
  2. HwapX

    Duvida simples: Usar método de superclasse

    Abra um tópico separado para essa outra dúvida, dessa forma fica mais organizado e fácil de outras pessoas com a mesma dúvida encontrarem e lerem.
  3. HwapX

    Algoritmo jogo lotérico

    Sem utilizar nenhuma classe externa e utilizando tipos primitivos você poderia combinar dois loops for, vide exemplo abaixo: public class Main { public static void main(String[] args) { int[] aposta = {1, 2, 3, 4, 5}; int[] sorteio = {2, 5, 9, 7, 4}; for(int a : aposta) for(int s : sorteio) if(a == s) System.out.println("Acertou o numero " + a); } } Você pode ver a saída e testar em: https://ideone.com/ddQ0J0.
  4. HwapX

    Duvida simples: Usar método de superclasse

    Seu pensamento está correto, veja o exemplo abaixo: class Pessoa { private String nome; public String getNome() { return this.nome; } public void setNome(String nome) { this.nome = nome; } } class Vendedor extends Pessoa { } public class Main { public static void main(String[] args) { Vendedor vnd = new Vendedor(); vnd.setNome("HwapX"); System.out.println(vnd.getNome()); } } Você pode ver a saída e testar ele em: https://ideone.com/q86vkb
  5. HwapX

    Multiplicação e divisão no python

    Antes tarde que nunca, fica o compartilhamento de conhecimento para outros. Veja a definição de multiplicação https://pt.wikipedia.org/wiki/Multiplicação: Com essa definição parece fácil resolver o problema com um loop, porem você possui essa restrição, então qual seria a alternativa ao loop? A resposta é utilize recursão https://pt.wikipedia.org/wiki/Recursividade_(ciência_da_computação). E quanto a divisão? bom nesse caso a definição da Wikipedia https://pt.wikipedia.org/wiki/Divisão não ajuda muito: Porem a solução é semelhante a da multiplicação basta contar quantas vezes é possível subtrair o divisor do dividendo. TL;DR: Utilize recursão.
  6. HwapX

    colocar traços em escrita

    Se entendi corretamente seria isso: $hash = '4dff4ea340f0a823f15d3f4f01ab62eae05da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a'; //^ Indica o inicio do texto //(.{n}) Captura os próximos n caracteres. //(.+)$ Captura os caracteres restantes até o final do texto. $pattern = '/^(.{8})(.{4})(.{4})(.{4})(.+)$/'; // $n.. representa cada um dos grupos entre parenteses, onde n indica a posição do grupo no $pattern. $replacement = '$1-$2-$3-$4-$5'; $masked = preg_replace($pattern, $replacement, $hash); echo $masked; Você pode testar em https://3v4l.org/6bJSU.
  7. Não é possível referenciar um campo da tabela utilizando um parâmetro, da forma que você está fazendo a consulta executada está sendo. SELECT codFuncionario, nome, idade, cpf, endereco, numero, cep, telefone, codSetor FROM projetoestacionamento.funcionario WHERE /*:campo = :valor */ 'Campo selecionado' = 'Texto do Edit' AND excluido <> 'e' ORDER BY (codFuncionario) Está comparando dois valores do tipo string. A solução que me passa pela cabeça seria ajustar a consulta do qtester dependendo do campo selecionado, algo como: procedure Busca(campo:string); const cSQL: string = 'SELECT ' + ' codFuncionario, nome, idade, cpf, endereco, numero,cep, telefone,codSetor ' + 'FROM ' + ' projetoestacionamento.funcionario ' + 'WHERE ' + ' %s = :valor AND excluido <> ''e'' ' + 'ORDER BY ' + ' (codFuncionario)'; begin DM.qtester.Active :=false; //Dependendo do componente utilizado DM.qtester.SQL.Text pode ser DM.qtester.CommandText DM.qtester.SQL.Text := Format(cSQL, [campo]); { Equivalente a DM.qtester.SQL.Text := 'SELECT ' + ' codFuncionario, nome, idade, cpf, endereco, numero,cep, telefone,codSetor ' + 'FROM ' + ' projetoestacionamento.funcionario ' + 'WHERE ' + ' ' + campo + ' = :valor AND excluido <> ''e'' ' + 'ORDER BY ' + ' (codFuncionario)'; } DM.qtester.ParamByName('valor').Value := frmTabelaFuncionario.Edit1.Text;// PARAMENTRO VALOR, RECEBE A INFORMAÇÃO DO VALOR DE COMPARAÇÃO DM.qtester.Active := true ; frmTabelaFuncionario.gridExibeFuncionario.DataSource := DM.dsTester;// TABELA RECEBE A NOVA QUERY ADOTADA PARA EXIBIÇÃO end;
  8. HwapX

    Gerar nova Senha :Warning: mysqli_query() expects parameter 1 to be

    O erro ocorre pois no PHP variáveis globais não são acessíveis em outros escopos(http://php.net/manual/en/language.variables.scope.php) e você está tentando acessar a variável global $conecta no escopo da função recupera_senha. Para que ela seja acessível você deve declarar a intenção de uso com a palavra chave global. //... function recupera_senha($email){ global $conecta; //... Porem saliento que o uso de variáveis globais é desencorajado.
  9. Ajustei seu código, verifique. <!DOCTYPE html> <html> <head> <title>Constador de Pizzas</title> </head> <body> <!-- Metodo de envio --> <form method="POST"> <!-- inicio da tabela --> <table> <thead> <tr class="opcoes"> <th> <label for="mini">Mini:</label> </th> <th> <input type="button" class="decrementar" value="-"> <input type="button" class="incrementar" value="+"></th> <th> <input type="text" size="3" class="tamanho" name="mini" id="mini" value="0" readonly></th> </tr> <tr class="opcoes"> <th> <label for="pequena">Pequena:</label> </th> <th> <input type="button" class="decrementar" value="-"> <input type="button" class="incrementar" value="+"></th> <th> <input type="text" size="3" class="tamanho" name="pequena" id="pequena" value="0" readonly></th> </tr> <tr class="opcoes"> <th> <label for="media">Media:</label> </th> <th> <input type="button" class="decrementar" value="-"> <input type="button" class="incrementar" value="+"></th> <th> <input type="text" size="3" class="tamanho" name="media" id="media" value="0" readonly></th> </tr> <tr class="opcoes"> <th> <label for="grande">Grande:</label> </th> <th> <input type="button" class="decrementar" value="-"> <input type="button" class="incrementar" value="+"></th> <th> <input type="text" size="3" class="tamanho" name="grande" id="grande" value="0" readonly></th> </tr> <tr class="opcoes"> <th> <label for="gigante">Gigante:</label> </th> <th> <input type="button" class="decrementar" value="-"> <input type="button" class="incrementar" value="+"> </th> <th> <input type="text" size="3" class="tamanho" name="gigante" id="gigante" value="0" readonly></th> </tr> </thead> </table> <!-- Botão para enviar --> <button type="submit">Enviar</button> <!-- Fim da tabela --> </form> <script> function alterarValor(valor) { //https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/parseInt this.value = parseInt(this.value, 10) + valor;//Aplica o valor ao valor atual } var opcoes = document.querySelectorAll('.opcoes');//Pega os grupos de elementos de cada tamanho for(var i = 0; i < opcoes.length; i++) { var opcao = opcoes[i]; var botaoInc = opcao.querySelector('.incrementar'); //Pega o botão de incremento deste grupo var tamanho = opcao.querySelector('.tamanho'); //Pega o campo que armazena o valor var botaoDec = opcao.querySelector('.decrementar'); //Pega o botão de decremento deste grupo //https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Function/bind botaoInc.onclick = alterarValor.bind(tamanho, 1);//Anexa a função de incremento ao evento de click. botaoDec.onclick = alterarValor.bind(tamanho, -1);//Anexa a função de decremento ao evento de click. } </script> </body> </html> Você pode testar em https://jsfiddle.net/c11mepxq/.
  10. É que o script espera que cada grupo de botões esteja de dentro de um contêiner class="opcoes" distinto, para corrigir o problema basta remover o class="opcoes" da div e adicioná-lo em todos os tr.
  11. HwapX

    Como pegar valor depois da virgula de um float

    Só vai dar 2 duas unidades pois o zero a esquerda é insignificante e não é representado. Mas se você quiser imprimir zeros a esquerda pode fazer o seguinte. int pega_resto = resto_do_numero * 1000; cout << setfill('0') << setw(3) << pega_resto; setfill('0') define o caractere a ser usado para completar o tamanho informado por setw(3) que define o tamanho como sendo 3.
  12. HwapX

    Somar data do banco de dados a uma quantidade de dias

    Você utilizou a variável incorreta. //Aqui você seta a variável $data_pgto $data_pgto = htmlentities($row->proximo_pagto); ?> <!-- E aqui usa a variável $proximo_pagto --> <div><?=$proximo_pagto?></div> <?
  13. HwapX

    o que fiz de errado nesse programa?

    Existem erros nas três ultimas linhas. //Falta o ponto e virgula no final $perimetro= 2*($base+$altura); //Você deve concatenar a váriavel a ser impressa com o operador ponto(.) ou via interpolação //No caso especifico echo também é possível passar varios valores a serem impressos separados // por virgula o que é diferente de concatenação. //Concatenação com o operador ponto(.). echo "A area e de " . $area; echo "O perimetro e de " . $perimetro; //Ou concatenação via interpolação. echo "A area e de $area"; echo "O perimetro e de $perimetro"; //Ou no caso do echo você pode separar os valores a serem impressos por virgula. echo "A area e de ", $area; echo "O perimetro e de ", $perimetro;
  14. HwapX

    Como pegar valor depois da virgula de um float

    O operador de modulo(%) só realizada operações com inteiros. Na sua situação você pode utilizar a função fmod(http://www.cplusplus.com/reference/cmath/fmod/) disponível no cabeçalho cmath. float a = fmod(premio, 1); Ou utilizar sua segunda alternativa mesmo. float a = premio - int(premio); Se quiser recuperar a fração como um inteiro basta multiplicá-la por 10 elevado ao numero de casas decimais relevantes. int f = a * pow(10, 3); //ou int f = a * 1000; O detalhe é que você deve especificar a quantidade de casas relevantes.
  15. HwapX

    Somar data do banco de dados a uma quantidade de dias

    Você pode fazer isso na própria consulta. SELECT /* https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add */ data_pgto + INTERVAL 180 DAY AS proximo_pagto, /* ou https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_adddate */ ADDDATE(data_pgto, 180) AS proximo_pagto FROM tb_pagamentos_cartao ORDER BY id DESC LIMIT 1 Você pode testar o código acima em http://sqlfiddle.com/#!9/9eecb/26452. Ou utilizar a classe DateTime(http://php.net/manual/en/class.datetime.php) do PHP. //http://php.net/manual/en/class.datetime.php $proximo_pagto = new DateTime($dados['data_pgto']); //http://php.net/manual/en/datetime.add.php //http://php.net/manual/en/class.dateinterval.php $proximo_pagto->add(new DateInterval('P180D')); //http://php.net/manual/en/datetime.format.php echo $proximo_pagto->format('d/m/Y'); Não é recomendado mais também seria possível fazer o seguinte. //http://php.net/manual/en/function.strtotime.php $proximo_pagto = strtotime($dados['data_pagto'] . ' +180 days'); //http://php.net/manual/en/function.date.php echo date('d/m/Y', $proximo_pagto); Você pode testar os códigos acima em https://3v4l.org/uQMGt.
  16. HwapX

    Parâmetro opcional no meio da lista de parâmetros de uma função ou método

    Isso não é permitido, já houveram propostas para que isso fosse possível(como https://wiki.php.net/rfc/skipparams) mas foram rejeitadas. E na minha opinião situações que exigem isso normalmente são facilmente contornadas, por exemplo: Passando os parâmetros com arrays. function f($args) { $def = [ 'arg2' => 'default', 'arg3' => 1 ]; $args = array_merge($def, $args); //.... } Utilizando algum outro valor como coringa para indicar que o parâmetro não foi informado. function($arg1, $arg2 = null, $arg3 = null) { if($arg2 === null) $arg2 = 'default'; if($arg3 === null) $arg3 = 1; //.... } Mas eu acho que o ideal é simplesmente informar o parâmetro afinal o valor padrão só pode ser de um tipo básico e uma vez definido ele não deve ser alterado pois pode causar efeitos colaterais em outros locais em que ele é utilizado.
  17. HwapX

    Diferença entre datas Array

    Nesse caso basta ajustar as consultas e adicionar o lamp_Id ao group by. SELECT l_ligada.lamp_id, l_ligada.lamp_sec AS ligada_sec, MIN(l_desligada.lamp_sec) AS desligada_sec, MIN(TIMEDIFF(IFNULL(l_desligada.lamp_data, CURRENT_TIMESTAMP), l_ligada.lamp_data)) as tempo_ligada FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id = l_ligada.lamp_id AND l_desligada.lamp_estado = 0 AND l_desligada.lamp_sec > l_ligada.lamp_sec WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_sec, l_ligada.lamp_id ORDER BY l_ligada.lamp_sec ASC /*ou intervalo em segundos*/ SELECT l_ligada.lamp_id, l_ligada.lamp_sec AS ligada_sec, MIN(l_desligada.lamp_sec) AS desligada_sec, MIN(UNIX_TIMESTAMP(IFNULL(l_desligada.lamp_data, CURRENT_TIMESTAMP)) - UNIX_TIMESTAMP(l_ligada.lamp_data)) as tempo_ligada FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id = l_ligada.lamp_id AND l_desligada.lamp_estado = 0 AND l_desligada.lamp_sec > l_ligada.lamp_sec WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_sec, l_ligada.lamp_id ORDER BY l_ligada.lamp_sec ASC /*Ou */ SELECT l_ligada.lamp_id, l_ligada.lamp_sec AS ligada_sec, MIN(l_desligada.lamp_sec) AS desligada_sec, SEC_TO_TIME(MIN(UNIX_TIMESTAMP(IFNULL(l_desligada.lamp_data, CURRENT_TIMESTAMP)) - UNIX_TIMESTAMP(l_ligada.lamp_data))) as tempo_ligada FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id = l_ligada.lamp_id AND l_desligada.lamp_estado = 0 AND l_desligada.lamp_sec > l_ligada.lamp_sec WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_sec, l_ligada.lamp_id ORDER BY l_ligada.lamp_sec ASC A consulta acima pode ser testada em https://www.db-fiddle.com/f/8QeFNzPeGrN5ybhzQ5uPd1/0. No PHP você teria que agrupar por lampada, fora isso o que disse anteriormente continua se aplicando.
  18. HwapX

    [Resolvido] Não consigo conectar com o banco mysql

    A mensagem diz que a função mysql_connect não existe. Essa é uma função descontinuada a partir da versão 5.5 e removida no PHP 7, possivelmente na versão que você utiliza ela já foi removida ou sua instalação não está configurada para utilizá-la. Seja qual for a situação sugiro que passe a utilizar as funções da biblioteca MySQLi http://php.net/manual/en/book.mysqli.php a versão procedural dela funções iniciadas mysqli_*(repare o I adicional antes do underline) normalmente possuem parâmetros semelhantes. Com a troca seu código ficaria da seguinte forma: //... //http://php.net/mysqli_connect, http://php.net/mysqli_connect_error $conn = mysqli_connect($server,$user,$password) or die(mysqli_connect_error()); //http://php.net/mysqli_select_db, http://php.net/manual/en/mysqli.error.php mysqli_select_db($conn, $dbname) or die(mysqli_error($conn));
  19. HwapX

    clica e muda texto na DIV

    Como complemento a resposta do @JulinhoooO não é difícil fazer algo semelhante somente com JavaScript vanilla. <div id="content"> <button id="botao1">Botão 1</button> <button id="botao2">Botão 2</button> <button id="botao3">Botão 3</button> <div id="divmain"></div> </div> <script> var divMain = document.getElementById("divmain"); //Substitui o conteúdo document.getElementById("botao1").onclick = function(){ divMain.innerHTML = "Cliquei no botão 1"; }; //Adicionada o conteúdo no final document.getElementById("botao2").onclick = function(){ divMain.innerHTML += "Cliquei no botão 2"; }; //Adiciona o conteúdo no inicio document.getElementById("botao3").onclick = function(){ divMain.innerHTML = "Cliquei no botão 3" + divMain.innerHTML; }; </script> O código acima pode ser testado em https://jsfiddle.net/jhd8exqj/5/.
  20. HwapX

    Diferença entre datas Array

    Partindo do principio de que a tabela armazena somente o estado de uma única lampada você poderia recuperar a duração de cada intervalo em que a lampada ficou ligada com uma seguintes consultas. /*Retorna a diferença em segundos, você deve tratar a formação na sua aplicação*/ SELECT l_ligada.lamp_id AS ligada_id, MIN(l_desligada.lamp_id) AS desligada_id, MIN(UNIX_TIMESTAMP(IFNULL(l_desligada.lamp_data, CURRENT_TIMESTAMP)) - UNIX_TIMESTAMP(l_ligada.lamp_data)) as tempo_ligada FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id > l_ligada.lamp_id AND l_desligada.lamp_estado = 0 WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_id ORDER BY l_ligada.lamp_id ASC /*Ou, retorna a diferença como TIME o valor maximo é 838:59:59 https://dev.mysql.com/doc/refman/5.7/en/time.html)*/ SELECT l_ligada.lamp_id AS ligada_id, MIN(l_desligada.lamp_id) AS desligada_id, SEC_TO_TIME(MIN(UNIX_TIMESTAMP(IFNULL(l_desligada.lamp_data, CURRENT_TIMESTAMP)) - UNIX_TIMESTAMP(l_ligada.lamp_data))) as tempo_ligada FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id > l_ligada.lamp_id AND l_desligada.lamp_estado = 0 WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_id ORDER BY l_ligada.lamp_id ASC /*Ou, retorna a diferença como TIME o valor maximo é 838:59:59 https://dev.mysql.com/doc/refman/5.7/en/time.html)*/ SELECT l_ligada.lamp_id AS ligada_id, MIN(l_desligada.lamp_id) AS desligada_id, MIN(TIMEDIFF(IFNULL(l_desligada.lamp_data, CURRENT_TIMESTAMP), l_ligada.lamp_data)) as tempo_ligada FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id > l_ligada.lamp_id AND l_desligada.lamp_estado = 0 WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_id ORDER BY l_ligada.lamp_id ASC Você pode testar as consultas acima em http://sqlfiddle.com/#!9/bfe330/5. Partindo de uma consulta semelhante você poderia calcular a diferença diretamente no PHP. SELECT l_ligada.lamp_id AS id_ligada, MIN(l_desligada.lamp_id) AS id_desligada, l_ligada.lamp_data AS ligada_em, MIN(l_desligada.lamp_data) AS desligada_em FROM `lampadas_rel` AS l_ligada LEFT JOIN lampadas_rel AS l_desligada ON l_desligada.lamp_id > l_ligada.lamp_id AND l_desligada.lamp_estado = 0 WHERE l_ligada.lamp_estado = 1 GROUP BY l_ligada.lamp_id, l_ligada.lamp_data ORDER BY l_ligada.lamp_id ASC Dessa forma você poderia calcular a diferença com o método diff(http://php.net/manual/en/datetime.diff.php) da classe DateTime(http://php.net/manual/en/class.datetime.php) e formatá-lo posteriormente com o método format(http://php.net/manual/en/dateinterval.format.php) classe DateInterval(http://php.net/manual/en/class.dateinterval.php). //http://php.net/manual/en/class.datetime.php $ligada_em = new DateTime($row->ligada_em); $desligada_em = new DateTime($row->desligada_em); //http://php.net/manual/en/datetime.diff.php $intervalo = $ligada_em->diff($desligada_em); //http://php.net/manual/en/dateinterval.format.php echo $intervalo->format('%D/%M/%Y %H:%I:%S'); Porem se você não deseja alterar a consulta, pode fazer o seguinte no PHP. $sql = "SELECT * FROM lampadas_rel ORDER BY lamp_id ASC"; //... $periodos = []; $periodo = []; while($row = $result->fetch_assoc()){ if($row->lamp_estado) { $periodo['ligada_em'] = new DateTime($row->lamp_data); } else { $periodo['desligada_em'] = new DateTime($row->lamp_data); $periodo['intervalo'] = $periodo['ligada_em']->diff($periodo['desligada_em']); $periodos[] = $periodo; $periodo = []; } } if($periodo) { $periodo['desligada_em'] = new DateTime(); $periodo['intervalo'] = $periodo['ligada_em']->diff($periodo['desligada_em']); $periodos[] = $periodo; } Dessa forma você irá ter um array com todos os períodos que lampada ficou acesa. Não vou entrar em detalhes sobre como obter o tempo total, mas você pode conseguir utilizando o SUM no MySQL ou com algum "hack" utilizando dois objetos DateTime e o método add no PHP(https://stackoverflow.com/questions/11556731/how-we-can-add-two-date-intervals-in-php).
  21. HwapX

    Mensagem de aviso em arquivo excel exportado em PHP

    O que eu posso dizer é que de fato o que você está exportando não é um formato XLS válido e sim um HTML(ainda que não esteja seguindo a especificação) que o Excel também é capaz de reconhecer dai a mensagem dizendo que o formato não corresponde a extensão. A menos que você ajuste seu código ou utilize uma biblioteca para seguir a especificação não há nada que possa ser feito pois se você salvá-lo como HTML ele não será mais aberto pelo Excel por padrão. Na Wikipedia você tem um resumo dos formatos e suas respectivas extensões https://en.wikipedia.org/wiki/Microsoft_Excel.
  22. HwapX

    Consulta de dados

    Sim, realize todas as alterações(inserts, updates, deletes) e execute o commit em seguida.
  23. HwapX

    Consulta de dados

    Provavelmente você esqueceu de executar o COMMIT(https://docs.oracle.com/cd/E17781_01/appdev.112/e18147/tdddg_dml.htm#TDDDG24100), comando necessário para que suas alterações se tornem persistentes.
  24. HwapX

    Diferença entre datas Array

    lamp_id é a chave primária da tabela ou identifica lampadas distintas e lamp_sec é uma sequencia incremental, ou ele agrupa o evento de ligar e desligar, ou identifica lampadas distintas? Se for possível e do seu interesse publique o esquema da tabela lampadas_rel junto de alguns dados de exemplo, pois talvez você possa conseguir essa informação diretamente do banco, seja com uma consulta que calcule o tempo entre cada registro ou pré calculando via triggers.
  25. HwapX

    Medir imagem

    Se você está falando do tamanho da imagem basicamente você deve ler as dimensões da imagem em pixels e dividi-las pelo DPI, assim você conseguirá o tamanho em polegas depois basta converter em centímetros ou milímetros. No PHP, você pode utilizar os a extensão Imagick. Os métodos relevantes são: //http://php.net/manual/pt_BR/imagick.setimageunits.php Imagick::setImageUnits($units); //Define o tipo de unidade de medida que você vai trabalhar //Onde $units deve ser imagick::RESOLUTION_PIXELSPERINCH ou imagick::RESOLUTION_PIXELSPERCENTIMETER //http://php.net/manual/pt_BR/imagick.getimageresolution.php Imagick::getImageResolution //Retorna um array com os indices x e y contendo a quantidade de pixels na medida defina com o método setImageUnits http://php.net/manual/en/imagick.getimagegeometry.php Imagick::getImageGeometry //Returna um array com os indices width e height contendo o tamanho da imagem em pixels. Caso não possua acesso a extensão Imagick você pode tentar extrair os metadados dos diferentes tipos de imagens(como este exemplo para jpg do stackoverflow https://stackoverflow.com/a/12988682), mas isso é outra história. Não encontrei um meio de ler o DPI utilizando a extensão GD. Agora se você quer reconhecer objetos na imagem e extrair suas medidas a coisa já fica bem mais complicada, provavelmente você irá precisar recorrer a APIs externas para isso.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.