Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.656
  • Registro em

  • Última visita

6 Seguidores

Sobre Frank K Hosaka

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Frank K Hosaka's Achievements

0

Reputação

  1. Foi sem querer que descobri que é possível executar o <input type="file"> clicando apenas no <label>, e isso abriu a possibilidade de ocultar o botão "selecionar o arquivo" e também a mensagem "nenhum arquivo selecionado", através de uma gambiarra, reduzindo o tamanho do marcador <input> para zero: <?php if(isset($_GET['rota'])) { echo "<div class='w-[500px] mt-[100px] m-0 m-auto'> O nome do arquivo é ".substr($_GET['rota'],12)."</div>"; } ?> <script src="https://cdn.tailwindcss.com"></script> <div class="w-[500px] mt-[200px] m-0 m-auto"> <label for="arquivo" class="w-[200px] bg-gray-200 border rounded-lg px-2 py-2"> Selecione o arquivo </label> <input type="file" name="arquivo" id="arquivo" class="w-[0px]" onchange="location.replace('?rota='+this.value)"> </div>
  2. Você também pode tentar incluir tudo numa só página: <style> h1 { text-align: center; color: #0077cc; } </style> <h1>Olá mundo</h1>
  3. Verifique se os dois arquivos estão no mesmo diretório, o arquivo que contém html/php tem que ter a extensão php, e o outro arquivo tem ser o tarefas.css Eu já gosto mais do tailwind: <?php session_start(); if (isset($_GET['nome'])) { $_SESSION['lista_tarefas'][] = $_GET['nome']; } if (isset($_SESSION['lista_tarefas'])) { $lista_tarefas = $_SESSION['lista_tarefas']; } else { $lista_tarefas = array(); } // include "template.php"; ?> <html> <head> <meta charset="utf-8" /> <title>Gerenciador de Tarefas</title> <script src="https:cdn.tailwindcss.com"></script> </head> <body class="font-sans bg-[#f4f6f8] m-5 text-[#333] w-[500px] m-0 m-auto"> <h1 class="text-center text-[#0077cc] text-3xl text-semibold mt-5">Gerenciador de Tarefas</h1> <form class="mb-[20px]"> <fieldset class="border-2 border-[#0077cc] rounded-lg p-4 mb-4 bg-white"> <legend class="font-bold text-[#0077cc]">Nova tarefa</legend> <input type="text" name="nome" class="w-[95%] p-2 mt-1 mb-2 border border-gray-400 rounded-md" placeholder="Tarefa:" /> <input type="submit" value="Cadastrar" class="bg-[#0077cc] text-white border-none px-4 py-2 rounded-lg cursor-pointer hover:bg-[#005fa3]"/> </fieldset> </form> <table class="w-full border-collapse bg-white"> <tr class="even:bg-[#f9f9f9]"> <th class="border border-gray-300 px-4 py-2 text-left bg-[#0077cc] text-white">Tarefas</th> </tr> <?php foreach ($lista_tarefas as $tarefa) : ?> <tr class="even:bg-[#f9f9f9]" > <td class="border border-gray-300 px-4 py-2 text-left"><?=$tarefa?> </td> </tr> <?php endforeach; ?> </table> <textarea name="descricao" placeholder="Descrição (Opcional):" class="w-[95%] p-2 mt-1 border border-gray-400 rounded-md"></textarea> <input type="text" name="prazo" placeholder="Prazo (Opcional):" class="w-[95%] p-2 mt-1 border border-gray-400 rounded-md"/> </label> <fieldset class="border-2 border-[#0077cc] rounded-lg p-4 mb-4 bg-white"> <legend class="font-bold text-[#0077cc]">Prioridade:</legend> <label class="block my-[10px]"> <input type="radio" name="prioridade" value="baixa" checked /> Baixa <input type="radio" name="prioridade" value="media" /> Média <input type="radio" name="prioridade" value="alta" /> Alta </label> </fieldset> <label class="block my-[10px]"> Tarefa concluída: <input type="checkbox" name="concluida" value="sim" /> </label> <input type="submit" value="Cadastrar" class="bg-[#0077cc] text-white border-none px-4 py-2 rounded-lg cursor-pointer hover:bg-[#005fa3]" /> </body> </html>
  4. Depois que instalei a biblioteca do dompdf com o comando composer require dompdf/dompdf eu precisei alterar o arquivo print.pdf: <?php require __DIR__ . '/vendor/autoload.php'; use Dompdf\Dompdf; $dompdf = new Dompdf(); ob_start(); // include 'relatorio.php'; // $html=ob_get_clean(); // $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); $output = $dompdf->output(); file_put_contents("./tmp/relatorio.pdf", $output); die("<script>location.href='./tmp/relatorio.pdf';</script>"); O projeto polo3 que mandei para você não contempla relatório em pdf, pois ele está preso no critério da identificação do visitante. No seu exemplo, você trabalha com "matrícula". Vamos supor que entra 50 ônibus escolares com 50 crianças em cada uma delas, nenhuma trouxe documento e nem sabem o que é nome completo, como é que vamos cadastra-las?
  5. Essa é a ideia do polo 3 que mandei para você. Espero que você goste dele.
  6. https://github.com/frankhosaka/polo3 Graças a Deus, eu consegui!
  7. Eu não vejo como a matrícula aleatória pode ajudar a identificar o visitante. Eu ainda acredito que o nome que o visitante fornece é o melhor ponto de partida. Caso você insista em usar a matrícula aleatória, como você vai saber o número da matrícula do visitante que pretende sair?
  8. Com a ajuda do Copilot eu consegui pegar um arquivo do diretório Downloads e colocar na raíz do diretório do projeto PHP, mas precisei usar várias tentativas; precisei editar o arquivo PHP.ini de tal forma que o PHP aceitasse a trabalhar com arquivo de 300 mb, acho que o arquivo original é de apenas 10 mb, e assim descobri porque só obtive frustração nas primeiras tentativas. Já o Livewire é muito mais obscuro, procurei o sistema de arquivo no manual do Laravel e eu não consegui entender absolutamente nada. O problema é que o manual está escrito em inglês e o código é bem diferente do que estava acostumado, geralmente rodeado por uma classe e métodos. Não tem nada disso, e nem sei como executar o código que eu encontrei. O manual não é nada didático. O meu problema é o arquivo zipado, eu pensei que era possível abrir o arquivo no meio do ar, mas o Copilot disse que eu preciso gravar primeiro no sistema de arquivo. O Copilot deu alguns exemplos, mas nada deu certo. É nessa hora que eu percebo que não sei absolutamente nada de linguagem de programação. O pior é que só estou fazendo o teste aqui no Notebook. Quando eu chegar no servidor, isso vai ser outro pesadelo. Estou apavorado.
  9. Para consultar uma nota fiscal eu usava o Windows e o OneDrive, isso é um serviço bem chato, mas consegui passar o serviço para o Livewire. Criei a tabela tblivroentrada e dentro dele guardei uma cópia do xml da nota fiscal. Para o Livewire procurar o CFOP e o NCM de um produto, ele usa essa função: <?php // listagem parcial function consultaLivro($lcto = null) { if($lcto) { $consulta=tblivroentrada::where('lcto',$lcto)->first(); if(!$consulta) { $this->mensagem = "Não há registro no livro para o lançamento $lcto"; } else { $xml=simplexml_load_string($consulta->xml); $namespaces=$xml->getNamespaces(true); $xml->registerXPathNamespace('n',$namespaces['']); $nome=$xml->xpath('//n:emit/n:xNome')[0]; $letra=strtolower(substr($nome,0,1)); $codigos=explode(" ",$this->codforn); foreach($codigos as $codigo) { if(strtolower($codigo[0]) === $letra) { $codXML = substr($codigo,1); break; } } $itens=$xml->xpath('//n:det'); foreach($itens as $item) { if($item->prod->cProd==$codXML) { $cfop=$item->prod->CFOP; $ncm=$item->prod->NCM; $prod=$item->prod->xProd; } } $this->mensagem = "Foi encontrado $this->codforn <br> Fornecedor $nome <br> Produto $prod <br> CFOP $cfop NCM $ncm"; } } else { $this->mensagem = null; } } e no blade tenho: @if($mensagem) <div class="fixed inset-0 flex items-center justify-center" style="background-color: rgba(0, 0, 0, 0.5)"> <div class="bg-white p-6 rounded shadow-lg"> <h2 class="text-lg font-semibold">Mensagem</h2> <p class="mt-2 text-gray-700 text-xl whitespace-nowrap">{!! $mensagem !!}</p> <button wire:click="consultaLivro" class="border rounded-lg px-2 py-2 ">Fechar</button> </div> </div> @endif
  10. Para usar o Visual Basic no Microsof Access eu marco as seguintes referências: Visual Basic for Applications Microsoft Access 16.0 Object Library Microsoft Office 16.0 Access database engine Object Library OLE Automation
  11. eu tirei a função array_column no momento de definir a variável $ambiente e isso me obrigou a trabalhar com a chave 'ambiente' da variável lá na frente. É quase difícil de enxergar. Estou estudando PHP desde 2020, e até hoje eu apanho na hora de definir uma classe, método e argumento. Eu também não sei quase nada de HTML e menos ainda MySQL. Vou fazendo tudo com tentativa e erro, hoje eu conto com a ajuda do Copilot. Espero que você tenha mais sorte na hora de resolver os problemas, estou estudando desde 2020, e não consegui resolver nada ou sequer ganhar algum trocado.
  12. Boa tarde, Cleimar, eu não tenho o projeto Portaria, mas se você mandar um arquivo zipado para [email protected], eu vou estudar e ver no que eu posso ajudar.
  13. Isso só é possível se a sua versão do php for anterior ao 5.5, e nós já estamos na versão 8.4. Ou você atualiza o PHP ou muda o código assim: <?php Class Teste { public $ambiente,$item,$selecionado; function selecionado($ambiente) { $this->selecionado=$ambiente; $mysqli=new mysqli("localhost","root","","teste"); $this->ambiente=$mysqli->query("select ambiente from tbcomodo order by ambiente")->fetch_all(MYSQLI_ASSOC); $id_comodo=$mysqli ->query("select id from tbcomodo where ambiente='$ambiente'") ->fetch_assoc()['id']; $this->item=$mysqli->query("select * from tbservico where id_comodo = $id_comodo group by item order by item")->fetch_all(MYSQLI_ASSOC); } } $teste=new Teste(); // $teste->criarTabela();exit; if(isset($_GET['rota'])) { $teste->selecionado($_GET['rota']); } else { $teste->selecionado("cozinha"); } ?> <script src="https://cdn.tailwindcss.com"></script> <body class="w-[500px] m-0 m-auto"> <h2>Selecione um cômodo</h2> <select onchange="location.replace('?rota='+this.value)"> <?php foreach($teste->ambiente as $a) : ?> <option <?=$a['ambiente']==$teste->selecionado ? 'selected' : ''?>> <?= $a['ambiente'] ?> </option> <?php endforeach; ?> </select> <h2 class="mt-5">Serviços executados</h2> <?php foreach($teste->item as $i) : ?> <div class="flex even:bg-gray-200"> <div class="w-[200px]"><?=$i['item']?></div> <div class="w-[150px]"><?=date('d/m/y H:i',strtotime($i['data']))?></div> </div> <?php endforeach; ?> </body>
  14. Frank K Hosaka

    PHP Mailer

    <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; // Certifique-se de que o autoload está correto $mail = new PHPMailer(true); try { // Configurações do servidor SMTP do Gmail $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = '[email protected]'; // Seu e-mail Gmail $mail->Password = 'abcd abcd abcd abcd'; // senha de app $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; // Remetente e destinatário $mail->setFrom('[email protected]', 'Frank K Hosaka'); $mail->addAddress('[email protected]', 'Frank K Hosaka'); // Conteúdo do e-mail $mail->CharSet='UTF-8'; $mail->Encoding='base64'; $mail->Subject = 'Teste de envio via PHPMailer'; $mail->Body = 'Olá Frank, este é um teste de envio usando PHPMailer'; $mail->send(); echo 'Mensagem enviada com sucesso!'; } catch (Exception $e) { echo "Erro ao enviar: {$mail->ErrorInfo}"; } ?> Finalmente consegui testar o PHP Mailer, o único problema é definir a senha do app na conta do Gmail. Na verdade, é o Gmail que fornece a senha do app, e você precisa incorporar no código.
  15. A dica que eu recebi hoje do Copilot para colocar o Laravel no localhost do notebook é usar esse comando no terminal do VS Code: npx concurrently -c "#93c5fd,#c4b5fd,#fdba74" "php artisan serve" "php artisan queue:work --tries=1" "npm run dev" --names="server,queue,vite"
×
×
  • Criar Novo...