
Frank K Hosaka
Membros-
Total de itens
1.582 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
Apesar de eu conseguir ver a página do welcome.blade.php na tela do navegador, o Visual Studio Code mostra na tela de apuração a mensagem Class "Illuminate\Support\Facades\Route" not found. Pesquisei no Google como verificar onde errei, mas não achei a solução. Tudo indica que o melhor é fazer vista grossa para a mensagem. Por enquanto, o melhor dessa experiência é que eu conheci o Visual Studio Code da Microsoft, ele é bem melhor que o Notepad++, principalmente depois de instalar o plugin do depurador do PHP. Eu não preciso mais usar o navegador para encontrar os erros no código, o Visual Stuio Code já faz isso no momento em que você salva o arquivo. Outra coisa bacana que eu vi é que dá para abrir o navegador a partir do Visual Studio, eu ainda não descobri como, os tutoriais são rápidos demais, mas é com eles que vou estudando o Lavarel.
-
Para você somar dois <input> é mais produtivo usar o JavaScript ao invés do PHP, pois o PHP não é capaz de enxergar o valor dos elementos. Mas se você está cansado do Facebook e não tem mais o que fazer, o PHP é um bom passatempo. A pergunta agora é: como passar o valor de dois <input> para o PHP. Até onde eu sei, o único método é usando a força do <form> assim: <form method=post> a:<input name=a><br> b:<input name=b><br> <input type=submit> </form> <?php if(isset($_POST['a'])){ $a=$_POST['a']; $b=$_POST['b']; echo "a soma deu ".$a+$b;} Esse é um péssimo exemplo de como somar dois valores pelo PHP. O usuário pode escrever 1,1 e 2,2 nos <inputs>, e o PHP vai retornar a mensagem non-numeric value encontered. Você vai ter o trabalho de explicar ao usuário que o PHP não suporta a anotação brasileira de usar a vírgula como separador decimal. O usuário pode escrever esposa e cunhado nos <inputs>, e o PHP vai retornar a mensagem Unsupported operand Types. Você vai ter o trabalho de explicar ao usuário que o PHP não é capaz de somar dois literais. O usuário também pode escrever 1 e 1 nos <input> e o PHP vai retornar "a soma deu 2", mas as caixas do input estarão vazios e o usuário vai perguntar o que aconteceu com as parcelas, por que eles não aparecem mais nas caixas do <input>. Enfim, o melhor é se conformar com o Facebook, e esquecer o PHP e o usuário.
-
Duvida quanto a menu que desde + site que poderia melhorar em PHP!!!
pergunta respondeu ao ssj4bq de Frank K Hosaka em PHP
O PHP não foi feito para segurar a barra de menu enquanto você desce a tela. Quem faz esse serviço é a turma do CSS. O PHP trabalha nos bastidores para fornecer informações e não lá na frente para melhorar o visual. -
Eu não sou especialista em classes no PHP, mas acho estranho ter um $_REQUEST['url'] dentro de uma classe. Geralmente tem um um <form> que faz a solicitação pelo método POST ou GET e a solicitação é recebida por $_POST ou $_GET, já o $_REQUEST pega a solicitação, não importa quem mandou. Fiz uma adaptação do seu código assim: <?php session_start(); header('Content-Type: application/json; charset=utf-8'); //require_once 'Busca.php'; class Rest { public static function open($requisicao) { $url = explode('/', $_REQUEST['url']);}} $Rest=new Rest; $teste=$Rest->open("www.uol.com.br"); E a mensagem que recebi foi essa: Warning: Undefined array key "url" in C:\wamp64\www\astudy\astudy2.php on line 10 Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in C:\wamp64\www\astudy\astudy2.php on line 10 isso é bem diferente da mensagem que você recebeu. Ou seja, preciso do <form> que fez a solicitação bem como de todo o código que define a classe Rest. Grande parte da programação tem problema, mas ele não está exatamente na linha onde o PHP reclama, mas muito antes. Aqui fiz um teste só baseado na linha onde está o suposto problema: <?php if(isset($_REQUEST['url'])){ $url = explode('/', $_REQUEST['url']); var_dump($url);} ?> <form method=post> <input type=submit name=url value="https://forum.scriptbrasil.com.br/topic/213794-php-api-rest-php-no-azure/"> </form> e, nesse caso, não há nenhuma mensagem de erro, ele retorna isso: C:\wamp64\www\astudy\astudy2.php:4: array (size=6) 0 => string 'https:' (length=6) 1 => string '' (length=0) 2 => string 'forum.scriptbrasil.com.br' (length=25) 3 => string 'topic' (length=5) 4 => string '213794-php-api-rest-php-no-azure' (length=32) 5 => string '' (length=0)
-
Não testei, mas acho que a solução está aqui: Conexão do MS Access e PHP - Stack Overflow em Português
-
Com a ajuda do YouTube LARAVEL BÁSICO PARA INICIANTES - PARTE 1 de 3 - YouTube consegui abrir a pasta Usuários>frank>example-app com o Visual Studio Code, e de lá contemplar o código web.app routes>web.app ----------------------------------------------- <?php use Illuminate\Support\Facades\Route Route::get('/', function () { return view('welcome'); }); Também aprendi que não preciso do Ubuntu para ativar o servidor do Laravel, dá para fazer pelo prompt do Windows: C:\Users\frank\example-app>php artisan serv Seguindo o tutorial do YouTube, alterei return view('welcome') para return '<h1>olá mundo!</h1>, fui no navegador e digitei localhost:8000 e eu vi novamente a tela de boas vindas do Laravel. Eu esqueci de salvar o arquivo.
-
$cadatroUsuarioEmpresa['user_id'] = $inputDadosCadastro['user_id']; Pelo código que você passou, não dá para dizer se a variável $inputDadosCadastro['user_id'] contém o valor que você afirma que foi gerado. Eu precisaria de mais informações para depurar todo o programa, para saber se a variável tem a informação que você precisa. Por outro lado, achei interessante essa parte do código: $cadatroUsuario = array(); $cadatroUsuario['user_email'] = $inputDadosCadastro['user_email']; $cadatroUsuario['user_password'] = md5($inputDadosCadastro['user_password']); $cadatroUsuario['user_level'] = 3; $cadatroUsuario['user_registration'] = date('Y-m-d H:i:s'); $addbanco->ExeCreate("ws_users", $cadatroUsuario); Para mim, você está tentando incluir um array na tabela ws_users, mas não dá para afirmar nada sem ver a classe que está vinculado à variável $addbanco. Eu simulei um teste aqui e consegui isso: <?php $mysqli= new mysqli("localhost","root","","astudy"); $cadastroUsuario = array(); $cadastroUsuario['email'] = 'rogerio@gmail.com'; $cadastroUsuario['nome']='Rogerio Ceni'; $jcadastro=json_encode($cadastroUsuario); $query=$mysqli->query("insert into tbusuario (jcadastro) values ('$jcadastro')"); Ou seja, o PHP e o MySQL não permitem que eu salve um array num campo da tabela, a menos que o array seja convertido num json e o campo da tabela também seja um json.
-
Eu ainda não sei o que é o Laravel, mas ele é bastante comentado no forum do PHP. Para eu não ficar de fora, tentei instalar no meu PC. Encontrei vários tutoriais no Google, e como sempre o que o Google mostra não é nada do que eu vejo na minha tela. Eu tive que ver o YouTube, e ele disse que o Laravel está instalado quando você digita "localhost:8000" no navegador e vê o logotipo do Laravel. Não era o meu caso. Certamente, eu fiz muita besteira no meio do caminho. Eu vi um tutorial para usar o Ubuntu com o comando sudo php artisan serve e a mensagem que eu recebi é de que o composer estava usando a versão antiga do PHP, quando deveria usar a mais nova. O meu sistema é o Windows, mas no meio da confusão eu consegui instalar o Ubuntu dentro do Windows. Procurei outro tutorial para consertar o erro, encontrei um interessante para alterar a varável do ambiente do Windows. Não deu certo, mesmo reiniciando quinhentas vezes. Apelei para o Google, e encontrei um tutorial muito bacana. Já que não dá para resolver pelo Windows, o negócio é apelar para o Ubuntu. Nesse tutorial, o rapaz ensina a instalar o PHP dentro do Ubuntu: Ways to install Laravel 8.0 on Windows 11 | by Jayden Chua | CodeX | Medium - muita coisa eu já havia feito, só priorizei os comandos que instalam o PHP no Ubuntu. Consegui até alterar a versão a ser usada no Ubuntu. E assim tentei de novo: sudo php artisan serve, e como sempre apareceu outra mensagem, dessa vez assim PHP Fatal error: Uncaught Error: Class 'DOMDocument' not found. Outra vez pedi ajuda para o Google, e ele me deu esse endereço: Class 'DOMDocument' not found | PHP Composer: Dependências, Autoload e Publicação | Solucionado (alura.com.br) Finalmente, o php artisan disse que o servidor estava ativo na porta 8000. Traduzindo em português, isso significa que eu preciso deixar a janela do Ubuntu aberta. Enfim, eu não sei para que serve o Laravel, mas pelo menos eu sei o quanto as pessoas apanharam para instalar no PC. Mas estou contente em rever o Ubuntu, eu usei uma vez em 1993, e acabei perdendo o meu PC, e assim nunca mais eu queria saber de Linux. Eu acho que fiz muita besteira, acho que o Ubuntu não é necessário para usar o Laravel no Windows, mas foi com o Ubuntu que consegui botar o logotipo da Laravel na tela do navegador. Eu ainda não usei, pois eu morro de medo de ver novas mensagens de erro.
-
Eu também tive esse problema. Eu brinquei com o header("HTTP/1.1 301 Moved Permanently"); e fiquei cinco anos sem poder usar o WampServer, o MySQL, o PHP, o Facebook, o Windows e até o celular. Foi uma época triste, e ninguém sabe como resolver esse problema. Eu tentei de tudo, fui procurar o tal do .htacess do Apache e não achei. Quando o assunto é servidor, quase tudo é voltado para o Linux e nada para o Windows, que é o meu caso. Pensei em até pular da ponte. Mas eu fiz a minha última tentativa desesperada. Pedi para o Microsoft Edge limpar todo o histórico, todos os cokies, tudo o que havia ajuntado nos últimos trinta anos. E deu certo. Consegui acessar o localhost, graças a Deus. O chato é que eu não lembrava mais da senha para acessar o fórum Script Brasil.
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Exemplo de inventário com MySQL, PHP, HTML e Bootstrap 5.2</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> <style> .direita{text-align:right} .tela{width:500px} </style> <?php function dec($num) {if (empty($num)) {$fmt="";} else {$fmt = number_format($num,2,',','.'); return $fmt;}} $mysqli=new mysqli("localhost","root","","diario"); $query=$mysqli->query("select * from vw_inventario limit 10"); $linha=$query->fetch_all(MYSQLI_ASSOC); print "<div class=tela><table class='table table-sm table-striped'><th>Produto<th>Preço<th>Quantidade<th>Un<th>Estoque"; foreach ($linha as $listar) { $nomeProd = $listar['prod']; $p_venda = dec($listar['custo']*1.3); $quantidade = dec($listar['qtd']); $un=$listar['un']; $subtotal = dec($listar['custo']*1.3*$listar['qtd']); print "<tr><td nowrap>$nomeProd<td class=direita>$p_venda<td class=direita>$quantidade<td>$un<td class=direita>$subtotal";} print "</table></div>";
-
<?php $array=array( array( "registro" => 5, "data" => "14/10/2020", "horario" => "12:13 - 13:13 - 18:13 - 8:13", "ponto" => array ( "nome" => "ANDERSON LUIZ", "diasTrabalho" => "SEG-SEX", "horarioTrabalho" => "10 AS 18H" )), array ( "registro" => 4, "data" => "13/10/2020", "horario" => "15:29 - 16:11", "ponto" => array ( "registro" => 4, "nome" => "CAIO SANTOS", "diasTrabalho" => "SEG A SEX", "horarioTrabalho" => "9 AS 15H" )), array ( "registro" => 4, "data" => "14/10/2020", "horario" => "20:15", "ponto" => array ( "registro" => 4, "nome" => "CAIO SANTOS", "diasTrabalho" => "SEG A SEX", "horarioTrabalho" => "9 AS 15H")), array ( "registro" => 1, "data" => "13/10/2020", "horario" => "12:43 - 14:55", "ponto" => array ( "registro" => 1, "nome" => "DANIEL SANTOS", "diasTrabalho" => "SEG A SEX", "horarioTrabalho" => "9 AS 13H" ))); // ordenar o array asort($array); // listar horário de entrada por colaborador foreach($array as $key) { $registro=$key['registro']; $nome=$key['ponto']['nome']; $data=$key['data']; $horario=$key['horario']; if(empty($controle)){ $controle=$nome; echo "Registro $registro $nome <br>     $data:$horario <br>"; goto prossegue;} if($controle==$nome){ echo "<br>     $data:$horario<br>";} else {$controle=$nome; echo "Registro $registro $nome <br>     $data:$horario";} prossegue: } Resultado: Registro 1 DANIEL SANTOS 13/10/2020:12:43 - 14:55 Registro 4 CAIO SANTOS 13/10/2020:15:29 - 16:11 14/10/2020:20:15 Registro 5 ANDERSON LUIZ 14/10/2020:12:13 - 13:13 - 18:13 - 8:13
-
Eu não consegui arranjar uma solução para o registro contábil do cartão de crédito. O regime de competência permite que eu faça o lançamento, desde que eu tenha um documento, do tipo email do Uber. O Uber diz que vai cobrar R$ 15,00 por uma viagem do Jabaquara para Diadema. O lançamento ficaria assim: 1/9/22 D Transporte C Contas a Pagar, R$ 15,00, Visa Uber Jabaquara Olhando o balancete de 09/2022, tenho algo do tipo Contas a Pagar R$ 30,00 - como é que vou saber quanto do cartão de crédito tem nessa conta? Eu ainda não tenho a menor idéia, mas eu fiz a seguinte gambiarra, dessa vez, usando o regime de caixa: 10/10/22 C Contas a Pagar, R$ 15,00, Visa 09-22 10/10/22 D Transporte, R$ 15,00, Visa 01-09 Uber É óbvio que esse valor não vai aparecer no balancete de 09/2022, mas ele já está disponível no balancete de 10/2022. Ou seja, ao invés de usar a Contabilidade como uma maquina do tempo para olhar o passado, o que me impede de fazer lançamentos futuros? Claro que isso é uma péssima solução, mas com essa gambiarra eu posso usar a Contabilidade para acompanhar os lançamentos do cartão de crédito.
-
Encontrei o tutorial de como fazer dump do MySQL pelo PHP nesse endereço: Backup do banco de dados MySQL com PHP – Rafael Couto - eu ainda prefiro fazer pelo Workbench.
-
Cálculo com datas não funciona.
pergunta respondeu ao Edilson Santiago de Frank K Hosaka em Tutoriais & Dicas - PHP
Comigo deu tudo certo, só precisei colocar aspas na consulta $criancas = "SELECT * FROM tbpessoa WHERE DtNasc BETWEEN '$menos9anos' AND '$dataatual'"; Veja também o MySQL e confira se DtNasc foi configurado como DATETIME. -
Com os campos id, senha, ip e vip não há como usar o relógio do sistema para definir o vip para 1 depois de 30 dias. Mas já que o programa consegue alterar o vip de 1 para 5, por que não altera para 1, quando o jogador tiver chegado no 5?
-
Abrir página somente se o usuário estiver logado
pergunta respondeu ao mm_edilson de Frank K Hosaka em PHP
A minha sugestão é colocar isso no começo do index2.php session_start(); if(!isset($_SESSION["usuario"])){ header("location:index.php");exit;} Mas é preciso definir o $_SESSION["usuario"] no código valida_user.php, senão quem está devidamente cadastrado não vai conseguir entrar na página index2.php. -
O correto é usar o comando exportar do PHPMyAdmin ou do MySQL Workbench, e não o PHP.
-
Tentativa de limitar acesso a uma function
pergunta respondeu ao fernandopeluzo de Frank K Hosaka em PHP
Consegui consertar: <?php $username = "Frank"; $password = "1234"; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Usuário não autenticou a conta e senha'; exit;} else { if($_SERVER['PHP_AUTH_USER'] != $username || $_SERVER['PHP_AUTH_PW'] != $password){echo "senha incorreta!";exit;}} echo "você está no estágio 2"; -
Não consigo retornar uma API Json PHP
pergunta respondeu ao paulo_henrique_cnl de Frank K Hosaka em PHP
Esse é um problema que enfrento há dois anos e não sei como resolver. O json_decode está retornando nulo para a $pagina porque ele entende que a $pagina não é um json válido. A pergunta que eu faço há dois anos é como tornar um texto no formato json se tornar válido no mundo do PHP. Como eu não entendo nada de programação, eu usei o famigerado método da tentativa e erro. Copiei a página http://transparencia.se.sesc.com.br/transparencia/api/licitacoes dentro do Notepad+. O Notepad+ ajuda bastante, pois ele avermelha as chaves { } e assim fica fácil separar as informações por parte e criar o arquivo astudy.php, assim astudy.php ------------------------------------ <?php $p001='{"pagina_total":3,"pagina_atual":1,"pagina_anterior":null,"pagina_proxima":2,"registro_total":21,"registro_atual":10}'; $teste=json_decode($p001);var_dump($teste); $p002='{"id":54,"identificacao":"Edital de Concorr\u00eancia N\u00b0 22\/000017","objeto":"Contrata\u00e7\u00e3o de empresa especializada para execu\u00e7\u00e3o das obras de revitaliza\u00e7\u00e3o da \u00e1rea de entorno das piscinas e recupera\u00e7\u00e3o do parque aqu\u00e1tico das unidades Sesc Praia e Sesc Beira Rio.","data_publicacao":"2022-08-19","data_abertura":"2022-09-06","local":"Sesc Caixeral Parna\u00edba-PI","telefone":"86 3217-2852","email":"licitasescpi@pi.sesc.com.br","processo":"N\u00b0 22\/000017","vencedores":[],"responsavel":"Supervis\u00e3o de Licita\u00e7\u00e3o","valor":"","modalidade":"Concorr\u00eancia","documentos":[{"descricao":"Edital de Concorr\u00eancia","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-edital-de-concorrencia-1661169326.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Anexo IV","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-iv-1660909754.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Anexo III","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-iii-1660909732.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"ANEXO II ","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-ii-1660909699.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Anexo I","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-i-1660909679.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Aviso de Licita\u00e7\u00e3o","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-aviso-de-licitacao-1660909627.pdf","tipo":null,"data":"2022-08-19 00:00:00"}],"classificados":[],"desclassificados":[]}'; $teste=json_decode($p002);var_dump($teste); $p003=`{"id":53,"identificacao":" Edital de Concorr\u00eancia RP N\u00b0 22\/000015","objeto":"Aquisi\u00e7\u00e3o de Materiais de Consumo Odontol\u00f3gico EPI'S para atender as demandas das clinicas odontol\u00f3gicas do Sesc\/PI.","data_publicacao":"2022-07-12","data_abertura":"2022-07-27","local":"Sesc AR\/PI","telefone":"86 3217-2852","email":"licitasescpi@pi.sesc.com.br","processo":"RP N\u00b0 22\/000015","vencedores":[],"responsavel":"Supervis\u00e3o de Licita\u00e7\u00e3o","valor":"","modalidade":"Concorr\u00eancia","documentos":[{"descricao":"Aviso de Resultado de Classifica\u00e7\u00e3o das Propostas","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-aviso-de-resultado-de-classificacao-das-propostas-1659095595.pdf","tipo":null,"data":"2022-07-28 00:00:00"},{"descricao":"Ata de Sess\u00e3o 01","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-ata-de-sessao-01-1658939463.pdf","tipo":null,"data":"2022-07-27 00:00:00"},{"descricao":"Edital de Concorr\u00eancia","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-edital-de-concorrencia-1657812850.pdf","tipo":null,"data":"2022-07-27 00:00:00"},{"descricao":"Aviso de Licita\u00e7\u00e3o","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-aviso-de-licitacao-1657797988.pdf","tipo":null,"data":"2022-07-12 00:00:00"},{"descricao":"MINUTA DO CONTRATO","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-minuta-do-contrato-1658160342.docx","tipo":null,"data":"2022-02-27 00:00:00"}],"classificados":[],"desclassificados":[]}`; $teste=json_decode($p003);var_dump($teste); Para montar a variável $p003 eu tive que improvisar. O texto tem aspas simples e duplas ao mesmo tempo, e desconfio que é isso é que faz o PHP entender que o json não é válido. Para colocar o texto na variável eu usei as aspas inclinadas (é o acento agudo), e isso NÃO deu certo, o PHP insiste em reclamar que o $p003 é nulo, ou seja, não é um json válido. O resultado ficou assim: C:\wamp64\www\astudy\astudy.php:3: object(stdClass)[1] public 'pagina_total' => int 3 public 'pagina_atual' => int 1 public 'pagina_anterior' => null public 'pagina_proxima' => int 2 public 'registro_total' => int 21 public 'registro_atual' => int 10 C:\wamp64\www\astudy\astudy.php:6: object(stdClass)[2] public 'id' => int 54 public 'identificacao' => string 'Edital de Concorrência N° 22/000017' (length=37) public 'objeto' => string 'Contratação de empresa especializada para execução das obras de revitalização da área de entorno das piscinas e recuperação do parque aquático das unidades Sesc Praia e Sesc Beira Rio.' (length=194) public 'data_publicacao' => string '2022-08-19' (length=10) public 'data_abertura' => string '2022-09-06' (length=10) public 'local' => string 'Sesc Caixeral Parnaíba-PI' (length=27) public 'telefone' => string '86 3217-2852' (length=12) public 'email' => string 'licitasescpi@pi.sesc.com.br' (length=27) public 'processo' => string 'N° 22/000017' (length=13) public 'vencedores' => array (size=0) empty public 'responsavel' => string 'Supervisão de Licitação' (length=26) public 'valor' => string '' (length=0) public 'modalidade' => string 'Concorrência' (length=13) public 'documentos' => array (size=6) 0 => object(stdClass)[3] public 'descricao' => string 'Edital de Concorrência' (length=23) public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-edital-de-concorrencia-1661169326.pdf' (length=100) public 'tipo' => null public 'data' => string '2022-08-19 00:00:00' (length=19) 1 => object(stdClass)[4] public 'descricao' => string 'Anexo IV' (length=8) public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-iv-1660909754.pdf' (length=86) public 'tipo' => null public 'data' => string '2022-08-19 00:00:00' (length=19) 2 => object(stdClass)[5] public 'descricao' => string 'Anexo III' (length=9) public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-iii-1660909732.pdf' (length=87) public 'tipo' => null public 'data' => string '2022-08-19 00:00:00' (length=19) 3 => object(stdClass)[6] public 'descricao' => string 'ANEXO II ' (length=9) public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-ii-1660909699.pdf' (length=86) public 'tipo' => null public 'data' => string '2022-08-19 00:00:00' (length=19) 4 => object(stdClass)[7] public 'descricao' => string 'Anexo I' (length=7) public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-i-1660909679.pdf' (length=85) public 'tipo' => null public 'data' => string '2022-08-19 00:00:00' (length=19) 5 => object(stdClass)[8] public 'descricao' => string 'Aviso de Licitação' (length=20) public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-aviso-de-licitacao-1660909627.pdf' (length=96) public 'tipo' => null public 'data' => string '2022-08-19 00:00:00' (length=19) public 'classificados' => array (size=0) empty public 'desclassificados' => array (size=0) empty C:\wamp64\www\astudy\astudy.php:9:null Fiz mais uma tentativa, tentei substituir todas as aspas simples por duplas. O Notepad+ não fez! Então, pedi para substituir todas as aspas simples por @, e depois o @ por aspas duplas. Também não deu certo. Estudando mais um pouco a variável $p003, eu percebi que o problema não é as aspas, mas é que havia um aspas que não deveria estar lá, assim EPI'S para atender. Eu arranquei na unha, e agora sim eu consegui converter o $p003 em json. O PHP é o melhor programa do mundo, quando funciona. -
Eu faria assim: <input type=checkbox name=aceito onclick=btncadastrar.disabled=false>Li e estou de Acordo.<br><br> <input type=submit id=btncadastrar name=btnCadUsuario value=Cadastrar disabled><br><br>
-
Eu acredito que o problema está nessa linha: <script type="text/javascript" src="https://www.google.com/jsapi"></script> Para montar o gráfico, você precisa ter uma conexão com a internet, chegar até o Google e de lá usar o API jsapi. Desconfio que o sistema do seu trabalho não permite a conexão com a internet.
-
astudy.php -------------------------------- <?php $participantes = array("1 - Rafael", "2 - João", "3 - Maria", "4 - Pedro", "5 - Patricia", "6 - Camila", "7 - Roberto", "8 - Rafael",); $numParticipantes = sizeof($participantes); $chances = round((1 / $numParticipantes) * 100); echo "- Temos no total <b>".$numParticipantes."</b> participantes;<br>"; echo "- Cada participante teve <b>".$chances."%</b> de chance de ganhar;<br><br>"; $sorteado[1] = $participantes[rand(0,$numParticipantes - 1)]; for ($i = 1; $i < 2; $i++) { $sorteado[2] = $participantes[rand(0,$numParticipantes - 1)]; if ($sorteado[2] == $sorteado[1]) {--$i;}} //for ($i = 1; $i < 2; $i++) { // $sorteado[3] = $participantes[rand(0,$numParticipantes - 1)]; // if ($sorteado[3] == $sorteado[1] || $sorteado[3] == $sorteado[2]) {--$i;}} echo "<b>Ganhadores:</b> <br>"; echo $sorteado[1] . "<br>"; echo $sorteado[2] . "<br>"; $mensagem="os sorteados foram $sorteado[1] e $sorteado[2]"; // <------------------ file_put_contents("sorteio.txt",$mensagem); // <------------------ echo "<p><input type=button value='SORTEAR !' onclick=document.location.reload(true)>" ?> astudy2.php -------------------------------------------------- <?php echo file_get_contents("sorteio.txt");
-
Ontem eu conheci o <datalist> e gostei dele. Ao invés de trabalhar com dois arquivos, um HTML com Jquery e outro PHP, o <datalist> resume tudo numa só página PHP. Eu não tenho certeza, mas o Autocomplete do Jquery dá a impressão que ele executa a consulta no MySQL toda vez que o usuário tecla a caixa de busca. O Autocomplete do Jquery lista "Limao" se você escrever "limão" na caixa, esse não é o caso do <datalist>, mesmo assim o resultado é satisfatório, uma vez que o <datalist> é capaz de listar "banana" quando você digita "nana". No código abaixo eu fiz de tudo para evitar de colocar o botão de confirmação, mas não consegui. Não sei como fazer o <form> submeter assim que você seleciona o item. <?php $mysqli=new mysqli("localhost","root","","diario"); if (isset($_POST['inpproduto'])){ echo "Produto ".$_POST['inpproduto'];echo "<input type=submit onclick=location.replace('astudy.php')>";exit;} $query=$mysqli->query("select * from tbprod order by prod"); ?> <!DOCTYPE html> <html> <meta charset="UTF-8"> <title>Autocomplete Textbox in HTML5 PHP and MySQL</title> <label for="inpproduto">Produto</label> <form method=post> <input type="text" list="produto" id="inpproduto" name="inpproduto" size=45 autofocus onclick=submit()> <datalist id="produto"> <?php while($row=$query->fetch_assoc()) { $prod=$row['prod'];?> <option><?=$prod?></option> <?php } ?> </datalist> </form>
-
O tutorial que encontrei na internet vem com quatro arquivos e seleciona um país pela letra. Eu reduzi tudo para dois arquivos, e ele busca o produto e também traz o preço de venda. O interessante no código é que ele mostra como usar o código PHP na hora de enfrentar o dilema das aspas simples e aspas duplas. A dica é simplesmente sair fora do código PHP e usar o máximo de HTML. Essa é uma solução engenhosa que eu não consegui compreender nesses dois últimos anos. Faz tempo que ouço falar de Jquery e Ajax, mas só hoje é que consegui fazer eles funcionarem. O meu sonho é mandar um json do PHP para o JavaScript, mas ainda estou apanhando bastante. Esse autocomplementar do Jquery Ajax é fora de série, ele vai ajudar bastante a melhorar o meu projeto. O código que segue é apenas um esboço, falta melhorar muita coisa, ele ainda não é prático. astudy.php ----------------------------------------------- <html> <head> <!-- algoritmo baseado em https://phppot.com/jquery/jquery-ajax-autocomplete-country-example/ --> <head> <style> body{width:610px;} .frmSearch {border: 1px solid #a8d4b1;background-color: #c6f7d0;margin: 2px 0px;padding:40px;border-radius:4px;} #listaproduto{float:left;list-style:none;margin-top:-3px;padding:0;width:390px;position: absolute;} #listaproduto tr{padding: 10px; background: #f0f0f0; border-bottom: #bbb9b9 1px solid;} #listaproduto tr:hover{background:#ece3d2;cursor: pointer;} #search-box{padding: 10px;border: #a8d4b1 1px solid;border-radius:4px;} </style> <script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script> <script> $(document).ready(function(){ $("#cxbusca").keyup(function(){ $.ajax({ type: "POST", url: "astudy2.php", data:'tecla='+$(this).val(), success: function(data){ $("#cxsugestao").show(); $("#cxsugestao").html(data); $("#cxbusca").css("background","#FFF");}});});}); function selectCountry(prod,venda) { $("#cxbusca").val(prod); avenda.innerHTML=venda; $("#cxsugestao").hide();} </script> </head> <body> <table class=frmSearch><tr><th>Produto<th>Venda <tr><td><input id="cxbusca" placeholder="Produto" size=40><td><a id=avenda></a> </table> <div id="cxsugestao"></div> </div> </body> </html> astudy2.php --------------------------------------------- <?php $mysqli=new mysqli("localhost","root","","diario"); if(!empty($_POST["tecla"])) { $query=$mysqli->query("select * from tbprod where prod like '%".$_POST['tecla']."%' order by prod limit 100"); if(!empty($query)) { echo "<table id='listaproduto'>"; foreach($query as $row) { $prod=$row['prod']; $venda=$row['custo']*1.3 ?> <tr onClick="selectCountry('<?=$prod?>','<?=$venda?>')"> <?php echo "<td>$prod<td>$venda"; } echo "</table>"; } }
-
Eu criei o seguinte código <?php echo "<h2>Esfiha de carne a R$ 1,69 pelo App Habib's<h2> <p><h2>Esfiha de carne a R$ 2,74 sem o App Habib's<h2> <p><h2>Não cobramos taxa de serviço se for retirar<h2> <p><h2>A taxa de serviço é de 10% se for consumir no estabelecimento<h2>";?> e criei dois arquivos. Um chamei de astudy.html e o outro chamei de astudy.php. O resultado foi um desastre: