Ir para conteúdo

Matheus Tavares

Moderadores
  • Total de itens

    1861
  • Registro em

  • Última visita

  • Dias vencidos

    32

Tudo que Matheus Tavares postou

  1. Matheus Tavares

    Desenvolvimento App Conforto Térmico

    Olá amigo, seja bem-vindo. Será que não existe uma fórmula matemática para se chegar às classificações da tabela? Algo como uma equação que lhe retornasse um coeficiente que poderia ser associado a um grau de estresse térmico. Minha primeira sugestão seria resolver esse problema matematicamente, mas se você me disser que a única fonte de consulta é essa tabela estática, infelizmente sua melhor alternativa é armazenar manualmente esses dados em forma de conjuntos de dados, como arrays, classes ou mesmo banco de dados. Exemplo: 44,4 graus, umidade de 40%. Percorremos até o indíce do eixo X (coluna) 4 (começando em 0). Depois percorremos até o índice Y (linha) referente a 44,4 graus. Nesse exemplo temos o valor de 94, que seria severo, se não entendi nada errado na tabela. Daí você podería perguntar: mas a temperatura que eu tenho aqui é 44,3. Como acesso esse índice, se minha tabela contempla apenas 43,9 e 44,4? Você pode resolver isso no PHP dessa forma. Basta você converter a lógica para a sua linguagem de preferência. <?php $temperatura = 44.3; $a = 43.9; $b = 44.4; // abs é o módulo do número, na matemática // a saída neste exemplo é 44.4, mas se $temperatura fosse 44, por ex, seria 43.9 echo abs( $b - $temperatura ) < abs( $a - $temperatura ) ? $b : $a; Não entendo nada do assunto, mas encontrei isso aqui também. Será que não ajuda? https://www.youtube.com/watch?v=L4Mkd4tMBi4 Boa sorte :)
  2. Matheus Tavares

    pagamento em dolar utilizando api 3.0 cielo

    Olá @augustocesar. Em relação aos parâmetros que citei no meu post anterior, eles são mencionados na documentação da Cielo (seção Meios de Pagamento -> Cartão de Crédito -> Transação completa -> Requisição). Se você quer cobrar 5 dólares, deveria bastar você informar a Currency USD e o Amount 5, conforme expliquei, mas talvez a Cielo exija a ativação de algum serviço para fazer cobranças internacionais. Infelizmente a documentação da Cielo é muito estranha mesmo. Nunca fiz cobrança em dólares, mas já implementei a Cielo alguns anos atrás e lembro de ter passado por boas dificuldades também. O que encontrei foi isso (é sobre maquininha, mas talvez tenha relação com o serviço de API): https://www.cielo.com.br/venda-mais/cieloconversor/ https://blog.cielo.com.br/2020/04/29/como-vender-em-moeda-internacional/ Pelo que entendi o Conversor é para fazer cobrança em reais para clientes estrangeiros. Veja o item 1 do segundo link: Agora, o que eu não entendi foi que você disse no seu primeiro post: Pelo que entendi você cobrou 500 (pois multiplicou 100 centavos de dólar por 5), e a Cielo cobrou 5 dólares e não 1 dólar. Mas nesse caso, por que você não deixa de fazer essa multiplicação, passando a cobrar 1 USD corretamente? Talvez eu tenha entendido mal alguma unidade ou sua explicação, mas pelo que entendi é somente essa multiplicação que está incorreta. Minha sugestão final seria a seguinte: não sei quanto à legislação ou a respeito da experiência para o usuário, mas se você não ver problemas, pode pegar a cotação do dia e sempre cobrar em reais. Nesse caso seu problema estaria resolvido, ao meu ver. No caso, Currency sempre BRL, Amount sempre *Cotação* x Valor. Infelizmente não tenho como ajudar você além disso, pois não tive essa experiência, mas fiquei curioso em relação aos desdobramentos desse problema. Se você puder, retorne aqui quando encontrar a solução. Boa sorte!
  3. Matheus Tavares

    header

    Olá @Biel.. Creio que você esteja confundindo a ordem de execução. Primeiro o PHP executa as instruções do seu arquivo .php. Ele é encarregado pela lógica e matemática da coisa, e quem é responsável por essa execução é o servidor de hospedagem. Após a finalização desse processo, tudo o que for gerado de corpo, marcação e texto (HTML) é encaminhado ao navegador, que se encarrega de executá-lo e renderizá-lo. Em outras palavras, o servidor executa o PHP. O usuário executa o HTML. São camadas totalmente separadas. Uma vez que o navegador não tem acesso a absolutamente nenhum código PHP, não há formas de fazer um redirecionamento "programado" utilizando o PHP, e é para esse fim que utilizamos o Javascript. O Javascript é a linguagem que nos dá poderes de executar lógica no navegador, ao invés de apenas marção e estilos (html/css). Como você quer que o usuário vá para a index.php quando clicar no botão, tudo o que você precisa fazer é alterar o href do seu link. No caso ficaria assim: <a href="index.php">pagina1.php</a> Com JS isso poderia ser feito assim: <script> function redirecionar() { document.location.href = 'index.html'; } </script>
  4. Matheus Tavares

    Somar valores sorteados por um dado

    Olá @Felper. Seja bem-vindo. Acredito que você esteja querendo fazer uma operação de soma, ou seja, um incremento na variável que você definiu nas primeiras linhas. Isso você pode fazer assim: let somadado = 0; let valorsorteado = 5; somadado += 3; valorsorteado += 10; // somadado agora será 3 e valorsorteado será 15 // outra forma: somadado = somadado + 3; valorsorteado = valorsorteado + 10;
  5. Matheus Tavares

    [Resolvido] Somar dados recuperados de uma API

    Então... você pode dar uma ollhadinha na API da Binance também. Pelo que vi, bem rapidamente, é bem completa e abrange diferentes moedas e protocolos. https://binance-docs.github.io/apidocs/spot/en/#introduction Entendi. E baseado nesse link: https://api.trongrid.io/v1/contracts/TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq/tokens?only_confirmed=true&amp;only_unconfirmed=true&amp;order_by=balance,desc&amp;limit=200 O que representa a chave e o que é o valor? Explique como se fosse para um primata alfabetizado Exemplo: {"TLRt2GZrfxBsYWjsh7wjmZbXT3WKMoEws9":"48706920457628000000"} Amanhã se eu conseguir um tempinho eu dou uma olhada com mais atenção nisso, mas precisava de mais informações, pois não entendi o retorno desse endpoint. É uma falha dessa API não facilitarem a navegação por páginas. Eles dizem que é necessário informar o range de timestamp, mas não temos a informação do timestamp do último item desse conjunto para fazer o que eu disse anteriormente. Minha suspeita é de que devemos fazer uma consulta específica no último registro do conjunto retornado (se eu descobrir exatamente qual endpoint deve ser consultado). Daí pegamos o timestamp e prosseguimos com a lógica de filtro do tempo. Você saberia consultar um desses registros, como esse que colei acima, para ver os detalhes dele, como o timestamp? Pois é exatamente isso que está faltando...
  6. Matheus Tavares

    Regra para mensagens de BOT Telegram com PHP

    Olá @biakelly. Não há nada de errado em usar vários ifs encadeados, tirando a repetição de código, mas vou lhe apresentar algumas sugestões para melhorar seu código. Uma maneira de otimizar, seria encapsulando a lógica de cada if em uma ou duas funções, mas pensando no todo, acredito que essa abordagem seja melhor: 1 - Se $message não tiver mais informações do que /price, /help ou /contract, digo, se não tiver a chance de ser /price/TRX, por exemplo, você pode usar essa varíavel, do contrário, você deve limpá-la para separar as informações relacionadas à rota. No exemplo acima, a barra inícial (/) é sua raíz, price é o recurso desejado, TRX é um parâmetro que filtra esse recurso, e por isso desmembrar em diferentes variáveis seria um bom ponto de partida. Um primeiro passo seria validar o endpoint (endereço) completo. Isso poderia ser feito com uma expressão regular, por exemplo. Vou pular essa etapa pois desconheço a formatação completa da API que você está criando. Ainda assim podemos prosseguir com o raciocínio. Prosseguindo com o mesmo exemplo, vamos assumir que o endpoint requisitado seja /price/TRX. 1 - Removemos as barras no início e no fim do endpoint: // "/trim", "trim", "trim/" ou "/trim/" viram ===> "trim" // No nosso exemplo, $message passará a ser "price/TRX" $message = trim( $message, '/' ); 2 - Pegamos apenas o nome do recurso a ser acessado (price / help / contract). $endpoint_chunks = explode( '/', $message );// dividimos $message por cada "/" $resource = array_shift( $endpoint_chunks );// "price", que é o primeiro elemento do array 3 - Criamos uma lista imutável de rotas conhecidas e permitidas: define( 'ROUTES', [ 'price', 'help', 'contract', ] ); 4 - Verificamos se a requisição se dá em uma dessas rotas, senão, interrompemos: if ( !in_array( $resource, ROUTES ) )// "price" existe em ROUTES? Se não, interrompa. die( '404 - Impossível continuar. Resource incorreto.' ); 5 - No seu exemplo, a única coisa que muda entre um file_get_contents e outro é a variável $price / $help, $contract. Isso poderia ser feito utilizando variáveis variáveis: // Exemplo não relacionado: // $numero = 5; // $var = 'numero'; // echo $$var;// Saída: 5 // No caso, se $resource for === string 'price', $text vai ter o mesmo valor da sua var $price $text = $$resource; Agora é só rodar o nosso novo file_get_contents genérico: file_get_contents( $path . "/sendmessage?chat_id=" . $chatId . "&text={$text}" ); Ou, ainda: crie um diretório chamado logicas ou resources, por exemplo. Dentro, insira os arquivos price.php, help.php, etc.php. E agora, faça: require_once "logicas/{$resource}.php";// no nosso caso vai resultar em: logicas/price.php E dentro de cada arquivo você elabora as instruções de cada resource, mantendo limpo o arquivo principal. Reunindo tudo: <?php $message = '/price/TRX';// seu $message original. Pode tirar essa linha $message = trim( $message, '/' ); $endpoint_chunks = explode( '/', $message ); $resource = array_shift( $endpoint_chunks ); define( 'ROUTES', [ 'price', 'help', 'contract', ] ); if ( !in_array( $resource, ROUTES ) ) die( 'Impossível continuar. Endpoint incorreto.' ); $text = $$resource; file_get_contents( $path . "/sendmessage?chat_id=" . $chatId . "&text={$text}" ); // Aqui viria o require_once, para adicionar lógicas inerentes a cada resource // Lembrando que para esse código rodar, $path, $chatId e $price precisam estar definidas. // Essas variáveis eu assumi que estavam definidas baseado no código que você postou. Onde esse código é melhor que o anterior? No fato de que agora você pode ter 50 endereços diferentes e o código não aumenta em quantidade de linhas. Além disso, com o require, você pode definir comportamentos de cada resource respectivamente em seu próprio arquivo. Os princípios que citei aqui são versões muito simplificadas de micro frameworks robustas voltadas para a crição de APIs, como o Lumen ou Slim, que seria minha sugestão final: considerar utilizar uma delas para facilitar seu trabalho. Por serem micro frameworks (e não frameworks completas), são mais simples e diretas no que se propõem.
  7. Matheus Tavares

    [Resolvido] Somar dados recuperados de uma API

    Tá aí um assunto que ainda pretendo estudar futuramente. Ainda sou um completo ignorante em blockchain a nível de implementação e integração. Dei uma pesquisada rápida para ver se encontrava algum material que pudesse lhe auxiliar. O que encontrei foi o seguinte: 1 - https://api.trongrid.io/v1/assets/TRX/list 2 - SDK para interagir com o protocolo Tron, em PHP, mas só encontrei coisas específicas de carteiras, blocos, transações, etc. Talvez seja interessante fazer uma issue ali perguntando sobre o Total Supply que você está buscando. https://github.com/iexbase/tron-api 3 - A Tronscan exibe muita informação útil mais mastigadinha. Veja: https://tronscan.org/#/ Talvez seja interessante ver essa API deles, e quem sabe perguntar a respeito da extração desses dados, no Github. Aqui está a API dessa plataforma: https://github.com/tronscan/tronscan-frontend/blob/master/document/api.md Talvez esse endpoint seja interessante para você: https://apilist.tronscan.org/api/tokens/overview?start=0&amp;limit=20&amp;order=desc&amp;filter=trc20&amp;sort=volume24hInTrx&amp;order_current=descend
  8. Matheus Tavares

    Importar campo data de um arquivo xml

    Olá @ILR master, tudo certo? Então, você tem certeza de que data faz parte do mesmo nível hierárquico que code? Tente visualizar os detalhes do que está sendo processado na iteração utilizando print_r ou var_dump, dentro do foreach. Assim: $xml = simplexml_load_file('cupons.xml'); echo '<pre>';//exibir espaços em branco e formatar o print_r foreach($xml->coupon as $cupom) { var_dump( $cupom ); echo $cupom->code.'<br>'; echo $cupom->data.'<br>'; } // ou quem sabe: var_dump( $xml ); (fora do foreach) Você pode dar uma olhada nos parâmetros opcionais da simplexml_load_file para ver se alguma mudança auxilia na interpretação correta do seu arquivo, caso seja esse o problema: https://www.php.net/manual/en/libxml.constants.php E não esqueça de habilitar as mensagens de erro. // no início do seu arquivo ini_set( 'display_errors', 1 ); ini_set( 'display_startup_errors', 1 ); error_reporting( E_ALL );
  9. Matheus Tavares

    [Resolvido] Somar dados recuperados de uma API

    Oi @biakelly. Então. Apesar de eu ter uma certa familiaridade com criptomoedas, inclusive a própria TRX, pois lido com mineração e pequenos investimentos, infelizmente eu não tenho experiência com a terminologia e requisições dessa API para poder lhe ajudar. Também desconheço o propósito do que você está construindo nesse código, mas minha intuição me diz que seu endpoint utilizado está incorreto. Encontrei esse endpoint, que apresenta um resultado mais completo e que talvez possa lhe ser útil. Esse aqui, se não estou enganado, está entregando a informação Epoch / Timestamp do bloco, que poderá servir para fazer o que mencionei no meu post anterior: https://api.trongrid.io/event/contract/TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq A título de comparação, a sua requisição original era essa: https://api.trongrid.io/v1/contracts/TFczxzPhnThNSqr5by8tvxsdCFRRz6cPNq/tokens?only_confirmed=true&amp;only_unconfirmed=true&amp;order_by=balance,desc&amp;limit=200 A documentação dessa API encontra-se aqui: https://developers.tron.network/docs/tron-grid-intro Uma sugestão adicional que eu faria é de não utilizar CURL. Ele é muito verboso, cheio de linhas para fazer uma requisição simples. Você poderia dar uma olhadinha nessa aqui: https://docs.guzzlephp.org/en/stable/
  10. Matheus Tavares

    pagamento em dolar utilizando api 3.0 cielo

    Olá @augustocesar, tudo bem? Seja bem-vindo. Olha, até onde eu sei, você define esses parâmetros, dentro do contexto do objeto Payment: Amount -> Representa a quantidade em centavos. Exemplo: 10000 = 100 reais OU dólares. Currency -> A moeda. BRL para reais, USD para dólares americanos. Não precisa converter de reais para dólares ou vice-versa, pois a cotação e atualização é feita pela bandeira do cartão, ao menos que você esteja exibindo o valor em dólares ao seu cliente e processando em reais (inserindo a cotação de sua preferência), o que não faria muito sentido. Veja a documentação da transação completa: https://developercielo.github.io/manual/cielo-ecommerce#transação-completa E há ainda a opção de utilizar a SDK, que foi construída pelo João Batista Neto, aqui do fórum: https://github.com/DeveloperCielo/API-3.0-PHP
  11. Matheus Tavares

    Passar função inclinação do Excel para o PHP

    Olá amigo, seja bem-vindo. Tudo bem? Veja: <?php function linear_regression( $x, $y ) { $n = count($x); // number of items in the array $x_sum = array_sum($x); // sum of all X values $y_sum = array_sum($y); // sum of all Y values $xx_sum = 0; $xy_sum = 0; for($i = 0; $i < $n; $i++) { $xy_sum += ( $x[$i]*$y[$i] ); $xx_sum += ( $x[$i]*$x[$i] ); } // Slope $slope = ( ( $n * $xy_sum ) - ( $x_sum * $y_sum ) ) / ( ( $n * $xx_sum ) - ( $x_sum * $x_sum ) ); // calculate intercept $intercept = ( $y_sum - ( $slope * $x_sum ) ) / $n; return array( 'slope' => $slope, 'intercept' => $intercept, ); } $Y = [ 10, 23, 25, 27, 56, 55, 84, 87, 115, 115, 125, 132, 138, 153, 181, 191, 198, 199, 201, 205, ]; $X = [ 3, 8, 10, 12, 24, 25, 39, 40, 55, 56, 61, 64, 66, 73, 90, 93, 96, 97, 98, 99, ]; print_r( linear_regression( $X, $Y ) ); Resultado: Array ( [slope] => 1.996159716866 [intercept] => 5.3129436997816 ) Créditos: https://halfelf.org/2017/linear-regressions-php/
  12. Matheus Tavares

    Erro no envio de email SMTP

    Olá amigo, seja bem-vindo. Acredito que você esteja utilizando uma versão antiga do PHPMailer. Baixe a versão mais recente através do repositório oficial, neste link: https://github.com/PHPMailer/PHPMailer Link direto para o zip do repositório: https://github.com/PHPMailer/PHPMailer/archive/master.zip Isso deve colocar você no caminho certo. O passo a seguir é ler a documentação da Locaweb em relação ao envio de e-mails (para confirmar os dados de host, porta, ssl/tls, etc). Veja: https://ajuda.locaweb.com.br/wiki/usar-o-php-mailer-para-envio-de-e-mail-autenticado-smtp-locaweb/ Qualquer dúvida é só postar :) Boa sorte.
  13. Matheus Tavares

    [Resolvido] Somar dados recuperados de uma API

    Olá @biakelly, tudo bem? Na documentação da TRON Grid diz o seguinte: The same time window can get up to XXX pieces of data. If you need to get more data, you can move the time window to get more data. Traduzindo: A mesma janela de tempo pode ter até X dados. Se você precisa recuperar mais dados, você pode mover a janela de tempo. Ou seja, você está recuperando os últimos (DESC) 200 tokens. O que você precisa é: 1 - Após recuperar os 200 iniciais, pegar a data do último e rodar uma nova consulta, recuperando os próximos 200 com a Query max_timestamp definida para esse momento. 2 - Agora você tem de 0,199 e de 200,399. Basta prosseguir o loop até não haver registros restantes.
  14. Matheus Tavares

    [Resolvido] como limitar numero de caracteres

    Olá @biakelly, tudo bem? Veja: <?php $numero = 0.004152635241526325; echo number_format( $numero, 6, '.', '' ); // Saída: 0.004153 // O problema é que o number_format arredonda a última casa decimal. // Talvez você não queira esse comportamento. // Para apenas cortar, sem arredondar: echo "\n<br>\n";// apenas uma quebra de linha list( $inteiro, $decimal ) = explode( '.', $numero ); $decimal_cortado = substr( $decimal, 0, 6 ); echo $inteiro . '.' . $decimal_cortado; // Saída: 0.004152 No segundo método foi utilizado o explode para que a quantidade de decimais fosse independente da quantidade de inteiros. Exemplo: 0.123456 ter um comportamento similar a 750.123456. Criando uma função para uso recorrente: <?php function cutDecimals( $number, $amount = 6 ) {// padrão 6 list( $integers, $decimals ) = explode( '.', $number ); return $integers . '.' . substr( $decimals, 0, $amount ); } // Float echo cutDecimals( 750.123456789 ) . "\n"; echo cutDecimals( .123456789 ) . "\n"; echo cutDecimals( 0.123456789 ) . "\n\n"; // String echo cutDecimals( '750.123456789' ) . "\n"; echo cutDecimals( '.123456789' ) . "\n"; echo cutDecimals( '0.123456789' ) . "\n"; Saída: 750.123456 0.123456 0.123456 750.123456 .123456 0.123456
  15. Matheus Tavares

    Como automatizar tarefas em PHP

    Opa @mateus.andriollo. Você deveria fazer algo assim, meu chapa: /usr/bin/php /caminho/para/o/meu/arquivo.php uma_variavel > /var/log/log_da_ultima_execucao_do_arquivo_php.log ▲ ▲ ▲ ▲ | | | +--> Log de execução | | +--> Opcional. Personaliza a execução do script | +--> Código a ser executado. +--> Caminho do interpretador PHP. Perceba que a execução é comum de qualquer arquivo PHP: // Criamos um arquivo com um teste qualquer ❯ echo '<?php echo 1+1; ?>' > teste.php // Executamos utilizando o mesmo procedimento mencionado acima ❯ /usr/bin/php teste.php 2 E no caso você define sua Cron assim (exemplo para execução a cada 30 mins): */30 * * * * /usr/bin/php /caminho/para/o/meu/arquivo.php uma_variavel > /var/log/log_da_ultima_execucao_do_arquivo_php.log Maiores informações: https://crontab-generator.org/ https://www.hostinger.com.br/tutoriais/cron-job-guia Esse é o caminho mais correto e que vai economizar mais recursos de máquina. Se você deixar um arquivo rodando com Keep Alive, sleep ou qualquer coisa nesse sentido, vai acabar consumindo muito mais recursos de máquina, pois estará chamando o servidor web (Apache / Nginx) desnecessariamente. E lembre-se: não bloqueie a sessão! Evite abrir session_start em crons, ao menos que você elabore uma estratégia de sessão não-bloqueante, como explicado no link.
  16. Matheus Tavares

    Alterar tamanho da fonte

    Olá @Vanessa Andrade, tudo bem? Você tem acesso ao código da loja ou trata-se de uma plataforma pronta? Uma forma de aumentar o tamanho da letra seria acrescentando um atributo CSS chamado font-size nos elementos desejados. Tratando-se do exemplo em questão, tudo que você precisa fazer é inserir no seu código: .style4 { font-size: 14px; } Isso já daria conta do recado, conforme você pode ver na minha print abaixo, alterando manualmente diretamente no navegador. As letras ficaram maiores realizando esse procedimento (mas afeta somente o meu uso e não os outros usuários, pois não tenho acesso ao seu código). Mas se a plataforma não lhe fornece acesso ao código, seja HTML ou CSS, provavelmente você fica impedida de prosseguir nessa tarefa, então o primeiro passo é verificar esse ponto. Espero ter ajudado. Boa sorte :)
  17. Matheus Tavares

    Plataforma de tecnologia para devs

    Muito bom, Fernando. Parabéns pela ideia e iniciativa. A título de feedback na interface, que é a parte onde tenho acesso para interagir com o projeto, se você me permite, vou dar umas sugestões: 1 - Achei um pouquinho pálido (muito branco e cinza). Além de poder fazer um uso maior das cores, você poderia em alguns espaços inserir fotos de fundo que ilustrem o que está sendo dito. Veja esses exemplos: https://br.pinterest.com/usamakhuri/sites-institucionais/ 2 - Os efeitos estão um pouquinho lentos demais (na minha subjetiva opinião), dando uma sensação de impolidez ou lentidão e não suavidade, que acredito que tenha sido sua real intenção. 3 - Talvez seja apenas no Firefox, que é o navegador que utilizo aqui, mas o efeito do hover das caixas de texto estão bugadas. Ao passar o mouse, principalmente se tratando da caixa mais à direita dos diferentes conjuntos de textos ocorre um glitch de movimentação não apenas na div em questão, mas ao redor. Só coisa boba mesmo, porque o projeto parece realmente muito bom e tem tudo para dar certo. A título de curiosidade: se o projeto é gratuito, onde fica o seu lucro? Terá anúncios? No mais, parabéns! Desejo sucesso na sua empreitada.
  18. Matheus Tavares

    jogo

    Muito bom, Miguel! Parabéns!
  19. Matheus Tavares

    Enviar e-mail com imagem Base64

    Por aqui tudo tranquilo também :) Pode usar apenas o endereço sim, sem problemas. Confesso que nunca senti necessidade de enviar mensagens com imagens representadas por base64, mas desenvolvi um sistema que dispara uma boa quantia de e-mails por minuto e nunca tive problemas com SPAM ou bloqueios. Sua atenção deve estar voltada a: 1 - Respeitar as políticas do servidor em relação ao envio de e-mails. Esse material também pode ser útil: https://www.ftc.gov/tips-advice/business-center/guidance/can-spam-act-compliance-guide-business 2 - Respeitar as preferências dos usuários em relação ao recebimento desses e-mails, principalmente se estiver visando marketing. Isso deve manter sua taxa de complaints baixa, que é importante para a reputação do IP de origem do envio dos e-mails. 3 - Registrar as devidas chaves DNS que garantem que seu e-mail é autêntico e enviado de fato pelo seu domínio, como abordado nesse artigo: https://www.rackaid.com/blog/email-dns-records/ O sistema que citei acima está hospedado na AWS (Amazon Web Services), que te dá os primeiros 50.000 e-mails enviados gratuitamente e o processo de configuração dos DNS é bem simplificado. O problema é o dólar alto do momento, mas dependendo de sua carga de envio, talvez seja interessante dar uma olhadinha.
  20. Matheus Tavares

    Enviar e-mail com imagem Base64

    Olá @biakelly. Subir a imagem em um servidor e usar no atributo src o endereço dela não seria uma opção? Geralmente é isso que é feito nesse caso. <img src="http://empresa.org/logo.png" alt="Logo da empresa">
  21. Matheus Tavares

    Erro ao Atualizar

    É importante observar ainda que se sua intenção é atualizar os registros, o PHP deverá ter acesso aos IDs de cada uma dessas linhas, então no lugar de item[0], item[1], item[2], seria item[id_do_registro][fq_title]. Em casos como esse é comum querermos passar informações de forma transparente (sem conhecimento do usuário), e para isso podemos contar com os campos hidden. Não acho que seja necessário no seu caso, mas dê uma olhada também: https://www.w3schools.com/tags/att_input_type_hidden.asp
  22. Matheus Tavares

    Erro ao Atualizar

    Olá amigo, tudo bem? Primeiro vamos analisar um trecho do seu código: // para cada item dentro do array fq_title, me dê seu valor através da var $value foreach ($_POST['fq_title'] as $value) { $arr1[] = $value;// agora crie um array novo e coloque $value em um novo índice } // Percebe que esse trecho é redundante? Agora veja esse exemplo: <?php /* Isso é o que você está esperando do Form E para ter certeza de que você está recebendo um valor parecido à esse, você deveria imprimir o valor de $_POST. Isso pode ser feito com print_r ou var_dump, como fiz mais abaixo. */ $_POST = [ 'fq_title' => [ 'valor1', 'valor2', 'valor3', 'valor4', ] ]; // Aqui inseri o trecho citado na explicação anterior. foreach ( $_POST['fq_title'] as $value ) { $arr1[] = $value; } // E aqui exibi as duas informações para comparar o resultado echo '<pre>'; print_r( $arr1 ); print_r( $_POST[ 'fq_title' ] ); echo '</pre>'; // Veja que o resultado é exatamente igual para ambos os casos: /** <pre>Array ( [0] => valor1 [1] => valor2 [2] => valor3 [3] => valor4 ) Array ( [0] => valor1 [1] => valor2 [2] => valor3 [3] => valor4 ) </pre> * / Não analisei o bloco (for) que aparece depois desses foreach, mas me parece que ele poderia ser um pouco mais simples também. Mas o ponto principal do problema, pelo que consigo perceber, está justamente no seu formulário. Perceba que seu input multivalorado fq_title recebe esse atributo: name="fq_title" Se enviamos arrays ao PHP, devemos enviar nesse padrão: name="fq_title[]" Outra sugestão que me vem à cabeça é aprimorar a indexação das informações, com algo assim: <input type="text" name="item[0][fq_title]" /> <input type="text" name="item[0][fq_content]" /> <input type="text" name="item[1][fq_title]" /> <input type="text" name="item[1][fq_content]" /> <input type="text" name="item[2][fq_title]" /> <input type="text" name="item[2][fq_content]" /> Talvez assim seja mais prática a manipulação da lógica no PHP depois. Se eu não estou enganado ou entendi mal a questão, acredito que corrigindo esse aspecto você será capaz de progredir na solução do problema. Caso ainda não consiga, peço que traga-nos as mensagens de erro e informações adicionais. :)
  23. Matheus Tavares

    Regra do if

    Que legal, @biakelly, fico realmente muito feliz em saber disso! É um prazer ajudar. Bons estudos. :D
  24. Olá amigo. Seja bem-vindo. O problema é que você está enviando a variável que será comparada pelo switch (um número) e depois a compara com valores booleanos, como nota >= 9 && nota <= 10 (cujo resultado da operação seria true ou false). Em outras palavras, o que está sendo feito no seu código é algo assim: let nota = 5;// apenas um exemplo let notaD = nota > 5;// false let notaF = nota <= 5;// true if ( nota === notaD )// 5 é igual a false? console.log( 'notaD' ); if ( nota === notaF )// 5 é igual a true? console.log( 'notaF' ); // Não faz muito sentido... Geralmente nossa intenção é comparar tipos iguais Resumindo: neste caso o switch não tem muita serventia. O propósito do código é melhor atendido pelo if. Pense em switch para fazer algo como: var Animal = 'Girafa'; switch (Animal) { case 'Vaca': case 'Girafa': case 'Cachorro': case 'Porco': alert('Esse animal irá para Arca de Noé'); break; case 'Dinossauro': default: alert('Esse animal não vai.'); } Fonte do exemplo: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/switch Observe que a variável Animal é uma string e os valores comparados à ela também são strings.
  25. Matheus Tavares

    Regra do if

    Olá @biakelly, bom dia! Por aqui tudo bem, obrigado por perguntar. Vamos lá: 1 - Você precisa separar as camadas de interface (HTML) da lógica (PHP), pois dessa forma seu código será mais legível, seu editor vai colorir as palavras-chaves para você e você terá maior domínio sobre o que está acontecendo no seu código. Outro ponto fundamental é indentar corretamente (aplicar os devidos espaços ou tabs de forma a organizar a hierarquia de tags e instruções do código). Este trecho, por exemplo: echo "<div class='table-responsive data-table table-striped'>"; echo "<table id='activetrontbl' class='table vertical-align' style='width:100%'>"; Poderia ser escrito dessa forma: // estamos com a tag PHP aberta aqui. Vamos fechá-la para escrever HTML ?> <div class="table-responsive data-table table-striped"> <table id="activetrontbl" class="table vertical-align" style="width:100%"> Perceba que aqui mesmo no fórum nós já temos uma clareza maior do código, já que ele foi colorido, uma vez que o interpretador tem certeza de que não é uma mera cadeia de caracteres (string), como antes, mas um código HTML. Note ainda que eu troquei as aspas dos atributos HTML, conforme o exemplo: <img src='arquivo.jpg' alt=''> <!-- Errado --> <img src="arquivo.jpg" alt=""> <!-- Certo --> 2 - Avançando um pouco no código, encontramos este trecho: echo "<h4>$row[total] price</h4>"; Essa linha estaria mais correta conforme as explicações do meu post anterior, assim: // Chaves ao redor das variáveis. // Aspas simples na chave do array. echo "<h4>{$row['total']} price</h4>"; Mas como estamos com a tag do PHP fechada, dando continuidade ao que foi dito no item anterior, não poderíamos fazer esse echo, ao menos que a tag PHP fosse reaberta. Portanto, nesse caso, poderíamos escrever assim: //tag PHP foi fechada lá em cima... ?> <!-- Depois inserimos algum HTML por aqui... --> <h4><?php echo $row['total']; ?> price</h4> Veja que abrimos a tag PHP onde bem entendemos, chamamos o echo para imprimir uma string na tela e depois fechamos, para dar continuidade ao HTML. Também poderíamos utilizar a sintaxe reduzida da abertura de tag com echo, que torna nosso código mais sucinto: <h4><?= $row['total'] ?> price</h4> O efeito é o mesmo. 3 - Avançando mais um pouco, encontramos essa linha: echo "<input type='hidden' name='amount' value='<?php echo $row[totalbrl] * 100; ?>'>"; Perceba que já estamos dentro do contexto do PHP (entre <?php e ?>), então você corretamente chamou o echo, mas dentro do atributo value você abriu novamente a tag PHP, e isso acabou sendo enviado junto ao navegador. Se você analisar pelo código-fonte da página gerada no seu navegador vai encontrar algo como um cru "value='<?php echo ... ; ?>'", que não faz muito sentido, certo? Corrigindo esses pontos chegaríamos em um código parecido com esse, que se ainda não estiver funcionando, pelo menos está no caminho: <?php if (isset($row['userid']) && $row['status'] == 0) { ?> <div class="table-responsive data-table table-striped"> <table id="activetrontbl" class="table vertical-align" style="width:100%"> <thead> <tr class="text-center"> <th> <label>Tokens</label><br> <!-- Esse <br> deveria ser reproduzido com CSS. Talvez um padding no label ou th? --> </th> <th> <label>Quantity</label> </th> <th> <label>Total price</label> </th> </tr> </thead> <tbody> <tr class="text-center"> <td class="align-middle"> <img src="../assets/images/logo/bianet.png" width="42" alt="pricebo"> <br><small>pricebo - price</small> </td> <td class="align-middle"> <h4><?= $row['total'] ?> price</h4> </td> <td class="align-middle"> <h4>U$ <?= $row['totalinusdamount'] ?></h4> <small>R$ <?= $row['totalbrl'] ?></small> </td> </tr> </tbody> </table> </div> <form action="submit.php" method="post"> <input type="hidden" name="amount" value="<?= $row['totalbrl'] * 100 ?>"> <input type="hidden" name="total" value="<?= $row['total'] ?>"> <input type="hidden" name="userid" value="<?= $userid ?>"> <input type="hidden" name="updateid" value="<?= $row['id'] ?>"> <input type="hidden" name="name" value="<?= $fullname ?>"> <input type="hidden" name="email" value="<?= $email ?>"> <div class="d-flex justify-content-end"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="<?= $publishablekey ?>" data-amount="<?= $row['totalbrl'] * 100 ?>" data-name="bxb" data-quantity="<?= $row['total'] ?>" data-description="currency" data-image="../assets/images/logo/bianet.png" data-currency="brl" data-email="<?= $email ?>" ></script> </div> </form> </div><!-- Essa div parece não ter abertura nesse código. Talvez seja melhor removê-la --> <?php } else { ?> <div class="row"> <div class="col text-center"> <p><i class="text-orange h1"></i></p> <p><span class="h5">Your cart is empty!</span></p><!-- span no lugar de spam --> <p><span>Add something to make me happy ;)</span></p> </div> </div> <?php } // não há necessidade de fechar a tag PHP aberta anteriormente, pois trata-se do final do arquivo Acesse o código-fonte no seu navegador para ver se todos os atributos no HTML estão recebendo os valores corretos. Isso é fundamental para termos clareza acerca do funcionamento do botão. Lembre-se de que nem tudo que aparece no navegador é o que foi processado pelo PHP. Atributos como data-* aparecem apenas no código-fonte. Espero que consiga resolver o problema agora
×

Informação importante

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