
Frank K Hosaka
Membros-
Total de itens
1.623 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
Tentei usar o route::resource que aparece no projeto Chirps (mencionado no começo do manual oficial do Laravel 10), mas não deu certo. Depois de conferir várias vezes, eu não tive outra escolha senão pedir ajuda no Laracasts, assim: My route::resource doesn't work // web.php Route::resource('venda',VendaController::class); // controllers class VendaController extends Controller{ public function index():View{ return view('venda'); } public function store(Request $request):RedirectResponse{ return "olá mundo";} } // venda.blade.php <form action="{{route('venda.store')}}"> @csrf <input name=teste> </form> Em menos de cinco minutos veio a resposta do Lary: The issue with the code is that the store method in the VendaController is returning a string instead of a RedirectResponse object. To fix this, change the return statement in the store method to: return redirect()->route('venda.index'); This will redirect the user to the index method of the VendaController after submitting the form. Also, make sure that the venda.blade.php file is saved in the resources/views directory. Here's the updated code: // web.php Route::resource('venda', VendaController::class); // controllers class VendaController extends Controller { public function index(): View { return view('venda'); } public function store(Request $request): RedirectResponse { // Process the form data here return redirect()->route('venda.index'); } } // venda.blade.php <form action="{{ route('venda.store') }}" method="POST"> @csrf <input name="teste"> <button type="submit">Submit</button> </form> Ou seja, eu não posso usar o método GET, quando trabalhar com o route::resource.
-
Antes de 2020, eu usava o PowerPoint e o Access, ambos do Microsoft Office, para imprimir etiqueta de preço. Até hoje eu não sei mexer no PowerPoint, mas consegui montar um programa de etiqueta nele pelo VBA, ele pegava as informações no Access, montava a etiqueta para mim, e imprimia exatamente o que ele mostrava na tela. Essa é a famosa tecnologia Wyswyg, What You See Is What You Get. O problema do Office é que eu não sabia como conectá-lo com o meu celular. Foi assim que começou a minha aventura no PHP. O grande problema do PHP é que só funciona se você sabe usar o HTML. Já se passaram três anos, e só hoje é que eu aprendi a aumentar ou diminuir o tamanho da fonte no HTML. O PHP pode alterar o HTML, mas eu não sei como ensiná-lo a calcular o tamanho da fonte para caber dentro de uma <div>. Assim, eu fiz o HTML na base da tentativa e erro, tudo na unha. Mas, na hora de imprimir, eu descobri um novo problema: o HTML não é Wyswyg. Ou seja, você vê o HTML de um jeito, mas a impressora enxerga de outro jeito. Para resolver o problema, eu fiz uma captura de tela para depois imprimir. Eu achei isso bastante embaraçoso. <style> #box1 {border: 1px solid #000000;position: absolute;width: 18%;height:15%;left:5%} #box2 {border: 1px solid #000000;position: absolute;width: 18%;height:15%;left:25%} #box3 {border: 1px solid #000000;position: absolute;width: 18%;height:15%;left:45%} .titulo1{text-align:center;font-size:230%} .preco1{text-align:center;font-size:300%} .titulo2{text-align:center;font-size:230%} .preco2{text-align:center;font-size:300%} .titulo3{text-align:center;font-size:150%} .preco3{text-align:center;font-size:350%} </style> <div id="box1"> <div class="titulo1">542 Trado 08</div> <div class="preco1">R$ 175,00</div> </div> <div id="box2"> <div class="titulo2">543 Trado 10</div> <div class="preco2">R$ 224,50</div> </div> <div id="box3"> <div class="titulo3">389 Cavadeira 2 Cabos</div> <div class="preco3">R$ 61,50</div> </div>
-
Problemas com tabela quando passa codigo CSS para exibir imagem na escrita quebra a mesma!!!
pergunta respondeu ao ssj4bq de Frank K Hosaka em PHP
Para manter o mesmo padrão da primeira imagem, eu exclui o CSS *, e para a imagem não distorcer a tabela, eu defini o tamanho da imagem em width=100px e height=70px. Eu gostei do CSS a span e a:hover span, não sabia que era possível fazer aparecer e desaparecer uma imagem como se fosse um modal. O que eu não consegui foi colocar a sirene do corpo de bombeiros dentro do código fonte. Tem jeito de explicar como você conseguiu isso? <style type=text/css> ::-webkit-scrollbar{width:1.5rem} ::-webkit-scrollbar-track{background-color:#ccc;box-shadow:inset 1px 1px 4px rgba(black,.2);width:1rem} ::-webkit-scrollbar-thumb{background-image:linear-gradient(red,black);box-shadow:inset 1px 1px 2px white;border-radius:1px} ul{margin:20px 0 0 20x;list-style:none;} a{position:relative;display:block;width:400px;padding:1px 0;background-color:#FFFFFF;text-decoration:none;color:#000000} a:hover{background-color: #999999;} a span{display:none} a:hover span{display:block;position:absolute;top:0px;left:100%;border:1px #CCCCCC solid} </style> <table border=1 style="height:839px;display:block;overflow-x:hiden;width:100%"> <tr> <th width=100% bgcolor=D9D9D9><center><b>PRODUTOS</b></center></th> <th style="padding:0 55px" bgcolor=F4CCCC><center><b>VALOR</b><center></th> <tr> <td bgcolor=00FFFF><center><b>A</b></center></td> <td> <tr> <td><font size=5><center><a href=#>Action Figure Sword Art O. CR Wedding Sinon<br><span><img src="gato.jpg" alt="gato" width=100px height=70px></span></a>LINK</center></font></td> <td><font sinze=5><center>R$ 200,00<br><a href="https://www.americanas.com.br/produto/4083026862" target="_blank">NOS SITES</a></center></font></td> </table> -
Ontem, eu perdi um tempão para consertar uma tabela. Os programadores profissionais dividem o HTML em <div> para apresentar as informações de forma atraente e consistente, mas eu ainda não cheguei lá. Eu imaginava que eu era um programador eventual que só sabe mexer com o <table>. Um <table> profissional tem o formato <table><thead><th></th></thead><tbody><tr><td></td></tr></tbody></table>, mas eu só uso <table><tr><td></table>, mas o desalinhamento mostrou que nem mereço o diploma de programador eventual. Eu tentei consertar a tabela, estudando Bootstrap 5.3. Lá eu vi <th scope='col'>, <th scope='row'>, bem como <thead> e <tbody>. Sem dúvida ficou bem melhor, mas ainda sobrou um pedaço da linha que não queria encostar na borda da tabela. Mas por sorte eu encontrei uma célula <td> que não tinha o cabeçalho <th> correpondente, e isso sim explicou porque a minha tabela ficou desalinhada. Depois de descobrir o meu erro, joguei fora o <th scope='col'>, <thead> e <tbody> bem como um monte de </th> e </td>. Outra coisa curiosa que eu encontrei é que eu não conseguia avermelhar um <td> se eu usar <table class="table table-striped">, quando a linha é mais escura. É que eu usei um CSS particular .preto , .vermelho. Assim, precisei padronizar a formatação, tudo em Bootstrap. Ao invés de .preto, eu usei <td class="text-dark">. O problema é que eu trabalho mais com números, assim eu precisava alinhar tudo pela direita, e a gramática do Bootstrap é essa: <td class="text-danger text-end">. Fazendo teste isolado, ele funciona, mas dentro do Blade do Laravel, eu só tive problema. O meu código ficou assim: codigo.blade.php @php if($custoatual!=$custoanterior){$classe="text-danger text-end";} else {$classe="text-dark text-end";} @endphp <td class={{$classe}}>{{$custoanterior}} Depois de quatro horas, eu descobri o meu erro. Não basta usar aspas na variável, mas também em torno do token do blade, assim: <td class="{{$classe}}">{{$custoanterior}} A vida é bruta!
-
Plotar gráfico com PHPLOT
pergunta respondeu ao Jeanfson Dutra de Frank K Hosaka em Repositório de Scripts - PHP
Eu não consegui achar o ProcessaPDF.class.php na internet, eu só achei phpplot.php, fiz um teste com esse código: <?php //include_once ("ProcessaPdf.class.php"); require_once 'phplot.php'; $palavras = [['Frank',10],['Joao',6],['Pedro',3]]; $plot = new PHPlot(640 , 480); //$data = [['1940' , 6.2 ],['1950' , 6.2 ],['1960' , 6.3 ],['1970' , 5.8 ]]; $data=$palavras; $plot->SetTitle('Grafico da analise de palavras-chave encontradas'); $plot->SetPlotType("bars"); $plot->SetXTitle("Palavras vagas do vento"); $plot->SetYTitle("Frequencia"); $plot->SetFont('x_title',2); $plot->SetFont('y_title',2); $plot->SetDataValues($data); $plot->SetYDataLabelPos('plotin'); $plot->DrawGraph(); ?> No final, deixo a imagem do gráfico. Você sabe onde posso encontrar uma cópia do ProcesaPdf.class.php? -
Essa dica eu encontrei nessa página: javascript - How to show calendar popup when input[type="date"] is on focus - Stack Overflow Fiz um código teste, ele funciona! index.php <style> .input-container input { border: none; box-sizing: border-box; outline: 0; padding: .75rem; position: relative; width: 100%; } input[type="date"]::-webkit-calendar-picker-indicator { background: transparent; bottom: 0; color: transparent; cursor: pointer; height: auto; left: 0; position: absolute; right: 0; top: 0; width: auto; } </style> <input type=date> Em tempo, sozinho ele funciona muito bem, mas no meio de um código maior ele acaba apresentando comportamento inesperado.
-
No começo do manual do Laravel 10 tem o projeto Chirps, e lá encontrei a seguinte rota: Route::resource('chirps',ChirpController::class) ->only(['index','store','edit','update','destroy']) ->middleware(['auth','verified']); Ou seja, se você digitar no navegador localhost:8000/chirps, você vai parar na tela do login. Para proteger os meus códigos em laravel, eu usei esse esquema: Route::middlaware(['auth','verfied])->group(function(){ ... }); ou seja, eu ajuntei todas as minhas rotas dentro de uma rota maior. Para proteger ainda mais os códigos em Laravel, eu fui em config\session.php e alterei 'expire_on_close' => true, ou seja, assim que você fecha o navegador, você está automaticamente deslogado. O Laravel parece bacana, ele simplifica o que parece ser bem complicado. O problema é que no Hostinger eu tenho tanto o projeto PHP como o Laravel, mas eu não faço a menor ideia de como fazer essa tecnologia funcionar no mundo do PHP. Alguém tem um tutorial para me indicar?
-
Eu defini o email como único: CREATE TABLE `users` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, `email` varchar(191) COLLATE utf8mb4_general_ci NOT NULL, `email_verified_at` timestamp NULL DEFAULT NULL, `password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, `remember_token` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, `level` int DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email_UNIQUE` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
- 2 respostas
-
- programação
- logica
-
(e %d mais)
Tags:
-
Eu tentei atualizar o cadastro do cliente, mas eu logo vi que eu não tinha feito essa rotina no Laravel, o que eu tinha era apenas a tela de consulta. Mas eu lembrei do projeto Chirp (ele está no primeiro parágrafo do manual oficial do Laravel 10), ele pega todos os dados do formulário e manda diretamente no banco de dados. Eu queria copiar a ideia. Tudo o que eu precisava era mandar todos os dados do cliente no formato <input name=pessoa value={{$pessoa->pessoa}} readonly style=border:none>. Mas na hora de submeter o formulário, absolutamente nada foi encaminhado adiante. Eu precisava tirar o atributo readonly do input. Ou seja, qualquer um pode alterar os dados do cliente logo na tela de consulta. Mas como só eu mexo nesse programa, acabei gostando da solução. O código parcial do Laravel ficou assim: pessoa.blade.php @include('menu') <script>btmenu.innerHTML='Pessoa'</script> <div> <form> <table class='table table-striped'><tr><th>Busca<th align=left> <input name=busca onchange=submit() autofocus> <script>busca1.focus()</script> <tr><td><td><i>Para procurar em todos os campos use @</i> </form> @foreach($pessoas as $pessoa) <tr><td align=right><a href='?codp={{$pessoa->codp}}&pessoa={{$pessoa->pessoa}}'>{{$pessoa->codp}}</a> <td><details> <summary> <form> <b><input name=pessoa value='{{$pessoa->pessoa}}' style=border:none size=50></b></summary> Endereço:<b><input name=end value='{{$pessoa->end}}' style=border:none size=50></b> <br>CNPJ CPF: <b><input name=cnpj value='{{$pessoa->cnpj}}' style=border:none size=50></b> <br>Telefone:<b> <input name=tel value='{{$pessoa->tel}}' style=border:none size=50></b> <br>Nota:<b><input name=nota value='{{$pessoa->nota}}' style=border:none size=50></b> <br><input type=hidden name=codp value={{$pessoa->codp}}> <input name=updated_at value='{{date('Y-m-d H:i:s')}}' onclick=submit() style=border:none> </form> </details> @endforeach </table></div> DiarioController.php <?php public function pessoa(Request $request){ if($request->input('updated_at')){ $codp=$request->input('codp'); tbpessoa::where('codp',$codp)->update($request->toArray()); return redirect('orcamento');}
-
No meu projeto Laravel eu criei o arquivo menu.blade.php. Para chamar arquivo menu.blade.hp dentro do outro arquivo tipo pagar.blade.php, eu usei o comando @include('menu'). No projeto Chirps que aparece no manual oficial do Laravel 10, no entanto, ele usa outra tecnologia: <x-app-layout> </x-app-layout>, ele está amarrado no arquivo views\layout\app.blade.php, e dentro desse arquivo tem um comando reservado para incluir um novo HTML, ele é chamado de {{$slot}}. Eu não vejo nenhuma necessidade de usar essa tecnologia, mas ela é interessante. A solução mais simples é copiar todo o conteúdo do arquivo views\menu.blade.php no arquivo views\layout\app.blade.php e no final acrescentar o comando {{$slot}}. O chato é que eu vou precisar colocar marcador <x-app-layout> </x-app-layout> em todos os demais arquivos que se reportavam ao menu.blade.php. A Lei do Menor Esforço me orienta a não mexer no meu projeto, mas nada impede de eu fazer um teste. Encontrei um outro tutorial no Google informando que eu preciso usar o comando php artisan make:components teste. Ele cria o arquivo views\components\teste.blade.php. Dentro dele, criei o seguinte código: olá mundo 1 <div> {{$slot}} </div> olá mundo 2 Dentro da pasta views, eu criei o arquivo teste2.blade.php <x-teste> teste2 </x-teste> Para eu poder chamar o arquivo teste2 na barra do navegador, eu acrescentei esse código no arquivo routes/web.php: Route::view('teste2','teste2'); Note que 'teste2' aparace duas vezes, o primeiro é o comando que você vai usar no navegador: localhost:8000/teste2 e o segundo é o nome do arquivo que o Laravel vai ter que abrir e mostrar no navegador, assim:
-
Ontem eu estava estudando o projeto Chirps que aparece logo no primeiro parágrafo do manual do Laravel 10. Lá tem centenas de recursos que eu ainda não sei usar, mas o mais bacana é o Laravel pegar os dados de um formulário e jogar diretamente no banco de dados. O meu projeto é um monte de linguiças por não saber como usar as ferramentas do Laravel de maneira adequada. O Laravel tem uma ferramenta chamada Helper, mas ele só funciona no lado do servidor e não no lado do cliente. Então, ontem veio a clássica pergunta, como mandar um valor válido para o Laravel trabalhar? Hoje de manhã eu lembrei do JavaScript, ele é o único que é capaz de pegar o valor do <form>, mudar o que for preciso, para a jornada continuar tranquilo. Olha só: index.php <script> function validar(){ valor.value=valor.value.replace(",",".")} </script> <form> <input name=valor id=valor value=9,99> <input type=submit onclick=validar()> </form> <?php if(!isset($_GET['valor'])){exit;} echo $_GET['valor']; e a seguir um trecho parcial do Laravel produtoNovo.blade.php @include('menu') <script> function valida(){ custo.value=custo.value.replace(",",".") margem.value=margem.value.replace(",",".")} </script> <div><table class='table table-sm table-striped'><tr><th><th> <form action={{route('produtoStore')}}> <tr><td><td><font color=blue>Cadastrar Novo Produto <tr><td>Produto<td><input name=prod autocomplete=off size=40> <tr><td>Unidade<td><input name=un value=un autocomplete=off> <tr><td>Custo<td><input name=custo id=custo autocomplete=off> <tr><td>Código Produto Fornecedor<td><input name=codforn autocomplete=off> <tr><td>Margem<td><input name=margem id=margem autocomplete=off> <tr><td><td><input type=submit onclick=valida() value=Confirmar> </form></table></div> DiarioController.php <?php public function produtoStore(Request $request){ tbprod::create($request->toArray()); return redirect('produto'); }
-
Veja se você encontra o id do processo através do var_dump($listaJuntasCadastradas);
-
Depois de quase um ano, eu consegui transformar o meu projeto em PHP em Laravel. Ele funciona do jeito que eu quero, mas isso não quer dizer que o projeto Laravel esteja correto. Assim, eu tomei a iniciativa de tentar estudar o Laravel 10.x no site oficial, eu ainda estou preso no primeiro parágrafo. Ele ensina a criar o projeto Chirps para quem não está familiarizado com o Laravel. Como ele está em inglês, eu fui tentando entender na base da tentativa e erro. Eu tive que jogar fora quatro vezes o projeto, pois eu só recebia mensagens de erro. Quando usei o Laravel nesse último ano, eu só usei um terminal. O projeto Chirps pede para você trabalhar com três terminais! Um terminal é para ativar o php artisan serve. Outro terminal é para ativar npm run dev. E finalmente outro terminal é para mexer nos códigos. No ano passado, eu vi o npm run dev, mas não sabia para que servia, e eu deixei ele de lado. Mas dessa vez, acabei gostando desse comando, o projeto Chirps mostra a grande mágica do Laravel com a ferramenta npm run dev, ele atualiza no navegador para qualquer alteração que você faz no código em tempo real. Logo adiante, o projeto Chirps pede para você abrir mais um terminal: php artisan tinker. Você digita coisa do tipo Chirp::all( ); e ele mostra o que tem dentro dessa tabela, mas no meu caso apareceu duas vezes a mensagem de erro de que não foi encontrado a classe "Chirp". Ao invés de começar do zero, eu pedi ajuda para o Laracasts e o Lary me respondeu em menos de cinco minutos para eu usar o comando composer dump-autoload. Enfim, em dois dias já consegui chegar no segundo parágrafo do projeto Chirps, e já vi dezenas de ferramentas que eu nunca usei no meu projeto. Ainda faltam mais trinta parágrafos para chegar até o final e assim conseguir o meu diploma de iniciante.
-
Update grava o caminho da imagem corretamente no BD, mas a imagem não sobe para a pasta.
pergunta respondeu ao mm_edilson de Frank K Hosaka em PHP
Tudo indica que o seu código foi feito para alterar o cadastro da igreja com o IdIgreja=1. Fiz um código resumo, e acho que você quis dizer que o programa faz tudo, menos atualizar a imagem do IdIgreja=1. O programa pede para gravar a nova imagem na pasta photos (no computador local), mas no banco de dados você diz que ele foi parar lá na internet (www.sgi.dev.br), e a página que você edita busca a foto aonde você não gravou a imagem, ou seja, www.sgi.dev.br. Fiz um código resumo, onde o programa grava a imagem na pasta photos e recupera a imagem na mesma pasta, tirando o portal do sgi.dev.br do código: painel.php <?php $conn=new PDO("mysql:host=localhost;dbname=astudy","root",""); $resultado = $conn->prepare("SELECT * from cadigreja"); $resultado->execute(); $row = $resultado->fetchAll(PDO::FETCH_ASSOC); $row_igreja=$row[0]; $tipo = $row_igreja['tipo']; ?> <form id="formulario" method="POST" enctype="multipart/form-data" action=""> <table> <tr><td>ID:<td><input name="id" value="<?php echo $row_igreja['IdIgreja']; ?>"> <tr><td>Nome:<td><input name="nome" value="<?php echo $row_igreja['Nome']; ?>"> <?php $logo_igreja = $row_igreja['Logo']; $logo = $logo_igreja; ?> <tr><td>Imagem:<td><input id="selecao-arquivo" type="file" name="flImage" accept="image/*"> <script type="text/javascript"> foto_logo = document.getElementById('selecao-arquivo'); foto_logo.addEventListener('change', function(e) { showThumbnail(this.files);}) function showThumbnail(files) { if (files && files[0]) { reader = new FileReader(); reader.onload = function (e) { imgPhoto.src = e.target.result;} reader.readAsDataURL(files[0]);}} </script> </table> <div class="logo" id="foto_logo" name="foto_logo"> <img id="imgPhoto" src="<?php echo $logo ?>"></img> <input class="btn_edit" type="submit" name="salvar" value="SALVAR"> </form> <?php if(!empty($_POST)){ if (!empty($_FILES['flImage']['name'])){ $arquivo_tmp = $_FILES[ 'flImage' ][ 'tmp_name' ]; $nome_imagem = $_FILES[ 'flImage' ][ 'name' ]; $extensao = pathinfo ( $nome_imagem, PATHINFO_EXTENSION ); $extensao = strtolower ( $extensao ); strstr ( '.jpg;.jpeg;.gif;.png', $extensao ); $novoNome = "logo_igreja" . '.' . $extensao; $destino = 'photos/' . $novoNome; move_uploaded_file( $arquivo_tmp, $destino ); $logo_atual = $destino;} $id = $_POST['id']; $nome = $_POST['nome']; $sql = "UPDATE CadIgreja SET Nome=?,Logo=? WHERE IdIgreja=?"; if($conn->prepare($sql)->execute([$nome,$logo_atual,$id])){ echo '<script> alert ("Registro atualizado com sucesso!"); location.replace("painel.php")</script>'; } else { echo '<script> alert ("Houve um erro. Tente novamente!"); location.href=("painel.php?igreja_editar")</script>'; } } else {} ?> -
Update grava o caminho da imagem corretamente no BD, mas a imagem não sobe para a pasta.
pergunta respondeu ao mm_edilson de Frank K Hosaka em PHP
Eu fiz o teste por aqui, recebi várias mensagens de erro, desativei a rotina de validação da session, botei o meu banco de dados e consegui construir a tabela cadigreja (o meu banco de dados não aceita letras maiúsculas). Na hora de fazer o teste, ele reclamou que eu não tinha a pasta photos, então criei a pasta. Deu tudo certo, o arquivo que eu escolhi foi gravado como logo_igreja.ico, e no banco de dados o campo logo recebeu o nome http://www.sgi.dev.br/paginas/photos/logo_igr. O que eu não consigo é avançar para o próximo registro. Vou trabalhar nisso agora. -
Update grava o caminho da imagem corretamente no BD, mas a imagem não sobe para a pasta.
pergunta respondeu ao mm_edilson de Frank K Hosaka em PHP
Geralmente o comando para selecionar o arquivo vem dentro de um esquema assim: <form> <input type=file> </form> e pelo seu código não dá para saber onde começa e onde termina o formulário. Tem jeito de passar o código completo? -
Se a sugestão do Iowys não funcionar, tente esse daqui: $listaJuntasCadastradas[$key] = $value['ID'] . ' - ' . $value['JUNTA_DESCRICAO'];
-
Desde 24 de fevereiro é que eu aluguei um espaço na internet para guardar o meu banco de dados em MySQL e os códigos PHP e Laravel. O nome do hospedeiro é Hostinger, e ele me cobra R$ 22,40 por mês (a minha assinatura é de 12 meses, para quem assinar para 48 meses, o preço do aluguel cái para R$ 10,99 por mês). A hospedagem na internet já existe há muito tempo, mas só em 2020 é que comecei a estudar o MySQL e o PHP, e usei o meu notebook como servidor. Em 2022 comecei a estudar o Laravel, onde eu tive uma pequena introdução à criação de uma senha, e assim só em 2023 é que estava mais ou menos preparado para hospedar alguma coisa minha na internet. Lá em 1995 cheguei a alugar um espaço na internet, mas não sabia o que guardar por lá, e assim o próprio locador decidiu acabar com o contrato, uma vez que deixei de usar o espaço por três meses. Todas as conexões no Hostinger que eu fiz pelo celular foram estáveis, o que não foi o caso do meu notebook quando tentava simular o serviço de servidor. Hoje, no entanto, eu pensei em estudar o código Laravel pelo celular. Para estudar o Laravel ou o PHP, tudo o que você precisa é de um gerenciador de arquivos e um bom editor de texto. E isso faz parte do pacote de serviços do Hostinger. Claro que editar texto no celular é um horror, mas como se trata de programação, a velocidade da digitação não é importante e sim a sintaxe bem como a lógica. Lá em 1999, o meu sonho era conectar o celular no banco de dados, hoje estou feliz por conseguir até programar pelo celular. Isso demorou apenas 25 anos. Mas já vivo o começo da era da Inteligência Artificial, o computador não precisa mais dos programadores. Então, como é que vou ganhar dinheiro daqui para frente?
-
A minha sugestão é trabalhar com modal, uma contém as informações do banco de dados, e a outra nada. Use o JavaScript para gerenciar o tempo e alternar as modais.
-
php Atualizar Várias Linhas dentro de Um Loop
pergunta respondeu ao Elisame Araújo de Frank K Hosaka em PHP
Eu montei o seguinte código para demonstrar a atualização de vários registros ao mesmo tempo: index.php <?php $mysqli=new mysqli("localhost","root","","astudy"); $result=$mysqli->query("select * from faixas"); ?> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <div style="width:50%;margin:0 auto;margin-top:5%"> <table> <tr style=height:20px> <form method=post> <button type=submit name=update class="btn btn-success"><i class="fa-solid fa-arrow-up-from-bracket"> Atualizar</i> </button> <?php while($sqlSelect = mysqli_fetch_assoc($result)) { ?> <tr> <td><input value="<?=$sqlSelect['trackNumero']?>" class="form-control" name=trackNumero[]> <td><input value="<?=$sqlSelect['trackTitulo']?>" class="form-control" name=trackTitulo[]> <td><input value="<?=$sqlSelect['trackTraducao']?>" class="form-control" name=trackTraducao[]> <td><input value="<?=$sqlSelect['trackID']?>" class="form-control" name=trackID[] readonly> <td><input value="<?=$sqlSelect['albumID']?>" class="form-control" name=albumID[] readonly> <td> <?php } ?> </form></table> <?php if(isset($_POST['update'])){ $j=Count($_POST['trackNumero'])-1; for($i=0;$i<=$j;$i++){ $trackNumero = $_POST['trackNumero'][$i]; $trackTitulo = mysqli_real_escape_string($mysqli, $_POST['trackTitulo'][$i]); $trackTraducao = $_POST['trackTraducao'][$i]; $trackID = $_POST['trackID'][$i]; $albumID = $_POST['albumID'][$i]; $sqlUpdate = "update faixas set trackTitulo='$trackTitulo', trackNumero=$trackNumero, trackTraducao='$trackTraducao' where albumID=$albumID and trackID=$trackID"; mysqli_query($mysqli,$sqlUpdate); if(!mysqli_affected_rows($mysqli)){echo "grande problema!";exit;}} header('location:index.php'); } ?> -
Incluir um novo registro baseado em outra tabela no Eloquent
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Acabei de receber uma resposta da Inteligência Artificial do fórum Laracasts, ele sugere eu criar a rotina do acréscimo do registro no módulo Models do Laravel. A solução é interessante, mas o meu inglês é péssimo e eu esqueci de informar no fórum que a tabela tbcontacorrente já tem alguns registros que já foram gravados anteriormente, e se você tentar adicionar o mesmo registro, isso dá certo no PHP, mas no Laravel o programa pára afirmando que você violou a chave primária da tabela. Aqui a resposta do Laracasts: To add a record from another table using Eloquent, you can use the create method on the model for the table you want to add the record to. Here's an example: $otherRecord = OtherModel::find($id); // get the record from the other table $newRecord = NewModel::create([ 'field1' => $otherRecord->field1, 'field2' => $otherRecord->field2, // add any other fields you need to populate ]); In this example, we're getting a record from the OtherModel table using its id, and then creating a new record in the NewModel table using the values from the OtherModel record. You can modify this example to fit your specific use case. For example, if you want to add a record to tbcontacorrente using values from tbdiario, you could do something like this: $diarioRecord = tbdiario::find($id); // get the record from tbdiario tbcontacorrente::create([ 'docto' => $diarioRecord->docto, // add any other fields you need to populate ]); This would create a new record in tbcontacorrente using the docto value from the tbdiario record. -
No meu projeto PHP eu usei o comando insert into para adicionar um novo registro na tabela tbcontacorrente, baseado na tbdiario. Ele funcionou sem nenhum problema. Já a gramática do Eloquent é bem diferente, ele usa o comando Create, o problema é que não achei nenhum tutorial de como usar o Create tendo como base outra tabela. A solução que eu encontrei foi o de criar um array da tabela tbdiário e outro array para a tabela tbcontacorrente, e criar um novo registro na gramática do Eloquent baseado na diferença dos arrays. Se alguém tiver uma solução melhor (na gramática do Eloquent), eu aguardo. A minha solução ficou assim (ele funciona, isso não quer dizer que esteja correto): <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\tbcontacorrente; use App\Models\tbdiario; class DiarioController extends Controller { public function pagar(Request $request){ $doctos=tbdiario::select('docto')->where('contad',130)->orWhere('contad',211) ->orWhere('contac',130)->orWhere('contac',211)->get()->toArray(); $pendencias = tbcontacorrente::select('docto')->get()->toArray(); $a=[]; foreach($doctos as $key=>$value){$a[]=$value['docto'];} $b=[]; foreach($pendencias as $key=>$value){$b[]=$value['docto'];} $difs=array_diff($a,$b); foreach($difs as $dif){ tbcontacorrente::create(['docto'=>$dif]);} } }
-
Eu não tenho experiência com o Oracle, mas eu acredito que o problema está na definição da variável DIAUTIL. Eu fiz um pequeno teste em PHP para calcular o décimo dia útil de março de 2023. Tente ver se bate com o seu: index.php <div style="width:25%;margin:0 auto;margin-top:5%"> <?php $feriados=['2023-01-01','2023-02-20','2023-02-21','2023-02-22', '2023-04-07','2023-04-21','2023-05-01','2023-06-08','2023-09-07', '2023-10-12','2023-11-02','2023-11-15','2023-11-20','2023-12-24', '2023-12-25','2023-12-31']; setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'portuguese'); $data=date('Y-m-d'); $mes=date('m'); $ano=date('Y'); $format = new IntlDateFormatter('pt_BR', IntlDateFormatter::NONE, IntlDateFormatter::NONE, NULL, NULL, "MMMM"); $mesextenso = datefmt_format($format, strtotime($data)); $mesextenso = ucfirst($mesextenso); echo "Calculando o décimo dia útil <br>do mês de $mesextenso de ".date('Y',strtotime($data))."<p>"; $dia=1; $diautil=0; while($diautil<10){ $data=date('Y-m-d',strtotime("$ano-$mes-$dia")); echo "<br>".date('d/m/Y',strtotime($data)); $diasemana=date('N',strtotime($data)); if($diasemana>0 && $diasemana<6){$var=$diasemana+1;$diatexto=$var."a.";} if($diasemana==6){$diatexto="Sábado";echo " $diatexto";goto prossegue;} if($diasemana==7){$diatexto="Domingo";echo " $diatexto";goto prossegue;} echo " $diatexto"; if(in_array($data,$feriados)){echo " Feriado";goto prossegue;} $diautil++; echo " $diautil"."o. dia útil"; prossegue: $dia++; } ?> </div>
-
Para eu conseguir o período de apuração no MySQL montei o seguinte view: CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `vw_apuracao` AS SELECT DATE_FORMAT(`tbdiario`.`dia`, '%Y-%m') AS `apuracao` FROM `tbdiario` GROUP BY YEAR(`tbdiario`.`dia`) , MONTH(`tbdiario`.`dia`) ORDER BY `apuracao` DESC O problema é que o Laravel não aceita esse recurso, assim eu crei uma nova consulta dentro do Controller, assim <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\tbdiario; class DiarioController extends Controller { public function balancete(Request $requery){ if($requery->input('apuracao')){ $apuracao=tbdiario::orderBy('dia','desc')->get()->groupBy(function($data){ return \Carbon\Carbon::parse($data->dia)->format('Y-m');}); return view('apuracao',compact('apuracao'));}}} O problema é que o resultado de $apuração não é apenas as apurações, mas toda a tabela tbdiario, onde as apurações aparecem como chave. O nome disso é Collections, eu acredito que é o mesmo conceito do JavaScript, quando a gente tenta ver o conteúdo de um elemento HTML através do console.log( ). Assim, usei essa sintaxe para montar o apuração.blade.php: <div style="width:25%;margin:0 auto"> <form> <table> @foreach($apuracao as $key=>$valor) <td nowrap><button name=apuracao value={{$key}}>{{$key}}</button> @php $mes=substr($key,5,2) @endphp @if($mes=="01" || $mes=="07") <tr> @endif @endforeach </form></div> Ou seja, o Laravel é como o HTML, o Javascript e o PHP. É só alegria, quando funciona.
-
Exibir window.alert de acordo com um link variável do botão
pergunta respondeu ao mm_edilson de Frank K Hosaka em Tutoriais & Dicas - PHP
<script> function ver(pagina){if(pagina==1){alert("você será encaminhado para a página 2")}} </script> <?php $paginaAtual=1; $link="pagina2.php" ?> <div style="width:25%;margin:0 auto;margin-top:10%"> <button class="field2" onclick=ver(<?=$paginaAtual?>)> <a href="?<?=$link?>">Prosseguir</a> </button> </div> Tem um ponto de interrogação em <a href=?>. Na minha opinião, ele não deveria ser colocado nessa posição, a menos que a página 2 esteja no mesmo documento da página 1. Nesse caso, o $link deveria ser apenas "pagina2" e não "pagina2.php".