Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.623
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Bom, eu não sou especialista como informei logo no começo da minha resposta. Tudo que eu faço é tentativa e erro, já esse último response que você passou foi bem fácil de trabalhar. Eu não tenho como pegar o seu json, mas apenas o string que aparece na tela. Peguei o string e... <?php $string= (aqui eu copiei o response que foi divulgado na mensagem) $json=json_decode($string); echo "Pedido ".$json->id."<br>"; echo "Cliente ".$json->customer->name."<br>"; echo "itens ".count($json->items)."<p>"; $items=$json->items; foreach($items as $item){ echo $item->name."<br>"; echo "adicionais ".count($item->options)."<br>"; foreach($item->options as $option){ echo $option->name."<br>"; } echo "<p>"; } Resultado: Pedido 5e58177c-d8f2-41cf-9277-7fa742806f03 Cliente PEDIDO DE TESTE - adriano rosa do prado itens 3 PEDIDO DE TESTE - MÉDIA (6 PEDAÇOS) adicionais 2 Portuguesa Massa Tradicional + Borda Recheada PEDIDO DE TESTE - Bebida teste 100 ml adicionais 1 Laranja PEDIDO DE TESTE - Sanduíche adicionais 2 Complemento 1 Complemento 6 Ou seja, eu só faço tentativa e erro. Como o seu response é um json, você não precisa da primeira linha desse código, apenas eu.
  2. Isso daí é bem difícil, faz dois anos que eu tento resolver esse tipo de problema, e nunca consegui. Você diz que isso daí é json, mas aqui no meu PC eu vejo apenas como string. Eu tentei transformar o string em json, assim $json=json_decode($string), mas a resposta que eu tive foi null. Durante dois anos eu desisti de resolver esse tipo de problema, mas hoje eu tive a coragem de pegar o editor de texto, e transformar tudo que é { em [, e tudo que é } em ], e tudo que é : em =>, ou seja, montei um array. Aí sim eu consegui fazer alguma coisa! Olha só: <?php $adr=["items"=> [ [ "index"=> 1, "id"=> "26845888-7547-3346-800d-9e3ae0353804", "uniqueId"=> "3fc4a0e3-f25e-46f7-a1e4-b66ecdb88152", "name"=> "PEDIDO DE TESTE - MÉDIA (6 PEDAÇOS)","externalCode"=> "t02", "unit"=> "UN","quantity"=> 1,"unitPrice"=> 0.00,"optionsPrice"=> 24.00, "totalPrice"=> 24.00, "options"=> [ [ "index"=> 2,"id"=> "a8b24880-b3f6-390a-8514-77bd7b2055aa", "name"=> "Calabresa","externalCode"=> "c02-i002", "unit"=> "UN","quantity"=> 1,"unitPrice"=> 20.00, "addition"=> 0.00,"price"=> 20.00], [ "index"=> 3,"id"=> "893622be-1730-318e-a486-b2dd4fdfa87d", "name"=> "Massa Fina + Borda Recheada","externalCode"=> "m02", "unit"=> "UN","quantity"=> 1,"unitPrice"=> 4.00, "addition"=> 0.00,"price"=> 4.00]], "price"=> 0.00], [ "index"=> 4, "id"=> "b78d3091-cead-4c12-a06a-1440b3176c77", "uniqueId"=> "663ff728-af46-41ae-bb8d-4ffcc1b961e4", "name"=> "PEDIDO DE TESTE - Bebida teste 100 ml", "unit"=> "GRAMS","quantity"=> 1,"unitPrice"=> 10.00,"optionsPrice"=> 10.00, "totalPrice"=> 20.00, "options"=> [ [ "index"=> 5,"id"=> "d4603ddd-3519-4fcb-a450-29e06ab5d9ff", "name"=> "Laranja", "unit"=> "UN","quantity"=> 1,"unitPrice"=> 10.00, "addition"=> 0.00,"price"=> 10.00]], "price"=> 10.00], [ "index"=> 6, "id"=> "e8f9f490-2a56-4bb8-a9d3-5e9b72fe027c", "uniqueId"=> "98de1e93-ba34-48bb-8f75-1b8c21e43fd1", "name"=> "PEDIDO DE TESTE - Sanduíche", "externalCode"=> "c01-i001", "unit"=> "GRAMS","quantity"=> 1,"unitPrice"=> 20.00,"optionsPrice"=> 1.00, "totalPrice"=> 21.00, "options"=> [ [ "index"=> 7, "id"=> "1101565b-dc4b-44d3-9e82-b7c4b07397f3", "name"=> "Complemento 1", "unit"=> "UN","quantity"=> 1,"unitPrice"=> 1.00, "addition"=> 0.00,"price"=> 1.00], [ "index"=> 8, "id"=> "42e8a1f3-6f3e-4370-9223-05464f5be701", "name"=> "Complemento 6", "unit"=> "UN","quantity"=> 1,"unitPrice"=> 0.00, "addition"=> 0.00,"price"=> 0.00]], "price"=> 20.00]]]; //var_dump($adr); foreach($adr as $a){ foreach($a as $b){ echo $b['name']."<br>"; } } /* resultado: PEDIDO DE TESTE - MÉDIA (6 PEDAÇOS) PEDIDO DE TESTE - Bebida teste 100 ml PEDIDO DE TESTE - Sanduíche */ mas, no seu caso, se você tiver um json de verdade, acho que esse código vai funcionar foreach($meujson as $items) { foreach($items as $item) { echo $item->name; }} A minha sugestão é sempre trabalhar com a função var_dump(), esse é o melhor caminho para estudar o PHP, e estudar a função dd() no caso do Laravel.
  3. Eu não consegui encontrar o tutorial que explica como pegar um valor selecionado do modal do Bootstrap 5.2. Assim, eu improvisei, criei uma função Javascript lançar (que pega o nome dos elementos que precisam da informação) e registro (que responde à rotina lançar). O meu código vem em seguida, mas antes queria perguntar se alguém sabe se o modal do Bootstrap 5.2 tem uma instrução própria para devolver o valor selecionado a quem pediu. <link href=assets/bootstrap.min.css rel=stylesheet> <script src=assets/bootstrap.bundle.min.js></script> <script> var lçto = ""; var descrição = ""; function lançar(id,jd) {lçto=id; descrição=jd;} function registro(id,jd) {eleconta=document.getElementById(lçto); eledescrição = document.getElementById(descrição); eleconta.value=id; eledescrição.innerHTML=jd;} </script> <table> <tr><td>ContaD<td> <input id=idebito name=debito onclick="lançar(id,'adebito')" data-bs-toggle="modal" data-bs-target="#myModal" size=2 autocomplete=off> <td><a id=adebito></a> <tr><td>ContaC<td> <input id=icredito name=credito onclick="lançar(id,'acredito')" data-bs-toggle="modal" data-bs-target="#myModal"size=2 autocomplete=off> <td><a id=acredito></a> </table> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbconta where conta>400 limit 10"); ?> <div class="modal" id="myModal"><div class="modal-dialog"><div class="modal-content"> <div class="modal-body"> <table class="table table-striped linha"> <?php while($row=$query->fetch_assoc()){$ct=$row['conta'];$dc=$row['descricao']?> <tr><td> <a class=link-primary data-bs-dismiss="modal" onclick=registro(<?=$ct?>,'<?=$dc?>')> <?=$ct." ".$dc?> </a> <?php } ?> </div></div></div></div>
  4. kkkk... se você gosta de ternário, o correto é utilizar o canal da Lógica desse fórum. Lá, os ternários são bem mais fáceis de entender, tipo Se meu programa não funciona então eu desisto.
  5. Se isso fosse PHP, acho que a gramática seria $F['noti_autogenerator'] = "" ? "Tipificação da Infração" : "Tipificação da Infração Originária"; ou algo do tipo: $if($noti_autogenerator==""){$noti_autogenerator="Tipificação da Infração";}else{$noti_autogenerator="Tipificação da Infração Originária";} o problema é que eu não nenhuma experiência com o iReport.
  6. Eu não sou especialista no assunto, eu só sei usar o método da tentativa e erro: Se eu pegar https://merchant-api.ifood.com.br/order/v1.0/events:polling e jogar diretamente no navegador, eu tenho essa mensagem {"message": "no jwt token"}. Se eu pegar https://merchant-api.ifood.com.br/order/v1.0/orders/61e260a2-002a-428f-b736-de84447c0385/confirm e jogar diretamente no navegador, ele retorna {"message":"no Route matched with those values"}, ou seja, não importa o quanto você capriche no CURL, o servidor não vai conseguir retornar. Acredito que a turma do iFood poderá ajudá-lo melhor nesse caso. Usando o manual iFood Developer | Order, improvisei o seguinte: https://merchant-api.ifood.com.br/orders/61e260a2-002a-428f-b736-de84447c038A mas a mensagem é a mesma. Acredito que o número do pedido não existe.
  7. <?php if ($_SESSION ['tipoAutuacao'] == 'T') { $sql = $modelBoleto->GeradorBoleto ( $_SESSION ['orgaoCod'], $autos, $_SESSION ['tipoAutuacao'], 'PEN', 'S', '6291' ); $rel = "boletoPenTN"; } else { $sql = $modelBoleto->GeradorBoleto ( $_SESSION ['orgaoCod'], $autos, $_SESSION ['tipoAutuacao'], 'PEN', 'S', '6291' ); $rel = "boletoPenPN";} echo "rel $rel sql $sql"; Esse código está visivelmente errado. O código do primeiro $sql é o mesmo do segundo $sql.
  8. Usando o método da tentativa e erro, pode ser que o CURL esteja recebendo um objeto e não uma string. Tente assim: $jresponse=$response ao invés de $jresponse=json_decode($response). Eu não tenho como acompanhar, pois não tenho nenhum $clientId e nem $clientSecret. Note que no primeiro exemplo tinhamos o seguinte "string" {"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGl","token_type":"bearer","expires_in":86399} e agora temos um novo "string" assim [{"id":"fde9a8ad-6dba-462a-92e8-f606238b916e","code":"PLC","fullCode":"PLACED","orderId":"00201035-360c-4862-adef-4c74ed8da5e3","merchantId":"b053eb1d-294a-4a42-806b-a46f5e6517b6","createdAt":"2022-12-27T00:21:56.594Z"}] ou seja, nós temos colchetes. Os dois parecem iguais, mas não são. O primeiro é japones e precisa transformar em Json. O segundo é chinês, e tudo indica que você não precisa transformar em japonês. As aparencias sempre enganam.
  9. Eu acho difícil controlar a internet. Existem toneladas de material publicitário que induzem ao internauta a escolher o caminho espaçoso da perdição como a Mega-Sena, o Facebook, o Instagram, só para citar alguns. Mas, ontem, um importante aniversariante anunciou há muito tempo que o Pai vai separar o joio do trigo, e queimar tudo. Não sei qual dos dois Ele vai queimar primeiro.
  10. No painel esquerdo tem um controlador de pontuação. Deixa um ponto para mim para conseguir um emprego no Fórum, estou desempregado desde 1999.
  11. Logo, a segunda solução é que vale, você transforma $response em json com o comando $jresponse=json_decode($response), e depois você pode isolar o token assim $token=$jresponse->access_token, e na hora de mandar para o banco de dados, você usa a variável $token e não o $response.
  12. Como eu nunca li a Constituição Federal de 1988, eu não sei se o anúncio do cassino na internet é crime ou não; eu sei que a Caixa Econômica promove a Mega-Sena, e ninguém toma nenhuma providência. Já o método da comercialização, o único que eu conheço é o dinheiro. Na Caixa Econômica, você só pode participar da loteria se tiver dinheiro. Eu não conheço nenhum outro método de comercialização.
  13. Testei o código aqui, mas como eu não tenho $clienteId e nem o $clientSecret, eu não sei exatamente o que tem no $reponse. Se for um objeto, eu obteria o token assim: $token=$response->access_token; Se for um string, eu obteria o token assim: $jresponse=json_decode($response); $token=$jresponse->access_token;
  14. Continuei a pesquisa no Google, imaginando que o problema estava nas dependências do Laravel. Segui os tutoriais, mas o VS Code continuava reclamando do mesmo código. Eu olhei o meu celular e vi uma mensagem do Laracast, o Sinnbeck respondeu assim: Why not do that in the controller and pass it down as data if it needs to be bound to a variable? Or just use this wherever you need it {{session('success')}} Pelo pouco que eu sei de inglês, o Sinnbeck quis dizer que há um erro de lógica, o sucesso da conexão deveria ser passado pelo controlador ou usar a variável {{session('success')}}. Eu logo vi que o marcador {{ }} é coisa lá do Blade Laravel, o PHP não suporta isso. Assim, eu improvisei: <?php $data = session('success'); ?> e assim o VS Code parou de reclamar do problema. Testei o código, e tudo continuava funcionando. Nos vários testes que eu fiz no Laravel, ainda sinto muita dificuldade em saber quem é variável local e quem é variável global.
  15. Ontem, eu tentei improvisar um código no controlador, e o VS Code disparou um monte de erro. Eu desfiz a minha besteira, mas o VS Code continuou apontando o erro. Então, eu decidi jogar todo o projeto no lixo, e começar do zero. Dessa vez, eu comecei pelo login através desse tutorial: Laravel 9 Auth Login and Registration with Username or Email (codeanddeploy.com), esse tutorial é enorme. Mas o VS Code reclamou dessa linha: <?php $data = Session::get('success'); ?> Pelo Google, eu vi a dica para instalar mais um componente: GitHub - barryvdh/laravel-ide-helper: Laravel IDE Helper, mas não consegui resolver o problema. Eu também eu vi outra dica no Google, o de desconsiderar o alerta do VS Code. Essa dica funciona, mas não vou conseguir dormir sabendo que existe um código que pode desmoronar toda a arquitetura do Laravel. Assim, a minha única saída foi usar o pouco que eu sei de inglês e pedir ajuda no portal do Laracasts Undefined type 'Session' Intelephense (1009) (laracasts.com) Acho que o melhor jeito de estudar o Laravel é valorizando as mensagens de erro. Pelo menos foi assim que eu aprendi a usar o PHP. Mas nessa nova aventura, eu finalmente consegui instalar o Bootstrap no Laravel, o tutorial não diz como fazer isso, mas usei a minha intuição bem como corrigi o código do tutorial com a ajuda das mensagens de erro da ferramenta de inspeção do navegador. Esse Bootstrap é muito bom, no começo eu não conseguia nada, mas hoje eu até decorei <table class='table table-sm table-striped'> de tanto digitar a mesma coisa.
  16. No fórum Imasters, o Omar~ sugeriu para eu ter certeza que a variável de controle do comando for seja do tipo inteiro. A sugestão dele deu certo. Onde eu tinha function show(j), eu mudei para function show(k){ j = parseInt(k); etc Eu sempre esqueço que os números são abstrações humanas e o computador só tem dois digítos, o zero e o um. Para representar qualquer número, o algorítimo deve ser bem federal. Aqui a listagem original, agora com a sugestão do Omar~ <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbprod order by prod"); $prod=$query->fetch_all(MYSQLI_ASSOC);?> <script> function procurar(valor){ for(i=0;i<produtos.options.length;i++){ if(produtos.options[i].value==valor){ j=produtos.options[i].getAttribute('data-id');}} show(j);} function show(k){ j=parseInt(k); divshow.innerHTML=""; for(i=j;i<j+9;i++){ divshow.innerHTML+=produtos.options[i].value+"<br>"}} </script> <div><p><p> <form> <input list=produtos autofocus id=produto onchange=procurar(value) autofocus> <datalist id=produtos> <?php foreach($prod as $key=>$pr){echo "<option data-id=$key value='".$pr['prod']."'>";} ?> </datalist></form></div> <div id=divshow></div> <script>show(0)</script>
  17. Frank K Hosaka

    Roubo de Sessão

    Como eu disse, eu ainda estou estudando o Laravel. Ainda não cheguei no arquivo de Log, mas eu acredito que a rotina de autenticação vai verificar se o mesmo usuário já não está logado em outro terminal. Autenticação e validação são coisas novas para mim.
  18. Frank K Hosaka

    Roubo de Sessão

    Eu não tenho a menor experiência com a rotina do Login, espero aprender alguma coisa com o Laravel. Mas eu lembro que trabalhei numa rede, e ele não permitia o mesmo usuário logar em dois terminais ao mesmo tempo. A minha ideia é desativar o acesso do usuário se isso acontecer, e perguntar porque ele está compartilhando o id e a senha com todo mundo no escritório.
  19. Essa sintaxe não é PHP, Laravel Blade e nem JasperSoft. Que programa você utilizou para fazer esse código?
  20. Estou estudando o MySQL desde 2020, e só hoje eu tive coragem de mexer no WampServe > MySQL > my.ini e debaixo do grupo [mysqld] acrescentei lower_case_table_names=2 na esperança de criar tabelas com letras maiúsculas. Eu uso o Windows 11. O problema é na hora de reiniciar o WampServe, ele fica amarelo e não verde. Eu não sei se isso é relevante, mas estou estudando também o Laravel, e desde então o WampServ dispara um alerta "Warning: there is Wampserver path (c:/wamp64) into Windows PATH environment variable: (C:\wamp64\bin\php\php8.1.0)". Apesar do alerta, tudo funciona, o ícone está verde. Só fica amarelo, se eu mexer no my.ini. A minha grande dúvida: alguém aqui já conseguiu fazer tabelas com letra maiúscula no MySQL e Windows 11?
  21. <?php $detData="yyyy"; $dtAno2 = ($detData == 'yyyy') ? " to_char( noti_dtinfr, 'YYYY' ) " : " NULL "; echo $dtAno2."<br>"; // resultado to_char(noti_dtinfr,'YYYY') $dtMes2=null;$dtDia2=null;$dtHora2=null; $dtGrpBy = $dtAno2 . ' , ' .$dtMes2 . ' , ' .$dtDia2 . ' , ' .$dtHora2 ; echo $dtGrpBy; // resultado to_char(noti_dtinfr,'YYYY'),,, to_char faz parte da gramática do PHP Oracle, e encontrei esse tópico no Google: PHP Oracle SQL Select date to_char - Stack Overflow
  22. <?php $dtAno2 = date('Y'); echo $dtAno2."<br>"; // resultado 2022 $dtMes2 = date('m/Y'); echo $dtMes2."<br>"; // resultado 12/2022 $dtDia2 = date('d/m/Y'); echo $dtDia2."<br>"; // resultado 21/12/2022 $dtHora2 = date('H:i:s d/m/Y'); echo $dtHora2."<br>"; // resultado 23:20:54 21/12/2022 date_default_timezone_set('America/Sao_Paulo'); echo $dtHora2."<br>"; // resultado 23:20:54 21/12/2022 $dtGrpBy = $dtAno2 . ' , ' .$dtMes2 . ' , ' .$dtDia2 . ' , ' .$dtHora2 ; echo $dtGrpBy; // resultado 2022, 12/2022, 21/12/2022, 23:20:54 21/12/2022 Para colocar essas informações no iReport, isso eu não faço a menor ideia.
  23. Pelo que vi no Google, o OCI8 é uma extensão para o PHP ver o banco de dados da Oracle. Já o NCLOB você consegue com esse comando: SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET' Fonte: PECL :: Package :: oci8 (php.net) e sql - What is the difference between CLOB and NCLOB? - Stack Overflow
  24. Consegui resolver! Tudo indica que o comando for do JavaScript só funciona uma vez, logo eu troquei pelo comando forEach. Esse comando funciona pelo menos duas vezes. <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbprod order by prod"); $prod=$query->fetch_all(MYSQLI_ASSOC);?> <script> function procurar(valor){ for(i=0;i<produtos.options.length;i++){ if(produtos.options[i].value==valor){ j=produtos.options[i].getAttribute('data-id');}} show(j);} function show(j){ divshow.innerHTML=""; teste=[1,2,3,4,5,6,7,8,9,10] teste.forEach(function(){ divshow.innerHTML+=produtos.options[j].value+"<br>";j++})} </script> <div><p><p> <form> <input list=produtos autofocus id=produto onchange=procurar(value) autofocus> <datalist id=produtos> <?php foreach($prod as $key=>$pr){echo "<option data-id=$key value='".$pr['prod']."'>";} ?> </datalist></form></div> <div id=divshow></div> <script>show(0)</script>
×
×
  • Criar Novo...