Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

zurczurc

[Resolvido] Cálculos com ComputerTime da nulo

Recommended Posts

Ola amigos é o meu primeiro tópico, obrigado a todos.

Meu problema :

 

pego uma data no formato ComputerTime do meu banco de dados mysql e subtraio do time().

 

minha função :

//####################################################################################################
// Rotina que pega os dados do Banco de Dados Mysql #
//####################################################################################################

$connect = mysql_connect("localhost","root", "xxxxxxxxx") or die(mysql_error());

function pega_dados_mysql($bancodedados, $coluna_tabela, $tabela)
{
    $db = mysql_select_db("$bancodedados") or die(mysql_error());
    $row = mysql_query("SELECT $coluna_tabela FROM $tabela ORDER BY ComputerTime Desc LIMIT 1");
    $Temps = mysql_fetch_row($row);
    $Temp = (json_encode($Temps));
    $tempp = $Temp;
    $Temp = str_replace('["', '', $tempp);
    $tempp = $Temp;
    $Temp = str_replace('"]', '', $tempp); 

    $RTT = ((time())- $Temp); //pega o tempo do meu banco de dados mysql e subtrai da hora atual.

    return $RTT; 
}

chamada da função : $DIFERHORA = pega_dados_mysql(meubancodedados,ComputerTime,nome_da_minha_tabela); 

para algumas tabelas a variável $DIFERHORA retorna a diferença de time() - o tempo pego da tabela do meu mysql , retorna um valor correto, mas para outras tabelas o valor volta vazio. Todas as tabelas tem exatamente o mesmo formato e dados. Acho que algum problema de conversão .

 

Alguém poderia me dar uma ajuda.

 

Obrigado

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
$RTT = ((time())- $Temp); //pega o tempo do meu banco de dados mysql e subtrai da hora atual.

o que a variável $Temp está retornando? qual formato?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Em 31/03/2018 at 22:01, zurczurc disse:

[...] retorna um valor correto, mas para outras tabelas o valor volta vazio [...]

 

 

Traga-nos as DDLs das tabelas e alguns valores de exemplos para podermos avaliar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como foi criado o banco de dados e as tabelas no mysql :

create database quarto;

create table QTempUmid (ComputerTime INTEGER UNSIGNED, Temperatura FLOAT, Umidade FLOAT);

create table CTempUmid (ComputerTime INTEGER UNSIGNED, Temperatura FLOAT, Umidade FLOAT);

create table STempUmid (ComputerTime INTEGER UNSIGNED, Temperatura FLOAT, Umidade FLOAT);

 

Conteudo de uma das tabelas :

                 

ComputerTime    temperatura    umidade

Exemplo :    1514720101              27                 87

 

Chamada da função :  pegaparametros  = pega_dados_mysql(quarto,ComputerTime,QTempUmid);

 

As vezes volta o valor correto e outras vezes volta vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso validar algumas coisas ainda.

 

Faça o seguinte var_dump em uma chamada que não calcula corretamente o valor:

var_dump($Temps , $tempp);

Pode ser adicionado ao final da função, antes da chamada do "return". Traga-nos os valores.

 

Agora umas considerações:

 

Qual a finalidade do código abaixo?

 

Em 31/03/2018 at 22:01, zurczurc disse:

 


$Temp = (json_encode($Temps));
$tempp = $Temp;
$Temp = str_replace('["', '', $tempp);
$tempp = $Temp;
$Temp = str_replace('"]', '', $tempp); 

 

 

 

Pois, se você quer apenas pegar o valor, pode ser feito da seguinte forma:

$Temps = mysql_fetch_row($row);
$Temps[0];

Ou

$Temps = mysql_fetch_assoc($row);
$Temps[$coluna_tabela];

 

É importante substituir as funções mysql_* , pois, elas estão obsoletas desde a versão 5.5 do PHP e removidas na versão 7. Utilize MySQLi ou PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro eu alterei como sugerido a função :

 

$connect = mysql_connect("localhost","root", "xxxxxxxxx") or die(mysql_error());

function pega_dados_mysql($bancodedados, $coluna_tabela, $tabela)
{
    $db = mysql_select_db("$bancodedados") or die(mysql_error());
    $row = mysql_query("SELECT $coluna_tabela FROM $tabela ORDER BY ComputerTime Desc LIMIT 1");
    $Temp = mysql_fetch_assoc($row);
    $Temp[0];
    $RTT = ((time())- $Temp); //pega o tempo do meu banco de dados mysql e subtrai da hora atual.

    return $RTT; 
}

fazendo o var_dump($Temp) o valor retornado da tabela é vazio .   O valor que estou lendo tem uma data e hora no formato computer time, mas por algum motivo volta vazio somente para algumas tabelas.

 

mysql> SELECT * FROM TempExame  ORDER BY ComputerTime Desc LIMIT 1;
+------------------------+---------------------+---------------+------+
| ComputerTime | Temperature | Humidity | id   |
+------------------------+---------------------+---------------+------+
|   1522849505  |           17.2       |     69.3     | 199|
+------------------------+---------------------+---------------+------+
1 row in set (0.03 sec)

 

A variável deveria retornar 1522849505 mas volta vazia.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reveja os exemplos que eu passei. Se tu usar mysql_fetch_assoc, tem que usar o nome da coluna. Se tu usar mysql_fetch_row, ai tu usa o índice numérico.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa estou usando o certo.

 

$connect = mysql_connect("localhost","root", "xxxxxxxxx") or die(mysql_error());

function pega_dados_mysql($bancodedados, $coluna_tabela, $tabela)
{
    $db = mysql_select_db("$bancodedados") or die(mysql_error());
    $row = mysql_query("SELECT $coluna_tabela FROM $tabela ORDER BY ComputerTime Desc LIMIT 1");
    $Temp = mysql_fetch_row($row);
    $Temp[0];
    $RTT = ((time())- $Temp); //pega o tempo do meu banco de dados mysql e subtrai da hora atual.

    return $RTT; 
}

fazendo o var_dump($Temp) o valor retornado da tabela é vazio .   O valor que estou lendo tem uma data e hora no formato computer time, mas por algum motivo volta vazio somente para algumas tabelas.

 

mysql> SELECT * FROM TempExame  ORDER BY ComputerTime Desc LIMIT 1;
+------------------------+---------------------+---------------+------+
| ComputerTime | Temperature | Humidity | id   |
+------------------------+---------------------+---------------+------+
|   1522849505  |           17.2       |     69.3     | 199|
+------------------------+---------------------+---------------+------+
1 row in set (0.03 sec)

 

A variável deveria retornar 1522849505 mas volta vazia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima a query que a sua função está executando e execute diretamente no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja estou substituindo as variáveis para pegar o dado da tabela que ta dando o problema.

 

mysql> SELECT ComputerTime FROM TempExame ORDER BY ComputerTime Desc LIMIT 1;
+------------------------+
| ComputerTime |
+------------------------+
|   1522857863   |
+------------------------+
1 row in set (0.00 sec)
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual o resultado do var_dump (que está alguns posts acima)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vazio, não volta nada, mas nesse banco de dados tem outras tabelas idênticas e volta o dado do ComputerTime.

As tabelas são idênticas em tudo a unica diferença os valores da temperature e humidity .

 

Ja paguei a tabela e recriei e continua dando vazio, se eu pegar a coluna temperature ou humidity  os dados voltam corretos, o problema acontece só no campo ComputerTime.

 

Formato da tabela:

 

mysql> show columns from TempExame;
+-------------------------------+-----------------------------+-------+-------+------------+---------+
| Field                           | Type                        | Null | Key | Default | Extra |
+-------------------------------+-----------------------------+-------+-------+------------+---------+
| ComputerTime         | int(10) unsigned   | YES  |        | NULL    |           |
| Temperature             | float                        | YES  |        | NULL    |           |
| Humidity                    | float                        | YES  |        | NULL    |           |
| id                                 | int(11)                    | YES  |        | NULL    |           |
+--------------------------------+----------------------------+--------+------+------------+---------+
4 rows in set (0.07 sec)
 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consigo imaginar o que está ocorrendo. De qualquer forma, gostaria que você trouxesse aqui exatamente o retorno que for feito pelo var_dump. Preciso verificar algumas coisas.

 

Utilize a função abaixo e traga o retorno do var_dump

function pega_dados_mysql($bancodedados, $coluna_tabela, $tabela)
{
    $db = mysql_select_db("$bancodedados") or die(mysql_error());
    $sql = "SELECT $coluna_tabela FROM $tabela ORDER BY ComputerTime Desc LIMIT 1";
    $row = mysql_query($sql);
    $Temp = mysql_fetch_row($row);

    var_dump($bancodedados, $coluna_tabela, $tabela , $sql , $Temp);

    $RTT = ((time())- $Temp[0]); //pega o tempo do meu banco de dados mysql e subtrai da hora atual.

    return $RTT; 
}

Também fiz uma correção no uso da variável $Temp que estava faltando no seu último código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, ele é o próprio debug.

 

Por exemplo, este código:

<?php

$b = 3.1;
$c = true;
var_dump($b, $c);

A saída será:

float(3.1)
bool(true)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela explicação.

 

Saída da var_dump

 

string(22) "fhchoi_com" string(12) "ComputerTime" string(9) "TempExame" string(69) "SELECT ComputerTime FROM TempExame ORDER BY ComputerTime Desc LIMIT 1" array(1) { [0]=> string(10) "1522942397" }

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valor está sendo retornado:

array(1) { [0]=> string(10) "1522942397" }

E o cálculo, como está agora (com a última alteração), está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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