
Frank K Hosaka
Membros-
Total de itens
1.582 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
como atualizo pagina sem reflesh
pergunta respondeu ao adrsublimacao de Frank K Hosaka em Tutoriais & Dicas - PHP
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald|Roboto"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script> $(document).ready(function() { $( function() { progressbar = $( "#progressbar" ), progressLabel = $( ".progress-label" ); progressbar.progressbar({value: false, change: function() {progressLabel.text( progressbar.progressbar( "value" ) + "%" ); }, complete: function() {setTimeout(2000); $("#progressbar").progressbar('option','value',0)}}); function progress() { val = progressbar.progressbar( "value" ) || 0; progressbar.progressbar( "value", val + 2 ); if ( val < 99 ) {setTimeout( progress, 80 );}} setTimeout( progress, 2000 ); } );}); </script> <style> .ui-progressbar { position: relative;} #progressbar { background: #F5FFFA;} .ui-progressbar .ui-progressbar-value { margin: 0;} .progress-label { position: absolute; text-align: center; width: 100%; color: #cccccc; font-family: 'Open Sans Condensed', sans-serif; font-size: 20px;} .ui-widget-header { background: #ec2528;} p { text-align: center; font-family: 'Open Sans Condensed', sans-serif; font-size: 26px;} .well { margin-top: 20px;} </style> <div class="container"> <div class="well"> <p>Aguardando novo pedido...</p> <div id="progressbar"><div class="progress-label">Aguardando...</div></div> </div></div> -
While sem receber os ID separado nos inputs
pergunta respondeu ao Yago Felix de Frank K Hosaka em Tutoriais & Dicas - PHP
Esse caso é bem interessante. Sempre vi o PHP como um recurso para montar um formulário e com ele editar, acrescentar, deletar os registros de um banco de dados. O caso do Yago Felix é justamente o contrário. Ele usa o banco de dados para montar um formulário no PHP! Estudei o código dele, mas eu não consegui montar o formulário. Assim tive que criar um código na unha para ver se eu chegava no formuário do Yago Felix. Depois de dois dias eu consegui! Mas ao invés de usar três tabelas, eu usei apenas uma tabela: CREATE DEFINER=`root`@`localhost` PROCEDURE `sintoma`() BEGIN DROP TABLE IF EXISTS `sintomas`; CREATE TABLE `sintomas` ( `id` int NOT NULL AUTO_INCREMENT, `descricao` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL, `detalhe` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `tipo` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `grau` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `tecnologia` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; INSERT INTO `sintomas` VALUES (1,'SINAIS E SINTOMAS CLINICOS','OD,OE\',FLUTUANTE,PROGRASSIVA,COM ZUMBIDO,COM TONTURA',NULL,NULL,NULL),(2,'PROVÁVEL ETIOLOGIA','DESCONHECIDA,GENÉTICA,SURDEZ,MÁ FORMAÇÃO CONGÊNITA,PRESBIACUSIA,ÓTITE MÉDIA CRÔNICA,PÓS-OPERATÓRIO,TCE,IDIOPÁTICA,USO DE OTÓXICO,FRATURA DO OSSO TEMPORAL',NULL,NULL,NULL),(3,'CAUSAS PERINATAIS','ANOXIA,PESO BAIXO,TRABALHO DE PARTO PROLONGADO,PREMATURIDADE,HIPERBILIRRUBINEMIA',NULL,NULL,NULL),(4,'DOENÇAS INFECCIOSAS','MENINGITE,SARAMPO,TOXOPLASMOSE,CAXUMBA,RUBÉOLA CONGÊNITA,OUTROS',NULL,NULL,NULL),(5,'CARACTERIZACAO DA PERDA','','NEUROSENSORIAL,CONDUTIVA,MISTA,CENTRAL','NORMAL,LEVE,MODERADA,SEVERA,PROFUNDA,ANACUSIA',NULL),(6,'PRÓTESE AUDITIVA',NULL,'RETRO AURICULAR OE,RETRO AURILICULAR OD,INTRA AURICULAR OD,INTRA AURICULAR OE,INTRA AURICULAR OD,INTRA CANAL OE,INTRA CANAL OD',NULL,'TIPO A OE,TIPO A OD,TIPO B OE,TIPO B OD,TIPO C OE,TIPO C OD,VIA ÓSSEA OE,VIA ÓSSEA OD');END astudy.php <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"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script> <style> body {font-size:70%;width:90%;margin:0 auto} .espaco {height:5%} input[type=checkbox]{vertical-align:middle;position:relative;bottom:1px} label{display:block} </style> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from sintomas"); while($row=$query->fetch_assoc()){ echo "<div class=espaco></div>"; echo "<div class='d-flex bg-primary justify-content-center'>"; echo "<b>".$row['descricao']."</b><br></div>"; $detalhes=explode(",",$row['detalhe']); echo "<div class='d-flex text-bg-lightgray justify-content-center'>"; if(strlen($detalhes[0])){ for($i=0;$i<count($detalhes);$i++){ echo " <label><input type=checkbox> ".$detalhes[$i]."</label> "; } echo "<br>";} echo "</div>"; echo "<div class='d-flex text-bg-lightgray justify-content-center'>"; $tipo=explode(",",$row['tipo']); if(strlen($tipo[0])){echo "TIPO: "; for($i=0;$i<count($tipo);$i++){ echo " <label><input type=checkbox> ".$tipo[$i]."</label> ";} echo "<br>";} echo "</div>"; echo "<div class='d-flex text-bg-lightgray justify-content-center'>"; $grau=explode(",",$row['grau']); if(strlen($grau[0])){echo "GRAU: "; for($i=0;$i<count($grau);$i++){ echo " <label><input type=checkbox> ".$grau[$i]."</label> ";} echo "<br>";} echo "</div>"; echo "<div class='d-flex text-bg-lightgray justify-content-center'>"; $tecnologia=explode(",",$row['tecnologia']); if(strlen($tecnologia[0])){echo "TECNOLOGIA: "; for($i=0;$i<count($tecnologia);$i++){ echo " <label><input type=checkbox> ".$tecnologia[$i]."</label> ";} echo "<br>";} echo "</div>"; } -
ZERAR CONTADOR A CADA ANO QUE ENTRAR - PHP
pergunta respondeu ao Kellison Ruan de Frank K Hosaka em Tutoriais & Dicas - PHP
Geralmente, o formulário do cadastro está amarrado com uma tabela correpondente lá no MySQL. Tanto o MySQL como o formulário podem controlar a numeração, mas nos dois casos esse tipo de campo não permite a repetição de códigos que já foram utilizados, esse é o argumento técnico. Na prática, imagine que você pergunta ao cliente se ele lembra o código dele. Aí ele vai perguntar: qual código, o que foi atribuido em 2023, 2022 ou 2021? Ou seja, se você for precisar fazer o histórico do cliente, aí a coisa complica: Select faturamento from tbvendas where codcliente in 2023 = 10.477 and codcliente in 2022 = 7.116 and codcliente in 2021 = 70.118... -
Sistema de múltiplos uploads com destinários diferentes
pergunta respondeu ao Pedro Lukas de Frank K Hosaka em Tutoriais & Dicas - PHP
Ao invés de trabalhar com múltiplos uploads, eu achei melhor começar com apenas um upload, principalmente porque o meu PHP veio configurado para fazer upload de no máximo 2 mb. Eu alterei para 8 mb, através do ícone do WampServe > PHP > PHP Settings. Acrescentei a extensão 'sql' nas extensões permitidas, pedindo para esse tipo de extensão ser aquivado na pasta2, e os demais na pasta1. <form method=post enctype=multipart/form-data> <input type=file name=arquivo> <input type=submit> </form> <?php if(!isset($_FILES['arquivo']['name'])){exit;} $arquivo = $_FILES['arquivo']['name']; $extensao = explode('.', $_FILES['arquivo']['name'])[1]; if($extensao=='sql'){$pasta="./pasta2/";} else {$pasta="./pasta1/";} $_UP['pasta'] = $pasta; $_UP['tamanho'] = 1024*1024*100; $_UP['extensoes'] = array('png', 'jpg', 'jpeg', 'gif', 'sql'); $_UP['renomeia'] = false; $_UP['errors'][0] = 'Não houve erro'; $_UP['errors'][1] = 'O arquivo no upload é maior que o limite do PHP'; $_UP['errors'][2] = 'O arquivo ultrapassa o limite de tamanho especificado no HTML'; $_UP['errors'][3] = 'O upload do arquivo foi feito parcialmente'; $_UP['errors'][4] = 'Não foi feito o upload do arquivo'; if($_FILES['arquivo']['error'] != 0){ die("Não foi possivel fazer o upload, erro: <br />". $_UP['errors'][$_FILES['arquivo']['error']]);} if(array_search($extensao, $_UP['extensoes'])=== false){ echo "O produto não foi inserido, extesão inválida.";} else if ($_UP['tamanho'] < $_FILES['arquivo']['size']){ echo "Arquivo muito grande.";} else{ if($_UP['renomeia'] == true){ $nome_final = time().'.jpg'; }else{$nome_final = $_FILES['arquivo']['name']; } if(move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta']. $nome_final)){ echo "Upload efetuado com sucesso";}} ?> -
Frank <a href=?email=frankhosaka@gmail.com><button>Ver</button></a><p> Tiago <a href=?email=thiagoaf19@gmail.com><button>Ver</button></a><p> <?php if(!isset($_GET['email'])){exit;} $email=$_GET['email']; echo "Select placas from tbplacas where email=$email";
-
O comando sleep foi feito para o PHP descansar por alguns ou vários segundos antes de exibir o conteúdo. Ele não foi feito para exibir o conteúdo por partes. Quem pode fazer essa mágica é o JavaScript, mas eu não tenho nenhuma experiência com ele.
-
O erro está na segunda linha, onde se você escreveu $host = "mysql:busca;host=localhost"; o correto é: $host = "mysql:dbname=busca;host=localhost";
-
Primeiro, eu preciso da estrutura da tabela que contém os clientes. Fico no aguardo.
-
<body style="width:50%;margin:0 auto"><div style=height:5%></div> <form> <select name=cabelo> <option value="">Selecione a cor do cabelo</option> <option>Morena</option> <option>Loira</option> </select> <input type=submit> </form> <?php if(isset($_GET['cabelo'])){ $cabelo=$_GET['cabelo']; if(empty($cabelo)){echo "Selet * from mocas";} else { echo "Select * from mocas where cabelo='$cabelo'";} }
-
Como criar um sistema de login com adminitradores, vendedores e pedidos
pergunta respondeu ao ggv.nando de Frank K Hosaka em PHP
Tente fazer um código em PHP para imprimir "olá mundo!" Tente criar uma tabela no MySQL com o nome de tbadministrador, com um campo como chave primária (de preferência 'id'), nome. Invente um nome qualquer tipo "João". Tente conectar o PHP no MySQL, e tente imprimir o nome do administrador cinco vezes. Tente mudar o nome do João para Maria, pelo PHP. Se você conseguir fazer tudo isso em menos de 30 dias, é possível que você consiga montar um sistema em menos de um ano. -
PHP Parse error: syntax error, unexpected end of file in... Usando Fetch API
pergunta respondeu ao Moisés B Almeida de Frank K Hosaka em PHP
Eu fiz o teste aqui, e o VS Code reclamou que tem um braço "}" sobrando, eu tirei, e o VS Code parou de reclamar. Eu procurei no código PHP uma chamada para a função java cadastrarAdm, mas não achei nenhuma conexão. Logo, a mensagem de erro do JavaScript veio de um outro código e não desse que você publicou. A única coisa estranha que eu achei no código PHP foi $cliente->setCpf(trim(intval($_POST['cpf']))); eu mudei para $cliente->setCpf(trim('123.456.789-00')); (eu tirei a função intval, ele não faz sentido nesse contexto). Para achar esses erros, usei o banco de dados MySQL com essa tabela CREATE TABLE `clientes` ( `id` int NOT NULL AUTO_INCREMENT, `clt_cpf` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL, `clt_senha` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci e esse código que eu chamei de astudy.php <?php class Pessoa { public $cpf; public function setCPF($cpf){$this->cpf=$cpf;} public function getSenha(){return "1234";} public function getCPF(){return $this->cpf;}} $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); $cliente = new Pessoa; $cliente->setCpf(trim('123.456.789-00')); $senha = $cliente->getSenha(); $hash = password_hash($senha, PASSWORD_DEFAULT); try {$sql='INSERT INTO clientes (clt_cpf,clt_senha) VALUES (:cpf,:senha)'; $query = $pdo->prepare($sql); $query->execute(['cpf' => $cliente->getCpf(),'senha' => $hash]);} catch (PDOException $th) {echo $th->getMessage();die();} echo "Cliente com cpf ". $cliente->getCPF()." cadastrado com sucesso."; A parte da rotina do email eu não testei porque não tenho servidor de email aqui. -
Laravel - Exibir mensagem ao usuário e voltar à Index se o registro não for encontrado
pergunta respondeu ao marsuga de Frank K Hosaka em PHP
O Laravel é dividido em várias partes, os mais importantes são os routes, os controllers e os blades. Para fazer o usuário voltar no blade index se digitar errado, o controller é que vai verificar o que o usuário digitou no blade, caso ele tenha acertado, aí ele vai para o blade show. Em seguida, um código exemplo: astudy>laravel>routes>web.php <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\ControllerTeste; Route::get('/',[ControllerTeste::class,'index']); astudy>laravel>app>Http>Controllers>ControllerTeste.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ControllerTeste extends Controller { function index(request $request){ $mensagem=""; if($request->input('teste')=="1234"){ return view('show');} else { if($request->input('teste')!==null){ $mensagem="Você errou, tente de novo";}} return view('index',['mensagem'=>$mensagem]);} } astudy>laravel>resources>views>index.blade.php <h1>{{$mensagem}}</h1> <form> Digite o código: <input name=teste><br> <input type=submit> </form> astudy>laravel>resources>views>show.blade.php <body style="width:50%;margin:0 auto"><div style=height:5%></div> <h1>Parabéns, você acertou!</h1> -
arrays O que significa preencher array?
pergunta respondeu ao Vinicius0X100 de Frank K Hosaka em PHP
Olhando o seu perfil, encontrei o item mas a resposta que você mencionou não estava lá. Para eu poder dar uma resposta melhor, você tem o link para a resposta do colaborador? -
Como fazer a ativação/desativação dos estatutos em PHP!
pergunta respondeu ao Quencyjones de Frank K Hosaka em PHP
Aqui só vou mudar o status dos clientes. Dos outros colaboradores, deixo para você. StatusCliente.php <body style="width:50%;margin:0 auto"><div style=height:5%></div> <?php $mysqli=new mysqli("localhost","root","","astudy"); if(isset($_GET['mudar'])){ $id_cliente=$_GET['mudar']; if($_GET['status']==0){$novoStatus=1;} else {$novoStatus=0;} $query=$mysqli->query("update cliente set estado_cliente = $novoStatus where id_cliente=$id_cliente"); header("location:statuscliente.php"); } $query=$mysqli->query("select * from cliente order by nome_cliente"); $total=$query->num_rows; echo "<h1>Alterar o status dos utilizadores</h1>"; echo "<h4>Total de Clientes no sistema: $total</h4>"; echo "<table>"; while($row=$query->fetch_assoc()){ foreach($row as $key=>$value){ if($key=="estado_cliente"){ if($value==0){$status="(inativo)";}else{$status="(ativo)";} echo "<tr style=color:red><td>$key<td>=> $value"; echo "<a href=?mudar=".$row['id_cliente']."&status=$value> $status mudar status</a>"; } else { echo "<tr><td>$key<td>=> $value"; } } echo "<tr style=height:15px><td>"; } -
Manter item selecionado no select em outras páginas
pergunta respondeu ao Mayck May de Frank K Hosaka em PHP
Como eu não sei nada de JavaScript, a minha única saída é usar o método submit do formulário, assim: astudy.php <body style='width:50%;margin:0 auto'><div style=height:5%></div> <input type=submit value="Ir para próxima página" onclick="location.replace('astudy2.php')"><p> <?php session_start(); if(isset($_GET['uf'])){$_SESSION['estado']=$_GET['uf'];} if(isset($_SESSION['estado'])){ $estado=$_SESSION['estado'];} else { $estado="Selecione um estado";} echo " <form> <select name=uf required onchange=submit()> <option>$estado</option> <option>AL</option> <option>BA</option> <option>DF</option> <option>GO</option> <option>MG</option> <option>RS</option> <option>SE</option> </select></form><p>"; ?> ---------------- astudy2.php <body style='width:50%;margin:0 auto'><div style=height:5%></div> <?php session_start(); if(isset($_SESSION['estado'])){echo "o estado que você escolheu foi ".$_SESSION['estado'];} ?> <p><input type=submit value=Voltar onclick="location.replace('astudy.php')"> -
Notice: Undefined variable: array e Warning: Invalid argument supplied for foreach()
pergunta respondeu ao Uahaho de Frank K Hosaka em PHP
O programa tinha que ser dividido em dois blocos, mas acabou ficando com 3 blocos, o terceiro bloco tinha que estar no segundo bloco. Eu prefiro parar a execução no primeiro bloco. Outro erro que encontrei foi nessa linha: foreach($array as key)(echo $nome[$key] etc... o correto é $key['nome']. Mas o código é bom, eu aprendi a usar <input pattern> bem como ordenar um array. Aqui está o código, modificado: <body style="width:50%;margin:0 auto"><div style=height:5%></div> <form method="get"> <table><th>Informe Nome e<th>Idade <tr><td><input name=nome[] required> <td><input name=idade[] required pattern=[0-9]+$ size=1> <tr><td><input name=nome[] required> <td><input name=idade[] required pattern=[0-9]+$ size=1> <tr><td><input name=nome[] required> <td><input name=idade[] required pattern=[0-9]+$ size=1> <tr><td><input type=submit></table> </form> <?php if(!isset($_GET['nome'])){exit;} $array[0] = array('nome' => $_GET['nome'][0], 'idade' => $_GET['idade'][0]); $array[1] = array('nome' => $_GET['nome'][1], 'idade' => $_GET['idade'][1]); $array[2] = array('nome' => $_GET['nome'][2], 'idade' => $_GET['idade'][2]); var_dump($array); foreach ($array as $key => $value) { $nome[$key] = $value['nome']; $idade[$key] = $value['idade'];} array_multisort($nome, SORT_DESC, $idade, SORT_ASC, $array); echo "<table border=1px>"; foreach($array as $key) { echo "<tr><th>".$key['nome']; echo "<td>".$key['idade'];} echo "</table>"; -
Eu vi o que houve. Quando entrei com informação fictícia, a classe não atualizou o objeto pdo, e quando entrei com o cadastro, a classe cadastrou sem restrição. Na segunda vez, ele não deixou cadastrar, pois a classe impôs uma regra para não cadastrar para quem já tem. Fiz uma nova bateria de teste, e parece que tudo está em ordem. MySQL CREATE TABLE `usuarios` ( `id_usuario` int NOT NULL AUTO_INCREMENT, `email` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL, `nome` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL, `senha` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id_usuario`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci astudy.php <?php class Usuario { public $pdo; public $msgErro; public function conectar($dbnome, $host, $usuario, $senha){ try {$this->pdo = new PDO("mysql:dbname=".$dbnome.";host=".$host,$usuario,$senha); return $this->pdo;} catch (PDOException $e) {$this->msgErro = $e->getMessage(); return $this->msgErro;}} public function cadastrar($nome, $email, $senha){ //verificar se já exista o email cadastrado $sql = $this->pdo->prepare("SELECT id_usuario FROM usuarios where email = :e"); $sql->bindvalue(":e",$email); $sql->execute(); if ($sql->rowCount() > 0) {return false;}else{ $sql=$this->pdo->prepare("INSERT INTO usuarios (nome, email, senha) VALUES (:n, :e, :s)"); $sql->bindvalue(":n",$nome); $sql->bindvalue(":e",$email); $sql->bindvalue(":s",md5($senha)); $sql->execute(); return true;} /*caso não tenha*/ } public function logar($email, $senha){ //verificar se o email e senha estão cadastrados $sql = $this->pdo->prepare("SELECT id_usuario FROM usuarios WHERE email = :e AND senha = :s"); $sql->bindvalue(":e",$email); $sql->bindvalue(":s",md5($senha)); $sql->execute(); if($sql->rowCount() > 0){ $dado = $sql->fetch(); session_start(); $_SESSION ['id_usuario'] =$dado['id_usuario']; return true; /*a pessoa esta logado*/ } else { return false; /*n foi possivel logar*/}} } $usuario=new usuario; var_dump($usuario); var_dump($usuario->conectar("astudy","localhost","root","")); var_dump($usuario->cadastrar("frank","frankhosaka@gmail.com","1234")); var_dump($usuario->logar("frankhosaka@gmail.com","1234")); var_dump($usuario); Resultado: C:\wamp64\www\astudy\astudy.php:37: object(Usuario)[1] public 'pdo' => null public 'msgErro' => null C:\wamp64\www\astudy\astudy.php:38: object(PDO)[2] C:\wamp64\www\astudy\astudy.php:39:boolean true C:\wamp64\www\astudy\astudy.php:40:boolean true C:\wamp64\www\astudy\astudy.php:41: object(Usuario)[1] public 'pdo' => object(PDO)[2] public 'msgErro' => null
-
O erro no método logar está na variavel $nome, o correto deveria ser $sql->bindvalue(":e",$email); Praticamente só ontem é que eu comecei a estudar o objeto classe, eu não tinha a menor ideia de como estudar a classe. Até onde eu sei, a classe tem propriedades e métodos. Usei o seguinte código para estudar o seu projeto: astudy.php class Usuario { seu codigo } $usuario=new usuario; var_dump($usuario); // $pdo=null;msgErro="" var_dump($usuario->conectar("astudy","localhost","root","")); // object PDO var_dump($usuario->conectar("mosca","mosca","mosca","mosca")); // null var_dump($usuario); // $pdo=null;msgErro="" var_dump($usuario->cadastrar("frank","frank@gmail","1234")); // true var_dump($usuario->conectar("astudy","localhost","root","")); // object PDO var_dump($usuario->cadastrar("frank","frank@gmail","1234")); // false Eu usei um banco de dados fictício, mesmo assim consegui cadastrar o usuário, mas na hora que usei um banco de dados verdadeiro, a classe recusou de fazer o serviço. Isso eu não entendo. Mesmo assim, se eu conseguir melhorar o código, eu volto aqui.
-
Eu tentei fazer o código funcionar aqui, mas eu não consegui. Na listagem parcial tem a palavra "$this->", isso significa que o código faz parte de uma classe. O que mais me intrigou foi $this->tec->formatNumber($row->quantity) - passei o dia todo consultando o Google, não sei como fazer essa proeza, o máximo que eu consegui foi $this->tec->formatNumber=$row->quantity A mensagem que eu recebi é que eu não consegui criar um método formatNumber para um objeto stdClass. Logo, a listagem que não foi publicado deve ser para lá de federal. Em seguida, o rascunho do que eu consegui para adaptar ao código parcial que foi publicado: <?php function product_name($texto){return $texto;} class cupom { private $tec; public function __construct(\stdClass $tec){$this->tec=$tec;} public function formatNumber($value){$this->tec->{$value};} public function formatMoney($value){$this->tec->{$value};} public function formatDecimal($value){$this->tec->{$value};} public function teste(){ $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbvendas,tbprodutos where cupom=666 and tbvendas.id_produto=tbprodutos.id"); $jrows=$query->fetch_all(MYSQLI_ASSOC); $rows=json_decode(json_encode($jrows)); if(!$rows){echo "problema";} $tax_summary = array(); echo "<table><th>Descricao<th>Qtd<th>Preço<th>Subtotal"; foreach ($rows as $row) { echo '<tr><td class="text-left">' . product_name($row->product_name) . '</td>'; echo '<td class="text-center">' . $this->tec->formatNumber=$row->quantity . '</td>'; echo '<td class="text-right">'; if ($row->total_discount != 0) { $price_with_discount = $this->tec->formatMoney=$row->net_unit_price + $this->tec->formatDecimal=$row->item_discount / $row->quantity; $pr_tax = $row->tax_method ? ($this->tec->formatDecimal=$price_with_discount * $row->tax / 100) : ($this->tec->formatDecimal=$price_with_discount * $row->tax / (100 + $row->tax)); echo '<del>' . $this->tec->formatMoney=$price_with_discount+$pr_tax . '</del> ';} echo $this->tec->formatMoney=$row->net_unit_price + $row->item_tax / $row->quantity .'</td><td class="text-right">' . $this->tec->formatMoney=$row->subtotal . '</td></tr>';}}} $cupom=new cupom(new stdClass); echo $cupom->teste();
-
php Retorno de Dados dentro de um Lightbox
pergunta respondeu ao Elisame Araújo de Frank K Hosaka em PHP
Eu também fico desesperado quando o código não funciona. Só tem duas alternativas: ou pula da ponte, ou começa do zero: <body style="width:50%;margin:0 auto"><div style=height:5%></div> <style>td,th{border:1px solid blue}</style> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from membros, afinclasse where membros.id=afinclasse.id"); if(!$query){die("problema");} echo "Assaltos dos membros ativos<p>"; echo "<table style='border:1px solid'><tr><th>Membro<th>Id<th>UF<th>Assaltos"; while($row=$query->fetch_assoc()){ echo "<tr><td>".$row['nick']."<td>".$row['id']."<td>".$row['estado']; echo "<td>".$row['assalto'];} -
Função Array_Search não está retornando número da chave.
pergunta respondeu ao Lucas Gustavo Stefaniak de Frank K Hosaka em PHP
Pelo que eu entendi, você está recebendo assim array (size=6) 0 => string '1' (length=1) 1 => string 'Cem Porcento Musical Ind e Com Ltda' (length=35) 2 => string '03301914/0001-80' (length=16) Mas você queria mais descritivo, assim array (size=6) 'codp' => string '1' (length=1) 'pessoa' => string 'Cem Porcento Musical Ind e Com Ltda' (length=35) 'cnpj' => string '03301914/0001-80' (length=16) Eu acredito que não seja possível pedir para cURL receber no formato descritivo, mesmo assim, é possível usar a função de busca no array, assim $chave = array_search('03301914/0001-80',$array); Se fosse descritivo, $chave retornaria 'cnpj', em se tratando de número, ele vai retornar '2'. Mas se você tem o número da chave e quer o valor dela, a gramática é outra: $cnpj=$array[2]; -
Gerar PDF a partir de dados preenchidos (PHP)
pergunta respondeu ao elizsposito de Frank K Hosaka em PHP
Ao invés de usar o PHP, eu acho que é bem mais fácil usar o navegador. Depois que o PHP montar o cartão de visita, eu iria pedir para o navegador imprimir no formato PDF (você precisa tomar o cuidado de desmarcar a opção de colocar o cabeçalho e o rodapé na impressão). -
Outra forma que eu vi para fazer auditoria é isolando a função num código a parte, assim: <?php class teste { public static $url = null; public static function getURLList(){ global $_SERVER; $startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] ) -1; $excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -10 ); $request = $_SERVER['REQUEST_URI']; $request = substr( $request, strlen( $excludeUrl ) ); $urlTmp = explode("?", $request); $request = $urlTmp[ 0 ]; $urlExplodida = explode("/", $request); $retorna = array(); for($a = 0; $a <= count($urlExplodida); $a ++){ if(isset($urlExplodida[$a]) AND $urlExplodida[$a] != ""){ array_push($retorna, $urlExplodida[$a]);}} self::$url = $retorna;} } var_dump(teste::getURLList()); // null Dessa vez deu null, quando o meu primeiro teste deu 'study.php'. Claro que o meu teste não é válido, pois não sei como emular a função "self::$url" fora do contexto de uma classe. Por outro lado, se você respirar fundo, e lembrar do curso de programação, onde o professor ensinou que toda função retorna um valor, você notará que a função getURLList não segue a orientação do professor. Eu acrescentei nesse código uma instrução assim "return self::$url;" e assim consegui chegar no mesmo valor que eu apurei na unha. E assim hoje eu aprendi um pouco de classe, basta lembrar do curso de função.
-
Desde 1990 que venho fugindo do tópico classe, mas em 2022 decidi estudar o Laravel para ver se eu aprendo um pouco de classe. Por enquanto, ainda nada. O seu tópico é interessante, pois o núcleo do seu trabalho envolve uma classe chamada url. Assim, eu decidi estudá-la, mas o resultado foi desastre. Primeiro chamei de public tudo o que é private. A seguir fui ver o valor de url::getURLList, e obtive null. Então, desmontei a função getURLList para ver se eu chegava no mesmo resultado, mas não consegui: astudy.php <?php include('url.php'); var_dump(url::getURL(0)); // study.php var_dump(url::getBase()); // /astudy/a var_dump(url::getURLList()); // null var_dump(strlen( $_SERVER["DOCUMENT_ROOT"] )-1); // 12 $startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] ) -1; var_dump($_SERVER['DOCUMENT_ROOT']); // C:/wamp64/www var_dump($_SERVER['REQUEST_URI']); // /astudy/astudy.php $request = $_SERVER['REQUEST_URI']; var_dump($_SERVER['SCRIPT_FILENAME']); // C:/wamp64/www/astudy/astudy.php $excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -10 ); $request= substr($request,strlen($excludeUrl)); var_dump($request); // study.php $urlTmp = explode("?", $request); var_dump($urlTmp); // array 0 => study.php $request = $urlTmp[ 0 ]; var_dump($request); // study.php $urlExplodida = explode("/", $request); var_dump($urlExplodida); // array 0 => study.php $retorna = array(); var_dump($retorna); // array empty for($a = 0; $a <= count($urlExplodida); $a ++){ if(isset($urlExplodida[$a]) AND $urlExplodida[$a] != ""){ array_push($retorna, $urlExplodida[$a]);}} var_dump($retorna); // array 0 => study.php url::$url = $retorna; var_dump(url::$url); // array 0 => study.php Esse é um trabalho bem difícil. Para mim, a classe é ainda um mistério. Não sei ainda como depurar uma classe.
-
esconder url apenas esconder a url nomedosite.com.br na impressao
pergunta respondeu ao vilcek de Frank K Hosaka em PHP
Na hora de imprimir, desmarque a opção Cabeçalhos e Rodapés.- 1 resposta
-
- esconder
- esconder nome
- (e %d mais)