Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.585
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Nesse caso, usaria Fonte da Página de Exibição do Navegador, copiaria todo o código no editor de texto (melhor VS Code), e pegaria as informações mais relevantes, tudo na unha, assim: <h3>Desembargador Tadaaqui Hirose</h3> <h3>Promotora Marília Quites</h3> <h3>Luciana Bazanella</h3> </div> <div class="span3" data-aos="zoom-in"> <div class="bdayImage" style="background-image:url(https://intranet.pampa.com.br/aniversariantes/img/20180614105403.jpg)"></div> <h3>Promotor Anizio Pires Gavião Filho</h3> </div> <div class="span3" data-aos="zoom-in"> <div class="bdayImage" style="background-image:url(https://intranet.pampa.com.br/aniversariantes/img/20180614145446.jpg)"></div> <h3>João Patricio Hermann</h3> </div> <div class="span3" data-aos="zoom-in"> <div class="bdayImage" style="background-image:url(https://intranet.pampa.com.br/aniversariantes/img/20170608153058.jpg)"></div> <h3>Vilce Peluffo</h3>
  2. Eu também tenho um portal no Hostinger.com.br. Para acessar o meu banco de dados, uso o seguinte código PHP: <?php $mysqli=new mysqli("localhost","root","","laravel"); Para acessar o banco de dados do Bradesco, eles não permitem usar o PHP, o JS, o HTML. Eles têm aplicativos próprios. Ou seja, cada banco de dados tem um tipo de protocolo de segurança. No caso do PHP, JS, HTML, você pode acessar o banco de dados que você criou. Espionar o banco de dados de terceiros é difícil e já entra em confronto com o item X do Artigo 5o. da Constituição Federal, onde são invioláveis a intimidade, a vida privada, a honra e a imagem das pessoas, assegurado o direito a indenização pelo dano material ou moral decorrente de sua violação.
  3. Eu também tenho muita dificuldade para mexer com o PDO, eu prefiro usar o mysqli. Mas consultando aqui e ali, eu montei o seguinte código (ao invés de trabalhar com duas classes, eu só trabalhei com um, e defini a tabela teste assim CREATE TABLE `teste` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `nome` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `sexo` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `cidade` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci Como o id é auto incrementado, ele não aparece na hora de incluir um novo cadastro: <?php class Cadastro { private $db; public function __construct() { try{$this->db=new PDO ("mysql:host=localhost;dbname=laravel;","root","");} catch (PDOException $erro){ echo "Não Foi possivel conectar ao Banco: ".$erro->getMessage();} } public function cadastrar($nome,$sexo,$cidade){ $stmt=$this->db->prepare("insert into teste (nome,sexo,cidade) values (:nome,:sexo,:cidade)"); $stmt->bindParam(":nome",$nome); $stmt->bindParam(":sexo",$sexo); $stmt->bindParam(":cidade",$cidade); $stmt->execute();} } $teste=new Cadastro; $teste->cadastrar("Frank","Masculino","Diadema");
  4. Essa é uma pergunta que o Biehl repetiu mais de uma vez no fórum iMasters, e eu encontrei uma estranha resposta: index.php <?php $mysqli=new mysqli("localhost","root","","laravel"); $query=$mysqli->query("truncate tab_aprendiz"); $query=$mysqli->query("insert into tab_aprendiz (codigo) values (965),('kzf'),(483),('tkx'),('156')"); $sql = $mysqli->query("select * from tab_aprendiz where codigo"); while ($linha = mysqli_fetch_assoc($sql)) {echo $linha['codigo']."<br>";} echo "<input type=submit value=limparTela onclick=location.replace('index.php')>"; Esse é um clássico erro de digitação, mas não sei explicar porque ele funciona. Ele só exibe os dados numéricos. Mas se um dos dados não totalmente numéricos tiver um número na primeira posição, ai ele vai aparecer na lista. Nesse caso, o código acima não funciona. E o novo código terá que ser assim: <?php $mysqli=new mysqli("localhost","root","","laravel"); $query=$mysqli->query("truncate tab_aprendiz"); $query=$mysqli->query("insert into tab_aprendiz (codigo) values (965),('33f'),(483),('tkx'),('156')"); $sql = $mysqli->query("select * from tab_aprendiz where codigo REGEXP '^[0-9]+$' "); while ($linha = mysqli_fetch_assoc($sql)) {echo $linha['codigo']."<br>";} echo "<input type=submit value=limparTela onclick=location.replace('index.php')>";
  5. Ontem, dois rapazes da polícia militar me orientaram a ir na polícia civil para apresentar a minha suspeita do site https://www.consultapelaplaca.com.br. Mas eu não tenho a menor ideia de como falar com o delegado. A primeira coisa que ele vai perguntar quem é a vítima, e isso não sei responder. Para eu saber sobre débito de veículos, você precisa do RENAVAM e da placa para consultar pelo portal Consulta de débitos do veículo (fazenda.sp.gov.br), mas não é possível ver o nome, CPF do proprietário e o endereço dele. Eu entrei com a placa EUK2i93 e o portal da consulta pela placa e ele me passou várias informações, afirmando que o Corsa pertence a Fabiana Paula da Silva Veira, mas o relatório informa que não tem o CPF disponível. Eu achei isso muito fácil, nada na internet é tão fácil assim. Então, eu peguei a placa do carro do meu irmão, e o portal disse que eu tenho que pagar R$ 35,90. Isso me fez desconfiar que o portal da consulta pela placa tem dois banco de dados, um para qualquer um ver sem pagar nada e o outro que é federal. Ou seja, a informação é bem suspeita. Na hora de fazer o pix, o intermediário me passou o CPF 055.849.991-05, e o banco informou que o CPF pertence a Arthur Santana de Sousa. O intermediário explicou que a Fabiana está interessada em comprar um terreno lá em Recife. O final dessa história é só de lágrimas, boletim de ocorrência e pedindo para o banco contestar o pix. Eu não sei como falar com o delegado. Acredito que ele vai dizer que não é crime nenhum o portal consulta pela placa informar de quem é o carro, mesmo que a informação seja falsa. Crime é quem acredita na internet. -------------------------------- Chat do Bing, 06/07/2023: Olá, este é o Bing. Pelo que eu pesquisei, não é possível obter o nome do proprietário de um veículo só pela placa, por questões de segurança e privacidade12. Você pode obter informações sobre o veículo, como restrições, multas e histórico, mas os dados pessoais do dono são preservados. Para isso, você pode consultar o site do DETRAN do seu estado ou usar algum serviço especializado, mas pode haver custos envolvidos34. Espero ter ajudado.
  6. Eu pensei que era coisa do JQuery, não sabia que era nativo do JavaScript. Mas como nunca funcionou comigo, usei o modelo clássico da concatenação +. Esse detalhe das aspas inclinadas, isso eu não sabia mesmo.
  7. Achei estranho o VS Code reclamar que a função view ou redirect não está definido dentro de um código que usa a gramática do Laravel. No Google, achei uma solução que funciona. É demorado, mas funciona: ctrl + ship + p -> Index Workspace
  8. No PHP, você pode colocar uma $variavel dentro de um string, desde que você use aspas duplas assim: <?php $nome="Frank"; echo "meu nome é $nome"; O JavaScript também consegue usar o mesmo recurso, desde que você use aspas inclinadas assim: <script> nome=window.prompt('qual é o seu nome?') document.write(`Olá, ${nome}, seu nome tem ${nome.length} letras.`) </script> Listagem final: <script> nome=window.prompt('qual é o seu nome?') document.write(`Olá, ${ nome }, seu nome tem ${nome.length} letras.`) </script>
  9. <script> function alterar(){teste.value=teste.value.replace(',','.')} </script> <form onsubmit=alterar()> <input id=teste name=teste value=0,97> <input type=submit> </form> <?php if(isset($_GET['teste'])){echo "<br> Valor=".$_GET['teste'];}
  10. O kokoshneta do Laracasts passou um algorítimo em PHP em que ele cria um vetor, fazendo 150 palpites aleatórios, cada palpite varia de um 1 até 60, e mostra quais foram os palpites mais repetidos, e tudo isso em apenas 3 linhas! <?php for ($i = 0, $palpites = []; $i < 150; $i++) @$palpites[mt_rand(1, 60)]++; arsort($palpites); var_dump($palpites);
  11. Eu sempre esqueço de usar o comando use App/Model/Tabela; e o Laravel reclama que a tabela que uso na classe do Controller não está definida. O comando with é usado para chamar um relacionamento. Esse é modelo de Model com relacionamento: <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Carbon\Carbon; class tbpedido extends Model { use HasFactory; public $timestamps=false; protected $table="tbpedido"; protected $fillable=['ped','dia','vendido']; function details(){return $this->hasMany(tbpedido::class,'vendido','vendido');} function pessoas(){return $this->hasMany(tbpessoa::class,'codp','codp');} } Com esse Model, eu posso usar a tabela tbpedido, assim no Controller: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\tbpedido; use App\Models\tbsupervariavel; use Auth; class HistPedController extends Controller { Public Function historico (Request $request){ if($request->input("ped")){ $ped=$request->input("ped"); tbsupervariavel::where('codsuper',Auth::id())->update(['ped'=>$ped]); return redirect('orcamento');} } Ou seja, o with é usado junto com uma tabela e não no comando do view. A pergunta é: de onde você tirou esses códigos?
  12. Faz três anos que eu criei um vetor com 150 números, cada um estava no intervalo de 1 até 60. Para saber a frequência de cada número basta usar a função array_count_values($vetor). Para colocar a frequencia em ordem decrescente que é o problema, a função é rsort($vetorcontado). O problema é que a função coloca a frequencia em ordem decrescente, mas não mostra mais qual o número correspondente à frequencia. Finalmente, achei a solução: <?php $palpites=[]; for($controle=0;$controle<150;$controle++){ $palpites[]=mt_rand(1,60);} $contagem=array_count_values($palpites); rsort($contagem); foreach($contagem as $key => $value){ echo $palpites[$key]."=>".$value."<br>";}
  13. Encontrei essa dica para desbloquear o código JavaScript: jquery - Why does my JavaScript code receive a "No 'Access-Control-Allow-Origin' header is present on the requested resource" error, while Postman does not? - Stack Overflow Ele pede para mexer no arquivo node-red/settings.js - isso é coisa que tenho pavor de mexer. A minha sugestão é trabalhar com o PHP (atenção só pode ter uma página aberta para consultar a Receita Federal): <?php $cadastro=file_get_contents("https://www.receitaws.com.br/v1/cnpj/64725872000108"); $jcad=json_decode($cadastro); echo $jcad->nome."<br>"; echo $jcad->cep;
  14. Eu tenho um arquivo blade_A e outro blade_b. Ambos usam a function._c. Para a function_c voltar para quem chamou, estou pensando em usar a variável session. No blade_a, eu teria algo parecido como session('endereço')=blade_a, e na function_c eu teria um comando assim: voltar para session('endereço'). Como sou novato no Laravel, a minha dúvida é saber se existe solução melhor.
  15. Já faz mais de um ano que estou com o Laravel básico. Agora, avancei mais um passo: instalei o componente Breezer, agora eu tenho uma rotina de autenticação, mais comandos no Blade, uma barra de navegação e o TailwindCSS. O problema é que estou apanhando muito para criar um modal. Hoje achei esse tutorial: How To Make a Modal Box With CSS and JavaScript (w3schools.com) - esse tutorial é super bacana, eu gostei muito dele. Ele não funciona no Laravel, pois ele não usa a gramática do TailwindCSS. Consultei o dicionário do Tailwind para saber como se fala "cor" e "esconder" na gramática dele, e assim consegui adaptar o código: lcto.blade.php <x-app-layout> <button onclick=myModal.className='bg-red-600'>Open Modal</button> <div id=myModal class='hidden' onclick=this.className='hidden'> <div> <p>Some text in the Modal..</p> </div> </div> </x-app-layout> <x-app-layout> é da gramática do Blade, ele pede para incluir o código dentro de uma outra página criada pelo app.php.
  16. Ainda falando da barra de navegação, encontrei um problema no Tailwind na hora de fixar a barra no topo da tela: ele esconde a parte inicial dos elementos que vem a seguir. A solução que eu encontrei foi criar um <div style="height:100px"></div>, ou seja, empurrei os elementos seguintes para não ocultar a parte inicial. O Bootstrap fuciona bem. Já o CSS tradicional que eu encontrei no w3school faz a parte inicial dos elementos que vem depois da barra sobrepor à barra de navegação. CSS não é nada fácil! bootstrap.php <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <nav class="navbar navbar-light sticky-top bg-light flex-md-nowrap p-0"> <h1 class=display-1>Olá mundo</h1> </nav> <div> <h1 class=display-1>1</h1> <h1 class=display-1>2</h1> <h1 class=display-1>3</h1> <h1 class=display-1>4</h1> <h1 class=display-1>5</h1> <h1 class=display-1>6</h1> --------------------------------------- css.php <style> .navbar {overflow: hidden;position: fixed;top: 0;width: 100%;} .main {margin-top: 100px;} </style> <div class="navbar"> <h1>Olá mundo</h1> </div> <div class="main"> <div> <h1>1</h1> <h1>2</h1> <h1>3</h1> <h1>4</h1> <h1>5</h1> <h1>6</h1> <h1>7</h1> <h1>8</h1> <h1>9</h1> <h1>10</h1> </div> </div> tailwind.php <script src="https://cdn.tailwindcss.com"></script> <nav class="bg-white dark:bg-gray-900 fixed w-full z-20 top-0 left-0 border-b border-gray-200 dark:border-gray-600"> <h1 class="text-9xl">Olá mundo</h1> </nav> <div class="text-9xl"> <h1>1</h1> <h1>2</h1> <h1>3</h1> <h1>4</h1> <h1>5</h1> <h1>6</h1> </div>
  17. O meu conhecimento em HTML é precário, mas encontrei no projeto Laravel Chirps um arquivo chamado navigation.blade.php, nele eu encontrei o marcador <nav>. Para mim <nav> ou <div> é a mesma coisa, pois eu não sei nada de HTML. No entanto, ele aparece no topo da página do navegador. Eu clico "Dashboard", e ele apresenta o conteúdo do Dashboard. Eu clico "Chirps", e ele apresenta o conteúdo do Chirps. Só que a barra permanece no topo da página. Eu gostei desse recurso, mas fiquei imaginando se era possível acrescentar mais uma linha na barra de navegação. Esse é o meu primeiro teste. Se você perceber que estou fazendo coisa errada, por favor me alerte. <nav> <div>linha de cima</div> <div id=em_baixo>linha de baixo</div> <hr> </nav> <script> function teste(){em_baixo.innerHTML='<input>'} </script> <input type=submit onclick=teste()>
  18. A minha hospedagem de site não permite usar o npm pelo recurso SSH e assim não consigo instalar o TailwindCSS. Ontem, estava estudando o welcome.blade.php, e eu consegui ver o primeiro <svg> sem o TailwindCSS, mas o segundo ficou invisível. Existe algum jeito de resolver esse problema? <script src='https://cdn.tailwindcss.com'></script> <body style="width:500;margin:0 auto;margin-top:100"> <svg viewBox="0 0 62 65" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto bg-gray-100 dark:bg-gray-900"> <path d="M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z" fill="#FF2D20"/> </svg> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" /> </svg>
  19. Hoje eu fiz novo teste no Hostinger. Consegui instalar um novo projeto do Laravel, usando o serviço SSH. Eu não consegui abrir o projeto no navegador. Eu fiz uma gambiarra, copiando os arquivos .htaccess e index.php de um outro projeto do Laravel. O problema foi na hora de instalar o Breeze. Eu precisava do comando npm. Tentei usar o comando nvm install 17.3.1, mas eu recebi um monte de mensagens. Procurei no Google informações sobre hospedagem. Existem apenas dois tipos: o que hospeda sites, você pode usar o recurso básico do Laravel que é o meu caso. E a hospedagem VPS, lá tem o comando npm, onde você pode usar recursos turbinados do Laravel como o TailwindCSS. Assim, só resta uma solução para mim, lamentar como é chato ser pobre.
  20. Hoje estou super contente. Descobri que eu fiz uma baita confusão com o código de um suplemento chamado "Blade" e o Tailwind CSS. No Google, eu encontrei várias reclamações de pessoas que conseguiram implantar o Tailwind no Laravel do servidor, mas o dropdown não estava funcionando. Eu fui procurar o dropdown no Tailwind e não achei nada lá. Só assim é que eu consegui enxergar a minha besteira. A grosso modo, a gramática do Tailwind é assim class="text-gray-600", e a gramática do Blade é assim <x-dropdown>, ou seja, o Tailwind aparece dentro do marcador e o Blade é o marcador. O tutorial do Tailwind não é nada fácil, são pelo menos uns cinco arquivos que você tem que trabalhar. Eu pensei em criar o tailwind.css com esse comando: npx tailwindcss -o public/tailwind.css --minify isso para ser usado dentro do Laravel, assim <link href="{{asset('tailwind.css')}}" rel=stylesheet> e depois copiaria no Laravel do Hostinger. Mas eu li no projeto Chirp do Laravel que a parte mais importante da implantação do projeto é ter um suporte no servidor, o que não é o meu caso. Eu fui empurrando o meu código lá no Hostinger, e nem sei como isso funciona. A improvisação é coisa muito perigosa. Eu mesmo quase perdi todo o meu projeto em PHP, mas consegui recuperar. Quando a gente fala em servidor, todo cuidado é pouco. Se você não conhece o Laravel, eu recomendo ler primeiro o tópico 8 do tutorial do projeto Chirp.
  21. Ontem eu tentei usar o 8.2.0 no Hostinger. Eu recebi também mensagem de erro, e decidi voltar para trás.
  22. Eu me esforcei bastante. Consegui trabalhar com o Tailwind no computador local, mas precisei de dois terminais, um para colocar o Laravel na rede local e o outro para conectar o Laravel com a tecnologia do Tailwind pelo npm run dev. No Hostinger, enfrentei um monte de problemas. O vite não deu certo para mim, mas pelo menos o básico do CDN funciona. Isso explica porque pouca gente se interessa pelo Laravel, a gente apanha demais só para formatar um <input>. Com o Bootstrap é difícil, mas o Tailwind torna quase impossível.
  23. Faz dois dias que estou tentando experimentar o Tailwind no Hostinger, mas o grande problema é que eu não estava conseguindo instalar sequer o projeto. O Hostinger tem um auto instalador que cria o projeto bem como o novo banco de dados correspondente, só que eu não estava conseguindo instalar o componente Breezer que, em teoria, traz embutido o recurso do Tailwind. Eu cansei de ver tanto tutorial. Então, eu pensei em instalar o novo projeto através do SSH, fui até o diretório Public_HTML e de lá eu pedi para o "composer2" criar um novo projeto chamado teste. O tutorial do Hostinger orienta a usar uma área fora do Public_HTML e depois copiar tudo na raíz do Public_HTML (isso não dá para fazer porque todo o meu projeto em PHP está nesse diretório). Depois que eu criei o projeto teste, fiz o teste e a resposta foi que eu não tenho permissão para usar esse recurso. Eu fiquei indignado, faz dois dias que estou trabalhando nisso. Mas, de repente, uma lâmpada acendeu na minha cabeça. Eu tenho um outro projeto laravel no hostinger: e se eu copiar o index.html e o .htaccess na pasta teste? Não deu outra, funcionou! Nas próximas mensagens, eu vou falar do meu fracasso ou sucesso em instalar o Breeze bem como o Vite no novo projeto.
  24. O método send( ) da classe Acesso precisa de um requisição type, email e senha; aqui segue uma sugestão: if(isset($_POST['teste'])){ $conexao = new Conexao(); $acesso = new Acesso($conexao->conectar()); $acesso->send();} echo "<form method=post> <input name=type value=login> <input name=email value=frankhosaka@gmail.com> <input name=senha value=1234> <input type=submit name=teste> <form>"; Aqui não estou ensinando a usar o PHPMailer, mas sim como chamar um método de uma classe, no caso, o $acesso->send( ). Eu também sou novo na área de classe, eu apanho muito para usá-la também.
  25. Agora estou testando o tailwind no PHP. Botei o arquivo tailwind.css no diretório C:/Wamp64/www. Para testar, criei um novo diretório: C:/Wamp64/www/tailwind. Peguei o meu arquivo index.php e botei no novo diretório, ele era a base de Bootstrap, mudei o link para: <link href="../tailwind.css" rel="stylesheet"> Como eu não sei absolutamente nada de tailwind.css, estudei o primeiro exemplo desse tutorial: Tailwind CSS Login Form - Flowbite Na hora de testar, o botão para confirmar não apareceu. Fui obrigado a ler o código do botão: <button type="submit" class="w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800">Sign in</button> Eu achei muito estranho a gramática bg-primary-600. A palavra primary é mais familiar do Bootstrap, então eu mudei para blue, e assim consegui colocar o botão na tela do navegador. Ou seja, todo tutorial no Google é bem vindo, só que muita gente não testa o que escreveu, e assim a gente perde mais tempo do que aprender algo de útil. Eu gostei do comando focus, ele funciona no botão, mas não no input. Então decidi tirar o comando focus do input bem como o dark. Eu ainda estou no começo, mas estou contente por ter conseguido usar o Tailwind no PHP: <?php session_start(); $mensagem=""; if(isset($_SESSION['mensagem'])){$mensagem=$_SESSION['mensagem'];} if(isset($_GET['limpar'])){unset($_SESSION['id']);}?> <!DOCTYPE html> <html lang="en"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Projeto PHP</title> <link href="../tailwind.css" rel="stylesheet"> <section class="bg-gray-50 dark:bg-gray-900"> <div class="flex flex-col items-center justify-center px-6 py-8 mx-auto md:h-screen lg:py-0"> <a href=# class="flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white">Projeto PHP</a> <a href=# class="flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white"><?=$mensagem?></a> <div class="w-full bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md xl:p-0 dark:bg-gray-800 dark:border-gray-700"> <div class="p-6 space-y-4 md:space-y-6 sm:p-8"> <h1 class="text-xl font-bold leading-tight tracking-tight text-gray-900 md:text-2xl dark:text-white"> Acesse sua conta </h1> <form class="space-y-4 md:space-y-6" method=post action=menu.php> <div> <label for="email" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Seu email</label> <input type=email name=email id=email class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg block w-full p-2.5" placeholder=nome@gmail.com required=""> </div> <div> <label for="password" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Senha</label> <input type=password name=senha id="password" placeholder="••••••••" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg block w-full p-2.5" required=""> </div> <div> <button type="submit" class="w-full text-white bg-blue-600 hover:bg-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center">Entre</button> </div> </form></div></div></section></html>
×
×
  • Criar Novo...