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. <?php //MySQL clientes.tbreserva //[nome=>varchar(45);inicio=>datetime;fim=>datetime;id=>int=>pk=>ai] $mysqli=new mysqli("localhost","root","","clientes"); if (isset($_POST['reserva'])){ $reserva=$_POST['reserva']; $nome=$reserva[0]; $inicio=$reserva[1]." ".$reserva[2]; $fim=$reserva[1]." ".$reserva[3]; $query=$mysqli->query("insert into tbreserva (nome,inicio,fim) values ('$nome','$inicio','$fim')"); //rotina para excluir as reservas que terminaram antes de agora $query=$mysqli->query("delete from tbreserva where fim < now()"); } echo "<h1>Faça a reserva da churrasqueira aqui</h1><p>"; echo "<form method=post>"; echo "<table><tr><th>Nome<th>Dia<th>Início<th>Fim<th>"; echo "<tr><td><input name=reserva[]>"; echo "<td><input type=date name=reserva[]>"; echo "<td><input type=time name=reserva[] min='09:00' max='17:00' required>"; echo "<td><input type=time name=reserva[] min='09:00' max='17:00' required>"; echo "<td><input type=submit value=Confirmar>"; echo "</form></table>"; echo "<p><table><tr><th width=200px>Reservas Confirmadas<th>Inicio<th>Fim"; $query=$mysqli->query("select * from tbreserva order by inicio"); while ($row=$query->fetch_assoc()){ $inicio=date('d/m/Y h:i',strtotime($row['inicio'])); $fim=date('h:i',strtotime($row['fim'])); echo "<tr><td>".$row['nome']."<td>$inicio<td>$fim";} echo "</table>";
  2. Fui fazer um teste para instalar um conector ODBC que baixei na internet. Eu não consegui instalar e eu perdi a conexão que eu tinha do Excel com o MySQL. Encontrei outra orientação no Google para eu usar o MySQL Installer na pasta MySQL. O Windows tem duas pastas, uma se chama Arquivos de Programas e outra Arquivos de Programas (x86), os dois têm a pasta MySQL, mas foi na segunda pasta que eu encontrei o programa MySQL Installer. Tentei usar o opção Conector/ODBC, mas nada funcionou. Assim, decidi remover esse serviço do programa. E depois tentei adicionar esse serviço, e acabei conseguindo recuperar a conexão que eu tinha no Excel.
  3. O link é esse daqui: Free Web Hosting Area - Apache 2.4, PHP 7.1, MariaDB 10.2 Mysql server, FTP, Autoinstaller (freewha.com) Eu gastei todo esse sábado para ver como hospedar um banco de dados no mundo novo chamado internet. Várias vezes eu tentei fazer isso, mas eu não conseguia entender nada. Mas, hoje, graças ao Santo Expedito, eu consegui! Eu vou acender uma vela para ele. Primeiro eu tive que aprender a configurar o File Manager com as informações que aparecem no Control Panel no item FTP Server. Tentei importar o banco de dados com o nome de import1.sql, mas nada deu certo. Então, voltei no Control Panel e usei Manage DB, e lá encontrei o phpMyAdmin, e foi com ele que consegui importar as informações, nem é preciso subir o arquivo, o phpMyAdmin vai direto nos arquivos do PC. Como tudo é de graça, quem define o nome do banco de dados são eles, o meu recebeu o nome de 396882. Quem define o nome do usuário também são eles, o meu recebeu o nome de usuário 396882. A única coisa que é minha é a senha que uso para entrar no Hosting. Para criar um código php, eu fui no File Manager, pedi para criar um novo arquivo e lá criei um código assim <?php echo "olá mundo"; só que ele se recusou a gravar o código. Tive que tirar o acento. Eu não posso reclamar pois a minha mãe me ensinou que em cavalo dado não se olha os dentes. Depois tentei conectar ao banco de dados: astudy.php ------------------------------------------ <?php $mysqli=new mysqli("localhost","396882","minhasenha","396882"); $query=$mysqli->query("select * from tbpessoa limit 5"); while ($row=$query->fetch_assoc()){ echo "<br>".$row['nome'];} echo "<input type=submit onclick=location.replace('astudy2.php')>"; astudy2.php --------------------------------------------- echo "ola mundo!"; e deu certo. Fui no MySQL Workbench, alterei um registro, criei um novo dump, voltei no Control Panel do Hosting, fui em Manage DB, e pedi para o phpMyAdmin importar o novo dump no meu notebook, e o registro ficou igualzinho. Eu não testei, mas eu acho que posso atualizar o notebook com o serviço de exportação do Hosting.
  4. Encontrei no endereço Quais são as principais diferenças entre VB.NET, VB6 e VBA? - Stack Overflow em Português o comentário de que o VB6 e o VBA são ferramentas obsoletas. Eu usei o Microsoft Access desde os anos 90 até 2020, quando desisti de procurar no Android algum aplicativo que conectasse o celular no banco de dados da Microsoft. Se você não for distribuir o arquivo executável, eu recomendo usar o VBA que já vem embutido no próprio Access. Eu gosto à beça desse programa, e em setembro de 2021 eu paguei o aluguel de R$ 449,00 para o Office 365, e em setembro de 2022 pretendo renovar, tanto para usar o Access, bem como o Excel, Word, e PowerPoint. O VBA consegue integrar todos esses aplicativos. Em 2020 encontrei no YouTube um vídeo do professor Guanabara que me ensinou a instalar o WampServer, e com ele veio o MySQL e o PHP entre outros. Não foi fácil, mas consegui instalar e até conectar o meu celular ao MySQL, sem precisar de nenhum aplicativo da loja do Android, basta ter apenas um navegador. O WampServer consegue abrir o banco de dados do MySQL, isso só descobri na semana passada. No lugar do WampServer, eu usei o programa MySQL Workbench, mas o que eu mais uso é o PHP para conectar no banco de dados. O chato do MySQL e do PHP é que você precisa conhecer a linguagem SQL, a linguagem HTML, a linguagem JavaScript, a linguagem CSS, além da linguagem do PHP. Eu não sei nada de SQL, assim eu peço socorro para o Microsoft Access. Como eu detesto estudar, eu evito de usar o JavaScript e o CSS, mas eles são ferramentas poderosas. Já o HTML também sei pouca coisa, basicamente só trabalho com <input> e <table>. Mas finalmente consegui conectar o meu celular no banco de dados, tanto na rede local usando o IP da rede sem fio, e até fora de casa. O meu banco de dados não está hospedado em algum provedor, mas sim no meu notebook. Para criar um canal entre a internet e o meu notebook eu uso o ngrok, a versão gratuita só dá direito a 3 conexões ao mesmo tempo, e a minha conta foi bloqueada porque eu usava nomes impróprios nos arquivos do php do tipo 1.php 2.php ou test.php, a ngrok entende que esse tipo de arquivo é malicioso. Para desbloquear, precisei pagar 25 dólares, mas só consegui pagar dois meses. E voltei usar a versão gratuita.
  5. Finalmente descobri o mistério da tbentrada, alguém mexeu na estrutura dele, no charset/collation deveria estar utf8mb4 e utf8mb4_0900_ai_ci, e alguém trocou para latin1 e latin1_bin
  6. Ontem, eu fiz o seguinte comando insert into tbentrada set codpessoa=1, entrada='2022-23-07 19:38:01'; e não apareceu nenhum problema. Mas hoje, apareceu esse erro 1265. Pesquisei no Google para ver que besteira eu fiz para merecer isso, mas tudo indica que eu derramei um pouco de café no notebook e isso acabou encolhendo o campo entrada. Eu não sei como alargar um campo do tipo Datetime. Mas o Google apresentou outra alternativa que funcionou: insert into tbentrada set codpessoa=1, entrada=now(); mas eu queria voltar a usar o valor que eu pego da função Date do PHP. Se eu botar o notebook na varanda para secar resolve?
  7. Não entendi o problema do redirecionamento da página, mas espero que o código que vou apresentar ajude. astudy.php --------------------------------------- <?php // verificar em WampServer > PHP > PHP Extensions > curl se o recurso está ativo $ch=curl_init(); $conferir=["usuario"=>"frank","senha"=>"1234"]; curl_setopt($ch,CURLOPT_URL,'localhost/frank/astudy2.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $conferir); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $retorno=curl_exec($ch); curl_close($ch); echo "retorno $retorno"; astudy2.php ------------------------------------------ <?php $usuario=$_POST['usuario']; $senha=$_POST['senha']; // aqui vai a rotina para verificar os dados no MySQL echo "$usuario com a senha $senha autorizado";
  8. Encontrei no Google o tutorial do cURL no PHP nesse endereço cURL. Feita para usar e abusar | SouNoob. Eu usei o método da tentativa e erro, e cheguei nesse código: astudy.php --------------------------------------------------------- <?php // verificar em WampServer > PHP > PHP Extensions > curl se o recurso está ativo $ch=curl_init(); $conferir=["usuario"=>"frank","senha"=>"1234"]; curl_setopt($ch,CURLOPT_URL,'localhost/frank/astudy2.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $conferir); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $retorno=curl_exec($ch); curl_close($ch); echo "retorno $retorno"; astudy2.php ----------------------------------------------------------- <?php $usuario=$_POST['usuario']; $senha=$_POST['senha']; // aqui vai a rotina para verificar os dados no MySQL echo "$usuario com a senha $senha autorizado"; Esse é um recurso bem bacana que lembra a função assíncrona do JavaScript, eu levei um tempão para aprender, mas eu achei o curl do PHP bem mais fácil.
  9. Fiz um teste, e eu acredito que o JavaScript sempre assume o horário local de quem executa o programa, o que não é o caso do PHP. <?php date_default_timezone_set('America/Sao_Paulo'); echo "Horário PHP ".date('D Y-m-d H:i:s');?> <p>Horário JS <a id=ag></a> <script> e=document.getElementById('ag') e.innerHTML=new Date() </script>
  10. Nessa semana eu aprendi a usar um pouco mais o WampServer com a ajuda do Geraldo Rodrigues. Hoje, entrei no Wampserver > Apache > Access Log, e consegui essa listagem ::1 - - [23/Jul/2022:08:17:07 -0300] "POST /frank/detalhediario.php HTTP/1.1" 200 7355 ::1 - - [23/Jul/2022:08:17:12 -0300] "POST /frank/detalhediario.php HTTP/1.1" 200 7403 ::1 - - [23/Jul/2022:08:17:12 -0300] "GET /frank/diario.php HTTP/1.1" 200 4196 ::1 - - [23/Jul/2022:08:17:51 -0300] "POST /frank/detalhediario.php HTTP/1.1" 200 7355 ::1 - - [23/Jul/2022:08:17:56 -0300] "POST /frank/detalhediario.php HTTP/1.1" 200 7403 ::1 - - [23/Jul/2022:08:17:56 -0300] "GET /frank/diario.php HTTP/1.1" 200 4196 ::1 - - [23/Jul/2022:08:18:09 -0300] "POST /frank/balancete.php HTTP/1.1" 200 13830 A listagem é enorme, mas ele mostra que eu uso o PHP. Por enquanto, não sei se é possível saber quando eu uso o notebook e quando uso o celular, eu uso os dois dispositivos ao mesmo tempo. O Windows é capaz de mostrar várias janelas ao mesmo tempo, mas eu prefiro ter uma tela na minha frente e outra do lado, acho bem mais prático. Também puxei outra listagem no Wampserver > Apache > Error Log, e a parte final deu nisso: [Fri Jul 22 22:58:49.897393 2022] [alias:warn] [pid 6704:tid 624] AH00671: The Alias directive in C:/wamp64/alias/phpmyadmin5.1.1.conf at line 1 will probably never match because it overlaps an earlier Alias. [Fri Jul 22 22:58:49.993229 2022] [mpm_winnt:notice] [pid 6704:tid 624] AH00455: Apache/2.4.51 (Win64) PHP/8.1.0 configured -- resuming normal operations [Fri Jul 22 22:58:49.993229 2022] [mpm_winnt:notice] [pid 6704:tid 624] AH00456: Apache Lounge VS16 Server built: Oct 7 2021 16:27:02 [Fri Jul 22 22:58:49.993229 2022] [core:notice] [pid 6704:tid 624] AH00094: Command line: 'c:\\wamp64\\bin\\apache\\apache2.4.51\\bin\\httpd.exe -d C:/wamp64/bin/apache/apache2.4.51' [Fri Jul 22 22:58:49.998966 2022] [mpm_winnt:notice] [pid 6704:tid 624] AH00418: Parent: Created child process 3880 [Fri Jul 22 22:58:50.955190 2022] [alias:warn] [pid 3880:tid 672] AH00671: The Alias directive in C:/wamp64/alias/phpmyadmin5.1.1.conf at line 1 will probably never match because it overlaps an earlier Alias. [Fri Jul 22 22:58:51.035859 2022] [alias:warn] [pid 3880:tid 672] AH00671: The Alias directive in C:/wamp64/alias/phpmyadmin5.1.1.conf at line 1 will probably never match because it overlaps an earlier Alias. [Fri Jul 22 22:58:51.121099 2022] [mpm_winnt:notice] [pid 3880:tid 672] AH00354: Child: Starting 64 worker threads. Acho que aqui ele quer alertar que eu faço um monte de coisas erradas, mas eu não consigo compreender nenhuma linha. Essa é uma tecnologia nova que eu ainda não sei como usar a meu favor. Por enquanto, só o PHP e o navegador é que estão me ajudando a melhorar os meus códigos, os dois gostam de apontar os meus erros e eles apontam a linha exata do problema.
  11. Hoje fui fazer o teste com o rapaz do form_test, e deu tudo certo. Nada indica que eu preciso me preocupar com os endereços que uso para chamar, se todos eles estão na mesma pasta. Eu desconfiei do index.php que ele tem, ele tem um gerenciador de arquivos embutido, mas os códigos também funcionaram por ali.
  12. Olha, eu fiz um código bem safado. A ideia é usar o MySQL, criar uma tabela tbsupervariavel com apenas um campo chamado docto, e também só com um registro, e usá-lo para carimbar as fotos. tbsupervariavel --------------------------------- docto int astudy.php -------------------------------------------------------- <form method=post enctype=multipart/form-data> <input type=file name=file accept='image/png, image/jpeg'> <input type =submit name=submit value=submit> </form> <?php // verificar no WampServer > PHP > PHP Settings a habilitação para o upload function nomeunico(){ $mysqli=new mysqli("localhost","root","","diario"); $query=$mysqli->query("select docto from tbsupervariavel"); $docto=$query->fetch_assoc()['docto']; $docto++; $query=$mysqli->query("update tbsupervariavel set docto=$docto"); return "foto$docto";} if (isset($_FILES['file']['name'])){ $target_dir = '/wamp64/www/frank/'; $target_file = $target_dir . nomeunico() . ".jpeg"; echo "Gravando $target_file"; move_uploaded_file($_FILES['file']['tmp_name'], $target_file);}
  13. <?php $mysqli=new mysqli("localhost","root","","astudy); $query=$mysqli->query("select * from vw_produto"); echo "<table><tr><th>Produto<th>Estoque<th>Mínimo"; while ($row=$query->fetch_assoc()){ $estoque=$row['estoque']; $minimo=$row['minimo']; If ($estoque<$minimo) {$estoque="<font color=red>$estoque</font>";} echo "<tr><td>".$row['produto']."<td>$estoque<td>$minimo";} echo "</table>";
  14. Eu sei apenas 2% de PHP, o máximo que eu consigo somar são duas tabelas. tbchuva1 --------------------- chuva int data date pk nn tbchuva2 --------------------- chuva int data date pk nn astudy.php ---------------------------------- <style>td {text-align:right}</style> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query1=$mysqli->query("select * from tbchuva1"); echo "<table><tr><th>Data<th>Chuva1<th>Chuva2<th>Total"; while ($row1=$query1->fetch_assoc()){ $somachuva=$row1['chuva']; $data1=$row1['data']; echo "<tr><td>$data1<td>$somachuva"; $query2=$mysqli->query("select chuva from tbchuva2 where data='$data1'"); $chuva2=$query2->fetch_assoc()['chuva']; $somachuva+=$chuva2; echo "<td>$chuva2<td>$somachuva";} echo "</table>"; No caso de você não usar o PHP, aqui está o vw_chuva no MySQL: CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `vw_chuva` AS SELECT `tbchuva1`.`data` AS `data`, `tbchuva1`.`chuva` AS `chuva1`, `tbchuva2`.`chuva` AS `chuva2`, (`tbchuva1`.`chuva` + `tbchuva2`.`chuva`) AS `Soma` FROM (`tbchuva1` JOIN `tbchuva2` ON ((`tbchuva1`.`data` = `tbchuva2`.`data`)))
  15. Eu publiquei nesse fórum um código assim: astudy.php -------------------------- <form method post action=astudy2.php><input type=submit name=teste></form> astudy2.php -------------------------- <?php if (isset($_POST['teste'])) {echo "o meu programa funciona!";} echo "<br><input type=submit value=Voltar onclick=location.replace('astudy.php')>"; Ele funciona no meu notebook. Só que alguém copiou esses códigos numa pasta chamada form_test, e assim o astudy.php não consegue chamar astudy2.php, apesar de estarem na mesma pasta. Tem jeito de consertar o meu código para enfrentar esse tipo de situação?
  16. Eu bato na mesma tecla, o problema é sempre a linha anterior e não o que o PHP aponta O seu código é esse: spl_autoload_register(function ($class_name) { $file_name = trim(str_replace('_','/',$class_name),'/').'.class.php'; $file_path = DIR_LIBARAY. '/' . $file_name; if ( file_exists( $file_path ) ) { return require_once( $file_path ); } $file_path = DIR_CLASSES. '/' . $file_name; if ( file_exists( $file_path ) ) { return require_once( $file_path ); } return false; } eu fiz um monte de teste e cheguei nesse código: spl_autoload_register(function ($class_name){ $file_name = trim(str_replace('_','/',$class_name),'/').'.class.php'; $file_path = DIR_LIBARAY. '/' . $file_name; if ( file_exists( $file_path ) ) {return require_once( $file_path );} $file_path = DIR_CLASSES. '/' . $file_name; if ( file_exists( $file_path ) ) {return require_once( $file_path );} return false; }); comparando com o seu código, tudo indica que falta um parentesis e um ponto e vírgula. Mas aí surgiu um problema no código: define('SYS_MAGICGPC', get_magic_quotes_gpc()); O maior problema é que eu só tenho 2% de PHP, eu não tenho a menor ideia do que esses códigos fazem.
  17. Eu criei uma pasta chamada Dumps no OneDrive da Microsoft, lá eu guardo todo santo dia os cinco últimos dumps do MySQL, bem como uma cópia da pasta www/wamp/www/frank onde estão todos os meus códigos php e js.
  18. O problema está no questionário. astudy.php ------------------------------------------------------------------------ <script> function verificar(){ j=0 for (i=1;i<=20;i++){ id="inp"+i e=document.getElementById(id) if (e.value==i*20){j++}} inpg.value=j frmg.submit()} </script> <?php if (isset($_POST['verificar'])){ $acertos=$_POST['verificar']; if ($acertos==20){header("location:priviligiado.php");} echo "Sinto muito, você só acertou $acertos vezes"; echo "<p><input type=submit value='Tentar de novo' onclick=location.replace('astudy.php')>"; exit;} echo "<table><tr><th><th><th>"; for ($i=1;$i<=20;$i++){ echo "<tr><td>Qanto é 20 x <td align=right>$i? <td><input id=inp".$i." size=2>";} echo "</table>"; echo "<input type=submit onclick=verificar()>"; echo "<form id=frmg method=post><input id=inpg type=hidden name=verificar></form>";
  19. Eu só sei 2% de PHP, mas já aprendi com ele sobre esses erros enigmáticos. Quando o PHP reclama que tem problema na linha 30, eu logo vou procurar o erro na linha anterior. O meu problema é que você listou da linha 46 e 51. Assim eu improvisei assim: function import($funcpre) { $file_path = DIR_FUNCTION. '/' . $funcpre . '.php'; if (file_exists($file_path) ) { require_once( $file_path ); } } spl_autoload_register(function ($class_name) { $file_name = trim(str_replace('_','/',$class_name),'/').'.class.php'; $file_path = DIR_LIBARAY. '/' . $file_name; if ( file_exists( $file_path ) ) { return require_once( $file_path ); } $file_path = DIR_CLASSES. '/' . $file_name; if ( file_exists( $file_path ) ) { return require_once( $file_path ); } return false; } e assim o PHP parou de reclamar da função que apontou, mas ele aponta um novo erro. spl_autoload_register(function ($class_name) Eu pesquisei PHP: spl_autoload_register - Manual, mas não encontrei nada parecido com essa sintaxe. Para mim, a sintaxe que eu esperava é algo do tipo spl_autoload_register($class_name), mas sem nenhuma instução adiante. e
  20. Hoje eu conheci o phpMyAdmin. Eu achei bem difícil trabalhar com ele. No meu caso, esse programa não funcionava por não ser compatível com a versão do PHP que estava usando. Pedi para o PHP trabalhar com a versão 8.0.3, e assim consegui abrir o phpMyAdmin 5.1.1. Para quem quer estudar o MySQL no Windows eu recomendo esse endereço: MySQL :: Download MySQL Workbench Já baixei o phpMyAdmin 5.2.0, mas eu não sei como instalar no Windows 11, e também não sei se é compatível com o PHP 8.1.0, de onde eu criei os meus códigos em PHP. Tentei o vídeo do YouTube que atualiza a versão phpMyAdmin 5.1.2 para 5.1.3, mas não deu certo (Upgrade PhpMyAdmin on WampServer - YouTube), quero dizer, o WampServer afirma que o phpMyAdmin 5.2.0 não é compatível com o PHP 8.1.0 e nem com o PHP 8.0.3.
  21. Encontrei no Google um código que muda a cor da linha e da coluna sob a célula em que o mouse parar (efeito "hover"). O código funciona, desde que você não defina a cor do <td>, <th> ou <tr>. astudy.php --------------------------------------- <style> /* fonte: https://css-tricks.com/simple-css-row-column-highlighting/ */ table {overflow: hidden} tr:hover {background-color: #ffa} td, th {position: relative;} td:hover::after, th:hover::after {content: "";position: absolute;background-color: #ffa;left: 0;top: -5000px;height: 10000px;width: 100%;z-index: -1} </style> <table> <tr><th><th>Col-1</th><th>Col-2</th><th>Col-3</th><th>Col-4</th><th>Col-5</th> <tr><td>Lin-1</td><td></td><td></td><td></td><td></td><td></td> <tr><td>Lin-2</td><td></td><td></td><td></td><td></td><td></td> <tr><td>Lin-3</td><td></td><td></td><td></td><td></td><td></td> <tr><td>Lin-4</td><td></td><td></td><td></td><td></td><td></td> <tr><td>Lin-5</td><td></td><td></td><td></td><td></td><td></td> </table>
  22. Meu honorável GAFANHOTO, eu também sou um programador eventual. Durante dois anos eu usei uma gigantesca biblioteca chamada JQuery só para usar o calendário no meu projeto. Não sei se foi o Ios ou o Wash, mas um deles me informou que o HTML tem o <input type=date> que faz o mesmo serviço. Joguei fora o JQuery, e consegui reduzir o meu código menu.php em 50%. Ou seja, o Ios e o Wash conseguiram provar que eu sei apenas 2% de HTML. Para cobrar coisa do tipo R$ 1.212,00 por mês (mais vale transporte, vale refeição), eu precisaria de 3% para credenciar o meu currículo. O Ios e o Wash já desistiram de alertar que eu sou um péssimo exemplo no forum. Um codificador profissional e respeitável, ele sempre escreve <tr><th>cabeçalho</th></tr>, mas como eu tenho uma tremenda preguiça eu só escrevo <tr><th>cabeçalho. Ou seja, eu só fecho o marcador, quando vejo que a coisa não funciona mesmo. Enfim, eu sou um péssimo exemplo mesmo. Mesmo assim, eu posso tentar. Basta escrever para frankhosaka@gmail.com - mas para aprender a codificar de verdade, você tem que buscar alguém que entenda pelo menos 3% de HTML. Eu só tenho 2%, e faço tudo na famosa base da tentativa e erro.
  23. Eu vi o site e contei 198 pessoas distribuídos por 14 setores. Fazer 198 checkbox não é mole não. Ao invés de 198 checkbox, estava pensando em não fazer nenhum. tbentrada -------------------------------------- id int pk nn ai codpessoa int entrada datetime tbfuncao -------------------------------------- codfuncao int pk nn ai funcao varchar(45) tbpessoa ------------------------------------- codpessoa int pk nn ai codfuncao int nome varchar(45) vw_horario -------------------------------------- CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `vw_horario` AS SELECT `tbentrada`.`entrada` AS `entrada`, `tbpessoa`.`nome` AS `nome`, `tbpessoa`.`codpessoa` AS `codpessoa`, `tbfuncao`.`funcao` AS `funcao` FROM ((`tbpessoa` JOIN `tbfuncao` ON ((`tbpessoa`.`codfuncao` = `tbfuncao`.`codfuncao`))) JOIN `tbentrada` ON ((`tbpessoa`.`codpessoa` = `tbentrada`.`codpessoa`))) ORDER BY `tbentrada`.`entrada` DESC vw_pessoa ----------------------------------------------------- CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `vw_pessoa` AS SELECT `tbpessoa`.`codpessoa` AS `codpessoa`, `tbpessoa`.`nome` AS `nome`, `tbfuncao`.`funcao` AS `funcao` FROM (`tbpessoa` JOIN `tbfuncao` ON ((`tbpessoa`.`codfuncao` = `tbfuncao`.`codfuncao`))) ORDER BY `tbpessoa`.`nome` astudy.php ------------------------------------------------------------------------ <?php $mysqli=new mysqli("localhost","root","","astudy"); if (isset($_POST['codpessoa'])){ $codpessoa=$_POST['codpessoa']; $query=$mysqli->query("select * from vw_pessoa where codpessoa=$codpessoa"); $row=$query->fetch_assoc(); $pessoa=$row['nome']; $funcao=$row['funcao']; echo $pessoa." : setor ".$funcao; echo "<p><form method=post action=astudy2.php><input type=submit value=Confirmar><input type=hidden name=confirmar value=$codpessoa></form>"; exit;} echo "<form method=post><label>Código da Pessoa <input name=codpessoa></label></form>"; echo "<p>Últimas entradas</p>"; echo "<table><tr><th>Nome<th>Matric.<th>Horário"; $query=$mysqli->query("select * from vw_horario limit 10"); while ($row=$query->fetch_assoc()){ echo "<tr><td>".$row['nome']; echo "<td>".$row['codpessoa']; echo "<td>".$row['funcao']; echo "<td>".$row['entrada'];} echo "</table>"; astudy2.php --------------------------------------------------------------------------- <?php $mysqli=new mysqli("localhost","root","","astudy"); $codpessoa=$_POST['confirmar']; date_default_timezone_set('America/Sao_Paulo'); $horario=date("Y-m-d H:i:s"); $query=$mysqli->query("insert into tbentrada set codpessoa=$codpessoa, entrada='$horario'"); header("location:astudy.php");
  24. Obrigado, Wash, mas isso dai está fora do meu alcance. Eu não sei o que é por exemplo nth-child, e nem como funciona o token "e" no js, isso sem falar do operador "=>". Eu já vi vários novos operadores como "|", ou "!=", ou, no seu caso, index = ++element. Eu tentei adaptar por aqui e não deu certo. Certamente, eu fiz alguma besteira, mas eu não consigo enxergar aonde. O nome disso é analfabetismo digital. Se sobrar algum tempo, tem jeito de usar esses códigos do <style> descartável numa tabela 5x5? Eu gostei do efeito cruzeta. Mesmo que eu não saiba como ler o código, sem dúvida vou dar um jeito de aproveitar a dica no meu código.
  25. Isso daí é bem difícil. Eu usei um vetor, eu acho que você não vai gostar, assim decidi só resolver o problema de "salvar" a lista de presença. Se você não gostar da minha solução, pelo menos eu não terei perdido o tempo para salvar a lista no banco de dados. astudy.php ------------------------------------------------------------- <form id=frmg method=post><input type=hidden id=inpg name=status><form> <?php session_start(); if (!isset($_SESSION['lista'])){ $lista=["Fernando Teixeira"=>0,"Mariangela Silva"=>0]; $_SESSION['lista']=$lista;} else { $lista=$_SESSION['lista'];} if (isset($_POST['status'])){ $lista=$_SESSION['lista']; $nome=$_POST['status']; if ($lista[$nome]==0){$lista[$nome]=1;} else {$lista[$nome]=0;} $_SESSION['lista']=$lista;} echo "<table>"; foreach ($lista as $nome=>$presente){ if ($presente==1) {$status="checked";} if ($presente==0) {$status="";} echo "<tr><td><label><input type=checkbox value='$nome' $status oninput=inpg.value=value;frmg.submit()>$nome</label></form>";} echo "</table>"; echo "<a href='astudy2.php'>Navegue para outra página</a>"; astudy2.php -------------------------------------------------- <?php echo "São Paulo é o melhor time de toda a galáxia!"; echo "<a href='astudy.php'>Voltar para a página anterior</a>" ?> Para quem estiver acompanhando esse tópico, eu posso explicar que não usei o <form> em torno dos chekbox porque levei cinco horas, e não consegui fazer funcionar. Eu desisti, e criei um outro formulário para me socorrer.
×
×
  • Criar Novo...