Ir para conteúdo

POWERED BY:

Frank K Hosaka

Members
  • Total de itens

    224
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Frank K Hosaka

    Não consegui usar o comando for do JavaScript

    Ontem estava fazendo um blade.php no Laravel para procurar um produto através do <datalist>. Eu não sei se o Laravel tem algo que substitua o <datalist>, mas eu resolvi usar o JavaScript, onde eu aprendi que o <option> tem um propriedade chamada data-id. Eu criei um array para a consulta, e usei a chave do array para definir o data-id do <option>, e pedi para o JavaScript exibir os dez próximos itens a partir do item selecionado através do comando for(contador=selecionado;contador<selecionado+9,selecionado++), mas ele acabou listando todos os produtos a partir do item selecionado. Pensei que o problema era o ambiente Laravel, assim traduzi o blade.php em php, mas o problema continuou o mesmo. Para contornar, usei o comando forEach no lugar do for, e o código ficou assim: <?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>
  2. Frank K Hosaka

    Não consegui usar o comando for do JavaScript

    No codigo citado, se eu colocar <script> function show(j){ divshow.innerHTML=""; for(i=j;i<j+9;i++){ divshow.innerHTML+=produtos.options[i].value+"<br>"})} </script> ele não funciona, ao invés de listar apenas os dez itens solicitados, ele lista todo mundo, a partir do item selecionado. Encontrei duas soluções: <script> function show(j){ divshow.innerHTML+=produtos.options[j].value+"<br>";j++ divshow.innerHTML+=produtos.options[j].value+"<br>"; divshow.innerHTML+=produtos.options[j+1].value+"<br>"; divshow.innerHTML+=produtos.options[j+2].value+"<br>"; divshow.innerHTML+=produtos.options[j+3].value+"<br>"; divshow.innerHTML+=produtos.options[j+4].value+"<br>"; divshow.innerHTML+=produtos.options[j+5].value+"<br>"; divshow.innerHTML+=produtos.options[j+6].value+"<br>"; divshow.innerHTML+=produtos.options[j+7].value+"<br>"; divshow.innerHTML+=produtos.options[j+8].value+"<br>"; } </script> e a outra solução foi usar o forEach como na primeira listagem. Note que eu não consegui colocar [j+1] na segunda linha!
  3. Frank K Hosaka

    Como clicar em imagem e executar vídeo do youtube

    O código não funcionou comigo. Eu mudei para: <iframe allow=accelerometer;fullscreen;gyroscope;midi src=https://www.youtube.com/embed/rsFCVjr5yxc > </iframe> Ele funciona, mas a ferramenta inspecionar do navegador aponta 4 erros.
  4. Frank K Hosaka

    Erro ao gravar no banco de dados MYSQL.

    Erro 1: A sintaxe do insert é insert into LESAO_ESTOQUE (teste,data,cnes,idusuario) values (null,'$hoje',$cnes,$idusuario)"; ou seja, você começa com uma lista de campos e depois você passa a lista de valores. Erro 2: você não pode usar a função curdate( ) dentro dos valores. Por se tratar de data, você tem que utilizar uma variável e com aspas. Para ter o dia atual no PHP, o comando é $hoje=date('Y-m-d'); Possível erro 3: você não pode passar valor Null para um campo que não aceita valores nulos.
  5. Frank K Hosaka

    Não funciona a minha PROCEDURE criada no phpMyAdmin

    O código funciona, mas você não pode chamar a procedure dentro dela. Isso não é PHP. Você usa a guia SQL para chamar a procedure, e em seguida (lá em baixo) você aperta o botão Executar. Eu também tive problema na hora de usar a chamada, Ao invés de Call adicionar_datas(‘2021-11-21’, 399); eu usei Call adicionar_datas('2021-11-21', 399); Acredito que você não pode usar aspas inclinadas na hora de chamar uma procedure, mas você pode usar na hora de mencionar as tabelas e os seus campos nas consultas.
  6. Frank K Hosaka

    Comparar os registros dos 3 últimos meses

    Eu consegui fazer três consultas diferentes. Tentei ajuntar pelo join, mas o resultado não deu certo. select dia from tbdiario where month(dia)=month(now()) and contad is null order by dia desc limit 3; select dia from tbdiario where month(dia)=month(now()-interval 1 month) and contad is null order by dia desc limit 3; select dia from tbdiario where month(dia)=month(now()-interval 2 month) and contad is null order by dia desc limit 3; Ah, consegui resolver: (select dia from tbdiario where month(dia)=month(now()) and contad is null order by dia desc limit 3) union (select dia from tbdiario where month(dia)=month(now()-interval 1 month) and contad is null order by dia desc limit 3) union (select dia from tbdiario where month(dia)=month(now()-interval 2 month) and contad is null order by dia desc limit 3)
  7. Frank K Hosaka

    Intervalo de datas

    select dia, (case when dia between '2020-10-02' and '2020-10-05' then count(dia) end) as contagem from tbdiario group by dia; Para evitar os valores nulos, a minha sugestão é essa: select dia, (case when dia between '2020-10-02' and '2020-10-05' then count(dia) else "não é da sua conta" end) as contagem from tbdiario group by dia;
  8. Frank K Hosaka

    Consulta por meio de campo json

    Eu faria assim: Select pessoa from tbpessoa where codp in (1,2,44); ou select pessoa from tbpessoa where codp in (select procurado from tbprocurado);
  9. Frank K Hosaka

    Buscar nomes similares e repetidos

    O nome é um problema sério, principalmente se usar a tecnologia da fonética. Você escreve "Luis", aí o programa vai encontrar um monte de "Luis" ,"Luiz","Luís","Luíz","luis","luís","luiz","luíz". Outro grande problema é a quantidade enorme de homonimos. No Brasil, todo mundo se chama Maria, José e João. Se você pedir para o banco de dados recusar a cadastrar o cliente sem o CPF, ai você fecha uma janela para boa oportunidade de melhorar o seu negócio. Tem muito ministro, deputado, vereador, prefeito que quer comprar sem ser identificado e tudo em dinheiro. Como não dá para pedir para o Brasil respeitar as regras do banco de dados, a única saída é o banco de dados se adaptar à realidade brasileira. Se conseguir muito dinheiro com toda a baderna no banco de dados, muito melhor.
  10. Frank K Hosaka

    Dois arquivos com a mesma sintaxe mas só um funciona - Erro 500

    Encontrei a matéria sobre erro interno no servidor: HTTP Erro 500: Aprenda a Corrigir o Erro Interno do Servidor (hostinger.com.br)
  11. Frank K Hosaka

    Somar campos de varias tabelas

    Isso é bem complicado, eu só sei fazer gambiarra. Estava pensando em ajuntar todas as tabelas numa só, assim tb chuva id dia chuva fonte 181 2022-06-01 25 t1 182 2022-06-02 15 t1 187 2022-06-03 2 t1 188 2022-06-01 12 t2 189 2022-06-02 5 t2 190 2022-06-03 6 t2 Depois iria montar a seguinte consulta: select dia as diaprocurado, (select chuva from tbchuva where fonte='t1' and dia=diaprocurado) as t1 , (select chuva from tbchuva where fonte='t2' and dia=diaprocurado) as t2 , (select sum(chuva) from tbchuva where dia=diaprocurado) as total from tbchuva group by dia para ter esse resultado: diaprocurado t1 t2 total 2022-06-01 25 12 37 2022-06-02 15 5 20 2022-06-03 2 6 8
  12. Frank K Hosaka

    Retorno da consulta por meses

    Criei uma tabela exemplo tabela lancamentos id data despesa receita 181 2022-01-31 25.00 100.00 182 2022-02-28 0.00 200.00 183 2022-03-31 25.00 100.00 184 2022-02-13 0.00 300.00 185 2022-01-25 25.00 100.00 186 2022-03-15 75.00 400.00 set lc_time_names='pt_BR'; select monthname(data) as mes,sum(despesa) as desp,sum(receita) as rec from lancamentos group by mes; mes desp rec janeiro 50.00 200.00 fevereiro 0.00 500.00 março 100.00 500.00 Aconselho a fazer consultas mais simples e agregar aos poucos os outros parâmetros como o nome da empresa, o ano do faturamento e assim vai.
  13. Baseado nessa tabela tbhidro id hidrometro periodo consumo_m3 1 1 202211 5 2 1 202212 10 3 2 202211 5 4 2 202212 15 dá para fazer várias perguntas diretamente no MySQL. Se o seu chefe pede para fazer um romaneio para a equipe procurar um possível vazamento, você usa esse comando: select hidrometro, max(consumo_m3) from tbhidro where periodo='202212' Você não precisa do PHP para obter esse tipo de informação, a menos que você precise publicar a informação na internet. Note que nessa tabela eu criei o campo id, eu defini como chave primária. Essa é uma exigência do MySQL para poder relacionar com outras tabelas. Quanto mais MySQL você dominar, mas rápido você conseguirá obter a informação que você precisa.
  14. Frank K Hosaka

    View trazendo resultados diferente local e online

    Eu fiz um view bem mais simples CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `vw_teste` AS SELECT `orcamentos`.`id` AS `id`, SUM(`itens`.`total`) AS `total` FROM (`orcamentos` JOIN `itens` ON ((`orcamentos`.`id` = `itens`.`id`))) GROUP BY `orcamentos`.`id` Criei um registro na tabela itens (id,total) (181,1350.90) bem como na tabela orçamentos (id,desconto) (181,null). Se eu definir itens.total como tipo float, o valor de sum(itens.total) vai dar 1350.9000244140625. Se eu definir itens.total como tipo decimal(10,2), o valor de sum(itens.total) vai dar 1350.90. Eu desconfio que o tipo de dados do computador não são os mesmos lá do servidor.
  15. Frank K Hosaka

    Erro ao mostrar o array multidimensional

    <?php $destinos=[ [["id_cidade"=>3187,"id_inter"=>23548,"cid_nome"=>"Itajuba","cid_uf"=>"MG"], ["id_cidade"=>3574,"id_inter"=>23548,"cid_nome"=>"Poços de Caldas","cid_uf"=>"MG"], ["id_cidade"=>9414,"id_inter"=>23548,"cid_nome"=>"São José dos Campos","cid_uf"=>"SP"]], [["id_cidade"=>2120,"id_inter"=>19233,"cid_nome"=>"Goiania","cid_uf"=>"GO"]], [["id_cidade"=>5915,"id_inter"=>20189,"cid_nome"=>"Curitiba","cid_uf"=>"PR"], ["id_cidade"=>6505,"id_inter"=>20189,"cid_nome"=>"São José dos Pinhais","cid_uf"=>"PR"]]]; $usuarios=[ ["nome"=>"Rodrigo Alves de Lima","id_inter"=>23548], ["nome"=>"Silvio Santos","id_inter"=>19233], ["nome"=>"Pedro de Lara","id_inter"=>20189]]; foreach($usuarios as $usuario): echo $usuario["nome"]." saiu de Brasília e foi para <br>"; foreach($destinos as $destino): $filtro=$destino; foreach($filtro as $filtro): if($filtro['id_inter']==$usuario['id_inter']): echo $filtro['cid_nome']."<br>"; endif; endforeach; endforeach; echo "---<br>"; endforeach;
  16. Frank K Hosaka

    Ler variavel fora do foreach

    <?php $turma=[ ["classe"=>1,"nome"=>"Luis","idade"=>13], ["classe"=>2,"nome"=>"Otávio","idade"=>16], ["classe"=>1,"nome"=>"Maria","idade"=>12], ["classe"=>1,"nome"=>"Carlos","idade"=>12], ["classe"=>2,"nome"=>"Rafaela","idade"=>16], ["classe"=>1,"nome"=>"Mateus","idade"=>14], ["classe"=>1,"nome"=>"Andréa","idade"=>12], ["classe"=>2,"nome"=>"Robson","idade"=>16]]; $filtros=array_filter($turma,function($turma){return $turma["classe"]==1;}); $icontador=1; echo "<table><tr><th>Posição<th>Nome<th>Idade"; foreach($filtros as $filtro): echo "<tr><td>$icontador<td>".$filtro["nome"]."<td>".$filtro['idade']; $icontador++; endforeach;
  17. Frank K Hosaka

    expressão regular

    Eu fiz o teste por aqui e deu certo com um acento circunflexo no final $regra = '^(\d{2}[a-z]{2}|[a-z]{2}\d{2})$^';
  18. Frank K Hosaka

    Erro ao mostrar o array multidimensional

    A sua listagem está incompleta. Geralmente o problema sempre está antes da listagem, mais exatamente nas tabelas do MySQL. A sua listagem não traz o nome de nenhuma das tabelas. Eu esperava algo do tipo: <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbusuario"); $usuario=$query->fetch_assoc(); echo "<table><tr><td align=left>".$usuario['nome']."</td>"; $criterio=$usuario['nome']; $datacreatedat=$usuario['created_at']; $iduser=$usuario['id_user']; $query=$mysqli->query("select roteiro from tbroteiro where usuario=$criterio"); $destinos=$query->fetch_assoc()['roteiro']; foreach($destinos as $key=>$destino): echo "<td align=left>"; foreach($destino as $chave=> &$cidade): echo $cidade['cid_nome']."-"; endforeach; echo "</td>"; endforeach; echo "<td>".date('d/m/Y', strtotime($datacreatedat))."</td>"; echo "<td align=left><a href=".base_url('UserAdmin/Usuario/getUsuarioById')."/$iduser>DETALHES</a></td>"; Na sua lista, encontrei outro endforeach; e na minha lista só montei dois loops. Antes de codificar no PHP, o problema é ver se você consegue o resultado que você quer dentro do MySQL. Caso afirmativo, aí sim você parte para o PHP. Se não der certo, você mostra os nomes das tabelas, e também a estrutura das tabelas com os respectivos relacionamentos.
  19. Frank K Hosaka

    Paginação com nível de acesso

    Na sua biblioteca tem imensas bibliotecas de informações em CSS, JS, HTML, mas não tem nenhuma conexão com o banco de dados. O código que sugeri tem 19 linhas de PHP, nenhum CSS, nenhum JS e nenhum comentário, e a terceira linha já mostra como conectar o PHP ao banco de dados. Isso não é um exemplo de como apresentar as informações em público, principalmente por usar o método GET que congestiona o serviço do servidor, mas é um meio bem rápido de obter a informação de forma o mais rápido possível para deixar a maquiagem e a eficiência do uso do servidor para depois: <?php $nivelLogin=2; $mysqli=new mysqli("localhost","root","","diario"); if($nivelLogin == 0){$busca="select * from tbprod order by prod";} else { $busca = "select * from tbprod where prod like 'm%' order by prod";} $total_reg=10; if(isset($_GET['pagina'])){$pagina=$_GET['pagina'];}else{$pagina=null;} if(!$pagina){$pc=1;}else{$pc=$pagina;} $inicio=$pc-1; $inicio=$inicio*$total_reg; $limite=$mysqli->query("$busca LIMIT $inicio,$total_reg"); $todos=$mysqli->query("$busca"); $tr=mysqli_num_rows($todos); $tp=$tr/$total_reg; while($dados=$limite->fetch_array()){ echo $dados['prod']."<br>";} $anterior=$pc-1; $proximo=$pc+1; echo "<a href=?pagina=$anterior><- Anterior</a> | "; if($pc<$tp){echo "<a href=?pagina=$proximo>Proxima -></a>";}
  20. Frank K Hosaka

    Paginação com nível de acesso

    O problema está aqui: $.post('listar_alunos_db', dados , function(data){ $('#resultAluno').html(data); Tudo indica que existe um arquivo de texto chamado listar_alunos_db e que o Ajax está mandando para o painel de paginação. Esse não é o comando adequado para pegar as informações que foram filtradas logo no começo da listagem. Por outro lado, eu publiquei logo atrás um código que faz o mesmo serviço e sem usar o JavaScript.
  21. Frank K Hosaka

    Paginação com nível de acesso

    Ainda não testei os códigos, mas acredito que o código JS deveria ser assim: var idLocalidade=<?='$idLocalidade'?>, você colocou $unidadeTrabalho. var tipoLogin=<?=$nivelLogin>, você colocou $tipoLogin. Mas o mais grave é que você não pode usar o marcador <?php dentro do <script>.
  22. Frank K Hosaka

    Paginação com nível de acesso

    Tem como você passar o código JavaScript listar_alunos()? Encontrei um tutorial bacana nessa página Como fazer Paginação em PHP com MySQL (devmedia.com.br) mas encontrei um monte de mensagem de erro na hora de testar. Mudei tudo para a gramática do mysqli. O bom desse código é que ele não usa o JavaScript: <?php $nivelLogin=2; $mysqli=new mysqli("localhost","root","","diario"); if($nivelLogin == 0){$busca="select * from tbprod order by prod";} else { $busca = "select * from tbprod where prod like 'm%' order by prod";} $total_reg=10; if(isset($_GET['pagina'])){$pagina=$_GET['pagina'];}else{$pagina=null;} if(!$pagina){$pc=1;}else{$pc=$pagina;} $inicio=$pc-1; $inicio=$inicio*$total_reg; $limite=$mysqli->query("$busca LIMIT $inicio,$total_reg"); $todos=$mysqli->query("$busca"); $tr=mysqli_num_rows($todos); $tp=$tr/$total_reg; while($dados=$limite->fetch_array()){ echo $dados['prod']."<br>";} $anterior=$pc-1; $proximo=$pc+1; echo "<a href=?pagina=$anterior><- Anterior</a> | "; if($pc<$tp){echo "<a href=?pagina=$proximo>Proxima -></a>";}
  23. Frank K Hosaka

    Paginação com nível de acesso

    Acredito que o problema está na rotina da paginação. Como a página seguinte sabe onde a consulta parou? Desconfio que a consulta para a página seguinte seja essa: $sqlConsulAluno=$conecta->query("SELECT * FROM alunos where paginaseguinte > paginaanterior") e aqui qualquer usuario mal intencionado poderá ter acesso ao endereço da bela loira de olhos azuis da unidade 3.
  24. Frank K Hosaka

    Como clicar em imagem e executar vídeo do youtube

    Eu faria assim: <img src="engodo.png" onclick=location.replace('https://www.youtube.com/embed/rsFCVjr5yxc')>
  25. Frank K Hosaka

    Função para depreciação

    Não faz sentido soltar um alerta a três meses antes do final da depreciação. Vamos botar um exemplo: a empresa comprou um PC de R$ 1.000,00, e o técnico afirma que ele vai durar 2 anos. Logo, não posso jogar o PC na conta do resultado, mas no Ativo, em Equipamentos. Mas também não preciso esperar o final da depreciação para jogar o valor do computador no resultado, posso fazer isso mensalmente assim: mês 1 = despesa depreciação x Depreciação R$ 41,82 mês 2 = despesa depreciação x Depreciação R$ 41,66 mês 3 = despesa depreciação x Depreciação R$ 41,66 mês 22 = despesa depreciação x Depreciação R$ 41,66 mês 23 = despesa depreciação x Depreciação R$ 41,66 mês 24 = despesa depreciação x Depreciação R$ 41,66 mês 25 = não pode mais haver lançamento. Para fazer isso seria necessário uma tabela do imobilizado, com os seguintes campos: Descrição, DataDaAquisição, Valor,VidaÚtil, Depreciação, DepreciaçãoAcumulada Em cada mês, a tabela calcula a depreciação e acumula na DepreciaçãoAcumulada (se e tão somente se DepreciaçãoAcumulada for menor que o valor do equipamento). A soma da tabela vai dar suporte ao valor do Imobilizado e à Depreciação do Balancete, é documento importante, logo tem que imprimir e guardar no arquivo morto para estar disponível a qualquer auditor.
×

Informação importante

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