

Frank K Hosaka
Members-
Content count
215 -
Joined
-
Last visited
-
Frank K Hosaka started following Cronômetro regressivo php, Significado de alguns conceitos php e sql, URL dinâmica no laravel and and 7 others
-
Isso daí é a gramática do PHP para o motor PDO. O outro motor é mysqli, mas esse só serve para o MySQL, enquanto que o PDO pode trabalhar com outro tipo de banco de dados. Para o PHP conectar ao banco de dados, ele precisa de uma conexão, no seu exemplo, ele foi chamado de ligação: $ligacao=new PDO("mysql:host=localhost;dbname=laravel","root",""); Com a conexão, o PHP usa a gramática do SQL para conversar com o banco de dados: $resultado=$ligacao->prepare("select professor from safados where reputacao = :reputacao"); A gramática do SQL está incompleta, falta definir o parâmetro :reputacao, assim: $resultado->bindParam(':reputacao','o mais safado de todos'); Finalmente, o PHP pede para executar a tarefa: $resultado->execute( ); Para o PHP verificar se o banco de dados executou a tarefa, o PHP pede para que traga os resultados, e guarde na variável $professor: $professor=$resultado->fetch_assoc(); Note que a última linha é diferente da sua, aqui certamente o PHP vai soltar uma mensagem de erro. Em linguagem acadêmica $ligação é uma instância da classe PDO. prepare, bindParam, execute, fetch são os métodos da classe PDO. classe é uma forma avançada de programar. Para incentivar você a estudar classe, tente criar uma classe chamada princesa, onde você define os predicados dela (altura, cor do cabelo,cintura) e o que ela pode fazer (menosprezar, xingar, fazergestosobscenos). É muito difícil, mas assim que você pegar o jeito, vai querer abandonar o PHP e partir para o Laravel.
-
routes/web.php <?php use Illuminate\Support\Facades\Route; Route::get('teste',[App\Http\Controllers\ControllerTeste::class,'teste']); app/Http/Controllers/ControllerTeste.php <?php namespace App\Http\Controllers; class ControllerTeste extends Controller { public function teste(){ return createURL('Acrósticos','Flores do campo');}} app/Helpers.php <?php use Illuminate\Support\Str; function createURL($genre,$title){ return Str::slug($genre) . "/" . Str::slug($title);} A função createURL retira os acentos e coloca tudo em minúsculo. No código acima, depois de digitar localhost:8000/laravel/teste, o resultado é esse: acrosticos/flores-do-campo. Faz tempo que eu criei o arquivo helpers.php, mas acredito que basta usar apenas uma vez o comando composer dump-autoload para o arquivo helpers fazer parte do projeto.
-
arquivo /astudy/index.php <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"> <style> th {font-size: 12px} </style> <table class='table table-striped'> <tr><th>ID<th>FILIAL<th>NUMPED<th>CODPRO<th>NOME CLIENTE<th>QT M3<th>DESTINO <th>PRODUTO<th>TRANSPORTADORA<th>MOTORISTA<th>LITRAGEM A 20°.<th>POSICAO <th>DATA CHEGADA<th>OPÇÕES <?php $mysqli=new mysqli("localhost","root","","laravel"); if(isset($_GET['POSCAR'])){ $poscar=$_GET['POSCAR']; $id=$_GET['ID']; $mysqli->query("update produto set POSCAR='$poscar' where id=$id");} $query=$mysqli->query("select * from produto"); $sql=$query->fetch_all(MYSQLI_ASSOC); foreach ($sql as $key=>$item): ?> <form> <tr> <th><?=$item['ID']?><input type=hidden name=ID value=<?=$item['ID']?>> <th><?=$item['CODFIL']?> <th><?=$item['NUMPED']?> <th><?=$item['CODPRO']?> <th><?=$item['NOMCLI']?> <th><?=$item['QTDFAT']?> <th><?=$item['CIDCLI']?> <th><?=$item['CPLIPD']?> <th><?=$item['NOMTRA']?> <th><?=$item['NOMMOT']?> <th><input class="form-control" style=width:50px value=<?=$item['LITRAG']?>> <th> <select class="form-select" name="POSCAR"> <option><?=$item['POSCAR']?></option> <option value="D">D</option> <option value="C">C</option> <option value="L">L</option> </select> <th><?=date('d/m/y',strtotime($item['DATCHE']))?></th> <th> <input type=submit> </form> <?php endforeach; ?> </table> arquivo /astudy/mysql CREATE TABLE `produto` ( `ID` int NOT NULL, `CODFIL` int NOT NULL, `NUMPED` int NOT NULL, `CODPRO` varchar(6) NOT NULL, `NOMCLI` varchar(45) DEFAULT NULL, `QTDFAT` int DEFAULT NULL, `CIDCLI` varchar(45) DEFAULT NULL, `CPLIPD` varchar(45) DEFAULT NULL, `NOMTRA` varchar(45) DEFAULT NULL, `NOMMOT` varchar(45) DEFAULT NULL, `LITRAG` float DEFAULT NULL, `POSCAR` varchar(1) DEFAULT NULL, `DATCHE` date DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; INSERT INTO `produto` VALUES (9,101,4950,'000620','IPIRANGA PRODUTOS DE PETROLEO SA',100,'GOIANIA','HIDRATADO','dalkjdlkasdka','dakjlsdkjlaskjldla',NULL,'F','2019-05-25'), (8,101,4950,'000620','TESTE',10,'TESTE','HIDRATADO','dasdsfsd','dakjlsdkjlaskjldla',NULL,NULL,'2019-05-24'), (6,101,4950,'000620','TESTE',20,'TESTE','HIDRTADO','TESTE','dakjlsdkjlaskjldla',NULL,'C','2019-05-24'), (4,101,4950,'000620','TESTE',60,'TESTE',NULL,'TESTE','dakjlsdkjlaskjldla',NULL,NULL,'2019-05-24');
-
Depois da orientação do Omar, mudei o código, mas a constante e a função spl só funciona nesse código. Toda vez que você atualiza a tela os dois recursos desaparecem. Logo, eu vou continuar usando o endereço absoluto aonde for necessário bem como definindo os parâmetros do banco de dados dentro da classe conexão. Existe uma extensão chamada phpize que poderia disponibilizar as contantes e funções para todos os módulos do PHP, mas ele não está disponível para o Windows. arquivo /astudy/index.php <?php function my_autoloader($class){include 'model/'.$class.'.php';} spl_autoload_register('my_autoloader'); define('HOST','localhost'); define('DBNAME','laravel'); define('PASSWORD',''); define('USER','root'); $pessoas=new pessoas(); var_dump($pessoas->buscaPessoa(1)); arquivo /astudy/model/conexão.php <?php class conexão { private static $pdo; public function __construct(){} public static function getInstance(){ if(!self::$pdo){ self::$pdo=new PDO("mysql:host=".HOST.";dbname=".DBNAME,USER,PASSWORD);} return self::$pdo;}} arquivo /astudy/model/pessoas.php <?php class pessoas extends conexão { private $pdo; public function __construct(){ $this->pdo=conexão::getInstance();} public function buscaPessoa($id){ $sql = "SELECT * FROM pessoas WHERE codigo = $id"; $stmt=$this->pdo->query($sql); return $stmt->fetch(PDO::FETCH_ASSOC);} public function deletaPessoa($id){ $sql = "DELETE FROM pessoas WHERE codigo = $id"; $stmt=$this->pdo->query($sql); return "Pessoa excluída";}} arquivo /astudy/mysql CREATE TABLE `pessoas` ( `codigo` int unsigned NOT NULL AUTO_INCREMENT, `nome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `pessoas` VALUES (1,'Frank K Hosaka');
-
Aqui tem muita informação que eu não sabia, agradeço pela sua colaboração, e vou tentar adaptar os códigos. Eu sou um programador eventual, a minha especialidade é fazer gambiarra. Eu preciso mostrar a todo mundo como fazer a conexão, eu ainda não tenho a menor ideia de como usar as constantes, não sei onde codificar define('host','localhost'). Eu sou novo na área de linguagem orientada a objetos, ainda não sei o que é uma classe com função estática, comecei a usar nessa semana, quando consegui fazer uma conexão. Evito de fazer funções personalizadas e incentivo aos novos programadores usarem os recursos nativos do PHP. A minha prioridade no fórum é ajudar aos novatos a se familiarizarem com a gramática do PHP, alcançar um objetivo específico, e deixar o problema dos cuidados de um framework para os mais especialistas.
-
Jogar o resultado inteiro do "foreach" dentro de uma única variável.
Frank K Hosaka replied to Festa42's topic in PHP
Gostei do código que usa o método select, where, get, ele lembra mais ou menos o Laravel. Tem jeito de publicar o código dessa classe aqui? Bom, eu usei o tradicional PDO, assim: <?php class classe { private $db; public function __construct(){ $this->db=new PDO("mysql:host=localhost;dbname=laravel","root","");} public function emailpermg($teste){ $query=$this->db->query("select * from permteste where testegroup=$teste"); $retornoteste=$query->fetchAll(PDO::FETCH_OBJ); $session=[]; foreach ($retornoteste as $linha) { $session[] = [$linha->teste01, $linha->teste02, $linha->teste03];} return $session;}} $classe=new classe(); var_dump($classe->emailpermg(1)); E também usei essa tabela: CREATE TABLE `permteste` ( `testegroup` int NOT NULL AUTO_INCREMENT, `teste01` int NOT NULL, `teste02` int DEFAULT NULL, `teste03` int DEFAULT NULL, PRIMARY KEY (`testegroup`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `permteste` VALUES (1,1,1,1); E o resultado saiu assim: C:\wamp64\www\astudy\index.php:14: array (size=1) 0 => array (size=3) 0 => int 1 1 => int 1 2 => int 1 -
arquivo /astudy/banco/conecta_banco.php <?php class Classe { private static $con; public function __construct(){} public static function getInstance(){ if(!self::$con){ self::$con=new PDO("mysql:host=localhost;dbname=laravel","root","");} return self::$con;}} arquivo /astudy/index.php <?php include_once $_SERVER['DOCUMENT_ROOT'].'/astudy/banco/conecta_banco.php'; class Pessoas { private $con; public function __construct(){ $this->con=Classe::getInstance();} public function buscaPessoa($id){ $sql = "SELECT * FROM pessoas WHERE codigo = $id"; $stmt=$this->con->query($sql); return $stmt->fetch(PDO::FETCH_ASSOC);} public function deletaPessoa($id){ $sql = "DELETE FROM pessoas WHERE codigo = $id"; $stmt=$this->con->query($sql); return "Pessoa excluída";}} // retirar essas linhas, elas só estão aqui para testar $Pessoas=new Pessoas(); var_dump($Pessoas->buscaPessoa(1)); arquivo /astudy/mysql CREATE TABLE `pessoas` ( `codigo` int unsigned NOT NULL AUTO_INCREMENT, `nome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `pessoas` VALUES (1,'Frank K Hosaka');
-
<?php class funcoes { public function nomeValido($texto){ $nomeValido=['Inacio','Lourival','Abel']; if(in_array($texto,$nomeValido)){return true;} else {return false;}} } $funcoes=new funcoes(); $nome="urKNPIjafGeLWsnT"; if(!$funcoes->nomeValido($nome)){ echo "Precisamos de uma cópia do seu RG para validar o cadastro";exit;}
-
Eu não faço tratamento nenhum em nenhuma variável, pois eu confio no PHP. O PHP me devolve uma mensagem de erro ou simplesmente eu chego num resultado inesperado. Veja esse caso: $mysqli=new mysqli("localhost","root","","laravel"); Eu não vejo para quê fazer um tratamento de erro nesse caso. Se o PHP não conseguir fazer a conexão, ele simplesmente pára o programa e exibe a mensagem de erro. No meu caso, o erro é quase 100% erro de digitação. Claro que o correto é fazer tratamento de erro para orientar o usuário e ajudá-lo a não perder o seu dia de produção, mas isso está muito além do escopo de qualquer fórum. Eu entendo que a prioridade do forum é ajudar o usuário a se familizar com a gramática da linguagem de programação e mostrar o que é possível fazer com ela, deixando de lado os detalhes acadêmicos.
-
<div id=painel></div> <script> function separarMilissegundos(ms) { dias = Math.floor(ms / 86400000) horas = Math.floor((ms % 86400000) / 3600000); minutos = Math.floor((ms % 3600000) / 60000); segundos = Math.floor((ms % 60000) / 1000); return "Faltam "+dias+" dias, "+horas+" horas, "+minutos+" minutos, "+segundos+" segundos."} function mostrarHora() { hora=new Date() horafinal=new Date('2023-11-12 13:32') diferençaHoras=horafinal-hora if(diferençaHoras<=0){return painel.innerHTML="Acabou"} painel.innerHTML=separarMilissegundos(diferençaHoras) setInterval(mostrarHora,1000)} mostrarHora() </script>
- 3 replies
-
- cronômetro
- php
-
(and 1 more)
Tagged with:
-
Estudado o seu código, encontrei duas tarefas entrelaçadas, uma é para procurar informação de uma referência através do marcador <a>, e outra tarefa é fazer um novo cadastro e ao mesmo tempo verificar se ele foi cadastrado. Deixei o marcador <a> de lado, e dei mais atenção ao novo cadastro: pagina1.php <?php // mysql tab_aprendiz(id int,ref int,nome varchar,email) // (1,444,Frank,frank@com)(2,445,Biehl,biel@com) $ggCon=new mysqli("localhost","root","","laravel"); if(isset($_POST['ref'])){ $ref=$_POST['ref']; $email=$_POST['email']; $nome=$_POST['nome']; mysqli_query($ggCon,"insert into tab_aprendiz (ref,nome,email) values ('$ref','$nome','$email')");} echo "<h2>Lista dos delinquentes</h2>"; echo "<table><th>Ref<th>Nome"; $sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz"); while($ggLinha= mysqli_fetch_array($sqlVF)): $ref=$ggLinha['ref']; $nome=$ggLinha['nome']; echo "<tr><td>$ref<td>$nome"; endwhile; echo "</table>"; ?> <p><h2>Formulário para Cadastrar Novo Delinquente</h2></p> <form method=post> <table> <tr><td>referencia<td><input name="ref" required> <tr><td>nome<td><input name="nome" required> <tr><td>email<td><input name="email" required> <tr><td><input type=submit> </form> E aqui está o código que usa o marcador <a> de maneira mais eficiente: pagina2.php <?php $ggCon=new mysqli("localhost","root","","laravel"); if(isset($_GET['ref'])){ $ref=$_GET['ref']; $sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz where ref=$ref"); $nome=mysqli_fetch_array($sqlVF)['nome']; echo "o nome do delinquente com ref $ref é $nome"; } echo "<p>Escolha o código de um delinquente:"; $sqlVF=mysqli_query($ggCon,"select * from tab_aprendiz"); while($ggLinha= mysqli_fetch_array($sqlVF)): $ref=$ggLinha['ref']; echo "<br><a href=?ref=$ref>$ref</a>"; endwhile;
-
A minha sugestão é fazer numa só página: <?php if(isset($_POST['nome'])){ $nome=$_POST['nome']; echo "<input value=$nome>";exit;} ?> <form method=post> nome <br> <input name=nome required> <input type=submit> </form> Para entender o conceito de "página", aqui segue outro exemplo: <?php if(isset($_POST['página1'])){echo "Você está na página 1";exit;} if(isset($_POST['página2'])){echo "Você está na página 2";exit;} if(isset($_POST['página3'])){echo "você está na página 3";exit;} ?> <form method=post> <p>Escolha uma página <p><input type=submit name=página1 value="Página 1"> <p><input type=submit name=página2 value="Página 2"> <p><input type=submit name=página3 value="Página 3"> </form> O marcador <form> sempre vai atualizar o navegador, ele vai seguir na página indicada no método action. Se não houver nenhum action, ele vai atualizar a própria página. Para quem está começando a transportar valores de uma página para outro, eu sugiro utilizar o método get, assim é possível ver o que uma página está mandando para outra através da barra de endereço do navegador.
-
A minha sugestão é usar o JavaScript e não o PHP: <div id=painel></div> <script> function mostrarHora() { hora=new Date() horafinal=new Date('2023-11-11 13:12') if(hora>horafinal){alert("acabou!")} painel.innerHTML=hora setInterval(mostrarHora,1000)} mostrarHora() </script> Ops, fiz besteira, você pediu contagem regressiva. Vou tentar consertar. Aqui está a correção: <div id=painel></div> <script> function mostrarHora() { hora=new Date() horafinal=new Date('2023-11-11 13:32') diferençaHoras=horafinal-hora if(diferençaHoras<=0){return painel.innerHTML="Acabou"} painel.innerHTML=parseInt(diferençaHoras/1000) + " segundos" setInterval(mostrarHora,1000)} mostrarHora() </script> O PHP só é útil quando você precisa buscar informações no banco de dados tipo MySQL, ou quando você precisa repetir um monte de código repetitivo no HTML.
- 3 replies
-
- cronômetro
- php
-
(and 1 more)
Tagged with:
-
Gostei da função captcha, mas precisei alterar uma linha: $imageY = intval($y + sin($x / 10)) ; Quanto ao conferir o código captcha, essa é a minha sugestão: <?php include('captcha.php'); $ggCon = mysqli_connect("localhost","root","","laravel"); $phpSelf = $_SERVER['PHP_SELF']; $mensagem=""; if(isset($_POST['ggLogin'])){ $gg_id = $_POST['gg_id']; $ggLogin = $_POST['ggLogin']; $ggSenha = $_POST['ggSenha']; $ggCaptcha = $_POST['ggCaptcha']; $text88 = $_POST['text88']; if($ggCaptcha!==$text88){ $mensagem="Favor digitar o Captcha corretamente"; goto gambiarra;} $sqlVF = mysqli_query($ggCon, "SELECT * FROM tab_logar WHERE ggLogin = '".$ggLogin."' AND ggSenha = '".$ggSenha."' "); $AcompararDados = mysqli_num_rows($sqlVF); if($AcompararDados == true){ $_SESSION['gg_id'] = $gg_id; print "usuário logado";exit;} else{ print "não logou";exit;}} $text88 = rand(10000,99999); $myimage = funcCaptcha($text88); gambiarra: ?> <form action="<?=$phpSelf?>" method="post" style="width:200px;padding:1em;margin:auto"> <h1>Acessar painel</h1> <table> <tr><td>Id<td><input name=gg_id value=1> <tr><td>Login<td><input name="ggLogin" value='joao'> <tr><td>Senha<td> <input name="ggSenha" value='123'> <tr><td>Digite o código<td><input name="ggCaptcha"> <tr><td><img src="capacha.jpg" style="width:150px;" alt="código captcha"> <input type=hidden name=text88 value=<?=$text88?>> <tr><td><input type=submit> </table> <p><h4><?=$mensagem?></h4></p> </form>