Jump to content
biakelly

Cálculo dinâmico utilizando valor recuperado de uma api

Recommended Posts

Oi, vim do fórum de PHP,  eu havia postado uma dúvida lá, mas acredito e por recomendação que minha dúvida seja melhor aplicada aqui.

 

Bem, estou fazendo uma página que precisa ter a cotação do Bitcoin.

Nesta pagina preciso de 2 inputs um que traga o preço do bitcoin e outro que traga o preço em real.

Ex: 1 Bitcoin custa R$ xxx,00 reais (valor padrão)

 

Mas ao digitar R$100,00 no campo real ele precisa trazer o preço equivalente a quantidade de Bitcoins que vale R$100,00

O mesmo para o Bitcoin, se eu digitar uma fração ele precisaria trazer o valor em Reais.

 

Encontrei um site que faz isso (https://dolarhoje.com/bitcoin-hoje/), mas queria algo para minha página parecido

 

 

Bem, até consigo pegar o valor com este código simples em PHP:

 

<?php
$url = 'https://www.mercadobitcoin.net/api/btc/ticker';
$result = file_get_contents($url);
$result = json_decode($result, true);
?>

 

Será que em Javascript é possível fazer isso? Desculpem, entendo quase zero de Javascript

Vocês conseguem me ajudar?

Share this post


Link to post
Share on other sites
const url = "https://www.mercadobitcoin.net/api/btc/ticker";

async function fetchBitcoinTickerJSON() {
  const response = await fetch(url);
  return await response.json();
}

fetchBitcoinTickerJSON().then(data => {
  console.log(data)
});

 

Share this post


Link to post
Share on other sites

Oi Wanderval, obrigada pelo retorno.

 

Desculpe minha pergunta, como chamo nestes inputs com Javascript. Desculpe se eu estiver abusando na pergunta

Share this post


Link to post
Share on other sites

Manipular o input não é dificil, mas não acho que essa API de o suporte que você precisa!

 

Pelo que entendi você quer enviar um currency de "Real" BRL e receber o valor calculado de bitcoin. 

A API que você colocou acredito que somente informe dados de bitcoin, relacionado a transações de mercado.

não vi na doc uma forma de enviar um currency, então se esse é seu objetivo então vai ter que usar outra API

 

Share this post


Link to post
Share on other sites

Humm, pelo que entendi pelo valor do Bitcoin da para descobrir a fração tem que fazer assim:

 

R$1.000,00 = 1000/Bitcoin (valor atual)

 

Exemplo 1000 / 167096.00 = 0,005984583712357 (essa é a fração de bitcoin que custa R$1.000,00)

Share this post


Link to post
Share on other sites

Legal ficar sabendo disso,

Abaixo eu vou deixar um código com uma lógica básica manipulando o primeiro input!

Html:

<body>
  <div>
    <input id="currency" onBlur="calcBitCoinValue()"/>
    <input id="bitcoin"/>
  </div>
</body>

JS:

let currentBitcoinValue = 0;
let currentCurrencyValue = 0;

function fetchBitcoinTickerJSON() {
  const url = "https://www.mercadobitcoin.net/api/btc/ticker";
  
  fetch(url)
    .then(response => response.json())
    .then(data => {
        currentBitcoinValue = data.ticker.buy;
     });
}

function init() {
  fetchBitcoinTickerJSON();
}

function calcBitCoinValue() {
  const bitCoin = document.getElementById("bitcoin");
  const realValue = parseFloat(document.getElementById("currency").value);
  
  bitCoin.value = realValue/currentBitcoinValue;
}

init();

Link JsBin: https://jsbin.com/yunimovuda/edit?html,js,output

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Kefatif
      Prezados, boa tarde.
       
      Preciso de ajuda com dois casos...
       
      1) Preciso criar dois botões "habilitar" e "desabilitar".
       
      Onde ao clicar no botão habilitar, ele grave no banco mysql no campo habilitado "S" para habilitado e "N" caso clique no desabilitar.
       
      2) A segundo etapa seria ao carregar a página do input ele habilitar ou não de acordo com a informação do meu banco.
       
      Agradeço desde já a ajuda de todos.
    • By Jack Oliveira
      Ola pessoal  boa noite..
      Vou tentar explicar aqui o meu problema da melhor forma que der, espero que possam entender...
       
      Amigos eu estou tendo um problema em fazer uma atualização 
      Bom quando vou cadastrar da sucesso e é gravado normal no banco de dados ate ai esta ok..
       
      Seria  o seguinte dentro de um form ele gera linhas ou seja + inputs caso seja preciso entende? Usando javascript´s, quando vou atualizar as informações que esta nas tabelas ou seja
      são 3 tabelas 
      tbl_department 
      dep_id
      nome
      news etc....
       
      tbl_department_openning_hour
      hou_id
      titulo
      time
      dep_id  <-- Aqui onde pega o id da tabela tbl_department
       
       
      tbl_department_faq
      faq_id
      titulo
      conteudo
      dep_id  <-- Aqui onde pega tbm o id da tabela tbl_department
       
      Obs: Ele Grava normal no banco de dados, porem quando atualizar que não esta dando certo, e é preciso que seja atualizado todos os input das tabelas tbl_department_faq e tbl_department_openning_hour. Acredito que já entenderam aqui umas das parte que seria preciso.
       
      Bom vou posta uma parte do HTML  do FORM para melhor entender o que seria ok!!, Sei que não tem nada a ver com o PHP, mais como tinha dito apenas para melhor entender..
      <?php $dep_id = get('EditarItem'); $QueryTblDepartment = DBRead('tbl_department','*',"WHERE dep_id = '{$dep_id}'"); if (is_array($QueryTblDepartment)) { foreach ($QueryTblDepartment as $TblDepartment) { ?> <form method="post" action="?Atualizar=<?= $TblDepartment['dep_id']; ?>" enctype="multipart/form-data"> <div class="col-md-6"> <div class="form-group"> <label>Titulo:</label> <input class="form-control" name="dep_name" value="<?= $TblDepartment['dep_name']; ?>" placeholder="Exemplo: Globo City" autocomplete="off" required> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>Telefone:</label> <input class="form-control telefone" name="dep_phone" value="<?= $TblDepartment['dep_phone']; ?>" placeholder="Exemplo: (00) 0000-0000" autocomplete="off"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>WhatsApp:</label> <input class="form-control whatsapp" name="dep_whatsapp" value="<?= $TblDepartment['dep_whatsapp']; ?>" placeholder="Exemplo: (00) 0.0000-0000" autocomplete="off"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>Fax:</label> <input class="form-control" name="dep_fax" value="<?= $TblDepartment['dep_fax']; ?>" placeholder="Exemplo: (00) 0000-0000" autocomplete="off"> </div> </div> <div class="form-group"> <label>Seção de FAQ:</label> <table id="fqSection" class="table table-bordered table-striped"> <thead> <tr> <th style="width:50%;">Titulo</th> <th>Contente</th> <th>Ação</th> </tr> </thead> <tbody> <?php //Departamento FAQ $QueryDepartamentoFaq = DBRead('tbl_department_faq','*',"WHERE dep_id='{$dep_id}'"); if (is_array($QueryDepartamentoFaq)) { foreach ($QueryDepartamentoFaq as $Fa) { $arr_fq_id[] = $Fa['fq_id']; $arr_fq_title[] = $Fa['fq_title']; $arr_fq_content[] = $Fa['fq_content']; }} if(isset($arr_fq_title)): for($i=0;$i<count($arr_fq_title);$i++) { ?> <tr> <td> <input autocomplete="off" type="text" class="form-control" style="width:100%" name="fq_title" value="<?= $arr_fq_title[$i]; ?>"> </td> <td> <textarea class="form-control" cols="30" rows="10" style="width:100%;height:50px;" name="fq_content"><?= $arr_fq_content[$i]; ?></textarea> </td> <td> <span class="btn btn-danger btn-xs"><a onclick="DeletarItem(<?= $arr_fq_id[$i]; ?>, 'DeletarFaq');" href="#!" style="color: #fff;">Excluir</a></span> </td> </tr> <?php //}} } endif; ?> </tbody> </table> <!-- Aqui para criar novos input para serem gravado no banco caso seja preciso --> <input type="button" class="btn btn-info btn-small" id="btnAddFaq" value="+ Adicionar linha" style="margin-bottom:10px;"> </div> <center><hr> <button class="btn btn-primary">Atualizar</button> <br><br> </center> </div> </form> <?php } } ?> Bom ai esta apenas um pouco do form tem mais coisa que seria igual o que preciso resolver
       
      Agora a parte do PHP que preciso resolver, vou posta apenas uma parte para poder entender tbm
       
      <?php // Atualizar Item de Departamento if (isset($_GET['Atualizar'])) { $dep_id = get('Atualizar'); $fq_empty = 0; if( !empty($_POST['fq_title']) && !empty($_POST['fq_content']) ) { $fq_empty = 1; foreach ($_POST['fq_title'] as $value) { //Sempre mostra o erro nesta linha $arr1[] = $value; } foreach ($_POST['fq_content'] as $value) { //Sempre mostra o erro nesta linha $arr2[] = $value; } $j=0; for($i=0;$i<count($arr1);$i++) { //Sempre mostra o erro nesta linha if($arr1[$i]=='' && $arr2[$i]=='') {continue;} else { $new_arr1[$j] = $arr1[$i]; $new_arr2[$j] = $arr2[$i]; $j++; } } } $AtualizarDepartment = array( 'dep_name' => post('dep_name'), 'dep_slug' => UrlAmigavel(post('dep_name')), 'dep_detail' => post('dep_detail'), 'dep_address' => post('dep_address'), 'dep_phone' => post('dep_phone'), 'dep_whatsapp' => post('dep_whatsapp'), 'dep_fax' => post('dep_fax'), 'dep_email' => post('dep_email'), 'meta_title' => post('dep_name'), 'meta_keyword' => post('meta_keyword'), 'meta_description' => LimitarTexto(post('dep_detail'),'200','...') ); $QueryTblDepartment = DBUpdate('tbl_department', $AtualizarDepartment, "dep_id = '{$dep_id}'", TRUE); if ($QueryTblDepartment != 0) { Redireciona('?sucesso&Department'); } else { Redireciona('?erro&Department'); } // Atualizar tbl_department_faq if($fq_empty == 1) { for($i=0;$i<count($new_arr1);$i++) { $TblDepartmentFaq = array( 'fq_title' => $new_arr1[$i], 'fq_content' => $new_arr2[$i], 'dep_id' => $dep_id ); $QueryTblDepartmentFaq = DBUpdate('tbl_department_faq', $TblDepartmentFaq, "dep_id = '{$dep_id}'"); } } if ($QueryTblDepartmentFaq != 0) { Redireciona('?sucesso&AtualizarFaq'); } else { Redireciona('?erro&AtualizarFaq'); } // Criar Novo input para tbl_department_faq if($fq_empty == 1) { for($i=0;$i<count($new_arr1);$i++) { $SqlFaq = array( 'fq_title' => $new_arr1[$i], 'fq_content' => $new_arr2[$i], 'dep_id' => $QueryTblDepartment ); $QueryFaq = DBRead('tbl_department_faq', $SqlFaq); } } if ($QueryFaq != 0) { Redireciona('?sucesso&Faq'); } else { Redireciona('?erro&Faq'); } } Neste caso ao mesmo tempo que teria que atualizar a
      tbl_department_faq
      faq_id
      titulo
      conteudo
      dep_id  <-- Aqui onde pega tbm o id da tabela tbl_department
       
      Ele precisa grava caso seja preciso criar nova linha ou seja criar novo input para atualizar junto entende?
       
      Pessoal espero que eu tenha sido bem objetivo aqui para que possam entender....
       
      Desde já agradeço
    • By Sapinn
      Eu tenho um form e toda vez que alguém clicar no input eu quero que a borda de baixo mude a cor e quando ele clicar fora quero que volte ao normal quero isso para todos os campo de todos os foms que eu tiver
    • By fideles
      Fala pessoal, tudo tranquilo?
       
      Venho recorrer a vós pois já não consigo mais.... 
       
      Tenho um campo select com algumas opções de nome.
      <select class="seleciona_nome"> <option value="Joao">Joao</option> <option value="Julio">Julio</option> <option value="Pedro">Pedro</option> </select>  
      E um campo input do tipo "text"
      <input type="text" class="opcaoSelect" autocomplete="off" disabled="disabled">  
      Preciso que ao selecionar uma opção do "Select" seja auto preenchido no input. Tenho um codigo que funcionava e não sei mais porque não funciona, veja abaixo;
       
      <script> $(document).ready(function(){ $('.seleciona_nome').on('change', addOption); }); function addOption(){ $('.opcaoSelect').val(this.value); } </script>  
      Peço ajuda ai caso alguém consiga me ajudar a entender porque este não funciona mais.
       
      Obrigado.
       
    • By kaioneresm
      Olá, tenho um formulario que pede um nome de usuário.
      Preciso que ao tentar digitar o espaço do teclado ele não funcione. Ou seja o input text bloquea no mesmo momento que for digiado.
       
      Alguem pode me ajudar? Obrigado !!
×

Important Information

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