
Frank K Hosaka
Membros-
Total de itens
1.582 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
Hoje precisei dar uma olhada no manual do Laravel para ver se havia a possibilidade de fazer uma consulta agrupamento e uma consulta seleção ao mesmo tempo para a mesma tabela. Isso é possível sim, o problema é que o campo que precisava agrupar estava no formato yyyy-mm-dd h:i. Para mudar o formato no meio de uma consulta, isso é bem complicado, assim estou pensando em mudar o campo em duas partes, um campo para date e outro para time, claro que isso é um desperdício de recurso. Outra alternativa é eu "injetar" a gramática do PHP no Laravel, ou seja, vou pedir para fazer uma consulta no Controller e outra no Blade. Isso também é desperdício de recurso. Mas no manual eu consegui encontrar um tópico interessante. Eu pensei que os campos created_at e updated_at eram obrigatórios para trabalhar com o motor do Eloquent, e assim eu criei esses dois campos em várias tabelas para continuar com o meu estudo no Laravel. Só que eu nunca usei esses campos, eu só tenho dois usuários usando o meu projeto, eu não preciso de tanto detalhe na tabela para trabalhar. A dica é pedir para o Eloquent não trabalhar com esses dois campos, definindo a propriedade $timestamps para false para cada model que você precisa trabalhar. Eloquent: Getting Started - Laravel - The PHP Framework For Web Artisans
-
Eu tenho a tabela pedidos com datas e o número do pedido. Eu queria agrupar o número dos pedidos por data. Eu fiz uma bela gambiarra, misturando a gramática do Laravel com a gramática do PHP. Funcionou, mas eu pedi ajuda no Laracasts. A solução do Lary é muito mais elegante que a minha. Só que apareceu um outro colaborador, propondo resolver tudo na base das Collections. Os Collections não funcionaram comigo, mas a mensagem do Lary desapareceu. O Lary é a Inteligência Artificial do Laracasts. O problema do Laracasts é que não dá para editar o Post, mas o Lary conseguiu até excluir! Que coisa! Mesmo assim, eu consegui adaptar a sugestão do Lary no meu código que ficou assim: Model tbpedido.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class tbpedido extends Model { use HasFactory; protected $table="tbpedido"; public function details() {return $this->hasMany(tbpedido::class,'dia','dia');} } -------------------------- PedidoController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\tbpedido; class PedidoController extends Controller { public function group(){ $groups=tbpedido::groupBy('dia')->select('dia')->get(); $details=tbpedido::with('details')->get(); return view('groups',compact('groups','details')); } } ----------------------------- groups.blade.php <table><th>Dia<th>Pedido @foreach($groups as $group) <tr><td>{{$group->dia}} @foreach($group->details as $detail) <td>{{$detail->ped}} @endforeach @endforeach </table> A minha solução também funciona, mas vou morrer de vergonha se eu publicar aqui.
-
Consegui copiar quase tudo, mas o meu melhor trabalho está na gambiarra que eu fiz na caixa de busca: navbar.php <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <nav class="navbar navbar-expand-lg bg-body-tertiary"> <div class="container-fluid"> <a class="navbar-brand" href="#"><img src=https://logopng.com.br/logos/ifood-43.png width=80 height=40></a> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a id=inicio class="nav-link" aria-current="page" href="inicio">Inicio</a></li> <li class="nav-item"> <a id=restaurante class="nav-link active" aria-current="page" href="restaurante">Restaurantes</a> </li> <li class="nav-item"> <a id=mercado class="nav-link" aria-current="page" href="produto">Mercados</a></li> <form class="d-flex" role="search"> <i class="input-group-text"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-search" viewBox="0 0 16 16"> <path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/> </svg><input class="border-0 bg-transparent" placeholder="Busque por item ou loja" style=outline:none></i></form> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Contagem - MG </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul></li> <li class="nav-item"><a class="nav-link" href="#">Link</a></li> <li class="nav-item"><a class="nav-link" href="#">Link</a></li> </ul></div></div></nav></nav> ------------------------------------------------------------------------------- produto.php <?php include('navbar.php'); echo "<div style='width:500;margin:0 auto;margin-top:50'>"; echo "Beringela <br>"; echo "Abacaxi <br>"; echo "</div>"; ?> <script> inicio.className="nav-link" restaurante.className="nav-link" mercado.className="nav-link active" </script> ------------------------------------------------------------------------------- inicio.php <?php include('navbar.php'); echo "<div style='width:500;margin:0 auto;margin-top:50'>"; echo "Aqui é o <br>"; echo "começo de tudo <br>"; echo "</div>"; ?> <script> inicio.className="nav-link text-danger" restaurante.className="nav-link" mercado.className="nav-link" </script> ------------------------------------------------------------------------------- restaurante.php <?php include('navbar.php'); echo "<div style='width:500;margin:0 auto;margin-top:50'>"; echo "Bar do Zé <br>"; echo "Bar da Esquina <br>"; echo "</div>"; ?> <script> inicio.className="nav-link" restaurante.className="nav-link text-danger" mercado.className="nav-link" </script>
-
O notebook do meu irmão é muito velho e o sistema é o Windows 10. Eu estava com muito receio. Lá em 2020, eu gastei duas semanas para instalar o WampServer no meu notebook, usando vários tutoriais que encontrei no Google. Dessa vez, eu não usei nenhum tutorial. Baixei o programa principal, mas a velocidade do download era de 300 kb/s. É difícil dizer se a baixa velocidade era causada pela idade do notebook, ou pela distância do WiFi (o notebook estava a 10m do modem) ou se esse negócio de fibra ótica é mais uma conversa para o boi dormir. Na hora de instalar, o WampServe disse que precisa do Microsoft Visual C++. Lá tem um enorme relação de versões, eu só peguei o último, e a instalação terminou sem nenhum trauma. Ativei o servidor, abri o navegador e escrevi localhost, e lá apareceu a tela de apresentação. Pelo ícone do servidor eu abri o PhpMyAdmin e de lá importei o banco de dados do orçamento. No diretório C:\Wamp64\www eu abri um diretório chamado frank e joguei nele todos os códigos em PHP que compõe o meu projeto de orçamento. Finalmente, mudei o nome do index.php do diretório www para index original.php, no lugar coloquei um novo index.php assim: <?php header('location:/frank/index.php'); O meu irmão usa o projeto Orçamento através da internet. Eu instalei o WampServe, o banco de dados e os meus códigos em PHP no computador do meu irmão só por precaução. Espero que ele não use.
-
$_SESSION não passa de jeito nenhum
pergunta respondeu ao mm_edilson de Frank K Hosaka em Tutoriais & Dicas - PHP
Você viu o tamanho do campo senha na tabela usuários? -
$_SESSION não passa de jeito nenhum
pergunta respondeu ao mm_edilson de Frank K Hosaka em Tutoriais & Dicas - PHP
Eu fiz o teste por aqui, e eu não consegui passar pelo password_verify. Depois de muito apanhar eu vi que o tamanho do campo senha na tabela usuarios estava assim var(50), quando o correto é var(255). Eu ajuntei os seus códigos e eu fiz apenas um só com o nome de index.php: <form method=post> <input name=email placeholder=email value="frankhosaka@gmail.com"> <input name=senha placeholder=senha value="1234"> <input type=submit> </form> <?php session_start(); $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); //$email='frankhosaka@gmail.com'; //$hash=password_hash('1234',PASSWORD_DEFAULT); //$stmt=$pdo->prepare("insert into usuarios (email,senha) values (?,?)"); //$stmt->execute([$email,$hash]);exit; $message = ''; if ($_SERVER['REQUEST_METHOD'] == 'POST'){ $email = $_POST['email']; $password = $_POST['senha']; try { $query = "SELECT * FROM usuarios WHERE email = ?"; $stmt = $pdo->prepare($query); $stmt->execute([$email]); $user = $stmt->fetch();} catch (Exception $e){ echo $e->getMessage(),'\n'; } if ($user && password_verify($password, $user['senha'])) { $_SESSION['user_id'] = $user['id']; $_SESSION['user_name'] = $user['nome']; $_SESSION['access_level'] = $user['acesso_nivel']; echo "<form><input type=submit name=testar value=testar onclick=submit()></form>"; } else { $message = 'Erro! E-mail ou senha inválidos.';}} if(isset($_GET['testar'])){ echo "id: ".$_SESSION['user_id']."<br>"; echo "user_name: ".$_SESSION['user_name']."<br>"; echo "access_level: ".$_SESSION['access_level']."<br>"; echo "<input type=submit value='Novo Teste' onclick=location.replace('index.php')>";} ?> -
Sim, ele é amargo. Mas eu frito em fatias em um pouco de azeite, adiciono dois copos de água se usar dois nigagori, adiciono um pacote de Hondashi e uma colher de missô, deixo cozinhar por 10 ou 15 minutos, ele tem que ficar mole. Hoje eu fiz a versão descontinuar no Laravel: Controller: aqui usei a gambiarra da session para poder passar o valor de uma variável de uma instrução para outra public function descontinuar(Request $request){ $produto=null; if($request->input('codprod')){ $codprod=$request->input('codprod'); $produto=tbprod::where('codprod',$codprod)->value('prod'); session(['codprod'=>$codprod]);} if($request->input('confirmar')){ $codprod=session('codprod'); tbhistprod::where('codprod',$codprod)->update(['codprod'=>1854]); tbprod::where('codprod',$codprod)->update(['prod'=>' disponivel']);} return view('descontinuar',['produto'=>$produto]);} Blade: @include('menu') <br> <form>Código do produto <input name=codprod onchange=submit() autofocus></form> @if($produto) Confirmar a descontinuação do produto: {{$produto}} <form><input type=submit name=confirmar value=Confirmar onclick=submit()></form> @endif Note que esse não é um belo código Laravel, mas ele funciona.
-
O meu banco de dados já tem mais de 1.000 produtos, isso é muita coisa. O meu programa Orçamento tem condições de criar um novo produto, mas ao invés de criar um novo produto, eu decidi descontinuar um produto. Por exemplo, eu tenho um produto chamado beringela brasileira e outro chamado de beringela japonesa. Como eu não sei como assar uma beringela brasileira, eu decidi não mais comprar. Além de ser novato na programação eu também sou novato na cozinha, mas recentemente eu encontrei um novo produto chamado nigagori ou mais precisamente pepino japonês. Ao invés de criar um produto novo com o nome de nigagori, eu decidi usar o código da beringela brasileira. O meu programa Orçamento é capaz de mudar o nome, o custo, a unidade, o código de barra, a localização, o código utilizado pelo fornecedor, o NCM (o código de produtos do Mercosul), mas ele não é capaz de mudar a história do produto. Até ontem eu entrava no banco de dados e mudava a história do produto para um produto que eu chamei de Descontinuado. Isso é fácil de fazer pelo programa PhpMyAdmin. Mas ontem eu não consegui logar no PhpMyAdmin. Isso já aconteceu umas cinco vezes comigo nesses últimos três meses, quando decidi hospedar o meu banco de dados no Hostinger. Pensando nesse problema, eu criei um novo código chamado descontinuar.php, ele ficou assim <?php include('menu.php'); echo "<form>Digite o código do produto<input name=codprod onchange=submit()></form>"; if(isset($_GET['codprod'])){ $codprod=$_GET['codprod']; $query=$mysqli->query("select * from tbprod where codprod=$codprod"); $produto=$query->fetch_assoc()['prod']; echo $produto."<br>"; echo "<form>Confirme a descontinuição do produto de código <input name=confirma type=submit value=$codprod></form>";exit;} if(isset($_GET['confirma'])){ $codprod=$_GET['confirma']; $query=$mysqli->query("update tbhistprod set codprod=1854 where codprod=$codprod"); $query=$mysqli->query("update tbprod set prod=' Disponivel' where codprod=$codprod"); echo "<input type=submit value=Continuar onclick=location.replace('descontinuar.php')";} O programa é bem simples e agora o meu projeto Orçamento também pode descontinuar o produto. Esse é um código PHP, agora preciso também traduzir em Laravel que está em fase de teste. Agora, a minha preocupação é se eu não conseguir logar no meu projeto. Eu não tenho nenhum plano de contigência se a Hostinger me deixar na mão.
-
Eloquent: procurando a agulha além do palheiro
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Além do Laravel, eu tenho o mesmo projeto em PHP. No caso de um apresentar problema, peço para o usuário usar outra plataforma. No caso da busca da agulha no palheiro, hoje eu conheci o comando MySQL concat, a sintaxe dele é essa: $sql="select * from tbprod where concat (codprod,prod,codbar,codforn) like '%$busca%'"; -
Como passar o valor de um variavel usando um botão em php?
pergunta respondeu ao Redinho Marques de Frank K Hosaka em PHP
Eu faria assim: astudy.php <form> Digite o codigo do produto <input name=codigo onchange=submit()> </form> <?php $mysqli=new mysqli("localhost","root","","astudy"); if(isset($_GET['codigo'])){ $codprod=$_GET['codigo']; $query=$mysqli->query("select * from tbprod where codprod=$codprod"); $row=$query->fetch_assoc(); $produto=$row['prod']; $preço=$row['custo']; echo " Formulário de Atualização <form><table> <tr><th style=width:100;text-align:left>Campo<th align=left>Valor <tr><td>Codigo<td>$codprod<input type=hidden name=code value=$codprod> <tr><td>Produto<td>$produto <tr><td>Preço<td><input name=preço value=$preço onchange=submit()> </table></form>"; exit;} if(isset($_GET['code'])){ $codprod=$_GET['code']; $preço=$_GET['preço']; $query=$mysqli->query("update tbprod set custo=$preço where codprod=$codprod"); $queryconfirma=$mysqli->query("select * from tbprod where codprod=$codprod"); $row=$queryconfirma->fetch_assoc(); var_dump($row); echo "<input type=submit value=Recomeçar onclick=location.replace('astudy.php')>";} -
O Lary do Laracasts respondeu: Yes, there are several elegant solutions to control user access in Laravel. One of the most common ways is to use middleware. Middleware is a way to filter HTTP requests entering your application. You can create a middleware that checks if the user is authorized to access a particular route or function. Here's an example: Create a middleware using the following command: php artisan make:middleware CheckUserRole Open the app/Http/Middleware/CheckUserRole.php file and add the following code: <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class CheckUserRole { public function handle($request, Closure $next, $role){ if (!Auth::check()) {return redirect('/login');} $user = Auth::user(); if ($user->role != $role) { return redirect('/menu');} return $next($request);} } Register the middleware in the app/Http/Kernel.php file: protected $routeMiddleware = [ // ... 'role' => \App\Http\Middleware\CheckUserRole::class, ]; Use the middleware in your routes: Route::get('/admin', function () { // Only users with the 'admin' role can access this route })->middleware('role:admin'); In this example, the middleware checks if the user is authenticated and has the required role to access the route. If the user is not authenticated, they are redirected to the login page. If the user is authenticated but does not have the required role, they are redirected to the menu page. This is just one example of how you can control user access in Laravel. There are many other ways to achieve this, depending on your specific requirements.
-
Eu tenho uma função chamada pagar, mas eu gostaria que só o usuário com o id=1 tivesse acesso a essa função. Hoje eu encontrei uma solução, não sei se é correto, mas ele funcionou para mim. No PHP eu coloquei a seguinte instrução: if($_SESSION['id']!==1){header('location:menu.php');} No Laravel, eu usei essa instrução: if(auth::id()!==1){return redirect('menu');}
-
Eu tentei subtrair dois <input>, mas o JavaScript me devolveu NaN como resposta. Depois de cinco horas no Google, achei essa solução: <?php echo "<input id=total size=7> Total<br>"; $js="t=parseFloat(total.value.replace(',','.'));"; $js.="d=parseFloat(dinheiro.value.replace(',','.'));"; $js.="tr=(d-t).toString();"; $js.="troco.value=tr.replace('.',',')"; echo "<input id=dinheiro size=7 onchange=$js> --> troco <input id=troco size=7>"; O JavaScript é muito bacana, mas tem hora que ele me tira do sério.
-
Desde 2020 é que venho escrevendo a mesma coisa no PHP, assim, $mysqli=new mysqli("localhost","root","","astudy"), só hoje é que aprendi um pouco mais sobre classe. A classe geralmente tem essa gramática: class mysqli { }, ou seja, uma classe não é a mesma coisa que uma função. Se a classe não é a mesma coisa que a função, como é que vou passar o host, o usuário, a senha e o banco de dados ao criar uma nova instância da classe? Eu nunca vi a classe mysqli do PHP, mas desconfio que ele seja mais ou menos assim: class mysqli { public $host; public $user; public $password; public $dbname; public function __construct($host=null,$user=null,$password=null,$dbname=null){ $this->host=$host; $this->user=$user; $this->password=$password; $this->dbname=$dbname;} } Desde 2020 é que vejo algumas classes com essa função __construct, mas eu não tinha a menor ideia para que ele servia. Hoje eu aprendi que o __construct é que vai criar uma nova classe mas com alguns parametros já pre definidos ou não. Para ter essa opção de usar uma classe com ou sem parâmetros, você precisa definir as variáveis dentro da função __construct, tipo "$host=null".
-
Ainda não achei a solução, mas encontrei um vídeo no YouTube que fala do JavaScript. No meu caso, o JavaScript usa o Windows para chegar na impressora. Essa é uma boa solução, se não for possível conectar o PHP na impressora. <script> w=window.open() w.document.write("olá mundo") w.print() w.close() </script>
-
Na minha opinião, o Neverstop é a melhor impressora doméstica que existe no mundo. Eu lembro da HP 500, todo santo mês eu precisava comprar um cartucho de tinta, até que um belo dia eu comprei um cartucho pirata e acabou melando toda a impressora. O meu Neverstop não é colorido, e só compro o toner a cada seis meses, e eu só troco quando não consigo enxergar mais nada. O mais bacana é que ele tem um adaptador WiFi, e assim ele não precisa ficar preso no notebook. Eu consigo imprimir tanto pelo notebook quanto pelo celular. O meu problema é o PHP. Na internet, eu consegui esse código: <?php $imprimir="Olá mundo!"; try { $fp=pfsockopen("192.168.0.18", 9100); fputs($fp, $imprimir); fclose($fp); echo 'Sucesso!!';} catch (Exception $e) { echo 'Problema: ', $e->getMessage(), "\n";} Esse programa escreve "sucesso" na tela, mas o máximo que ele faz é ativar a impressora, fazer o motor roncar um pouco e parar. Imprimir que é bom, nada. Alguém aqui já conseguiu imprimir pela rede local do WiFi, usando o PHP?
-
<?php $mateus5="1 Jesus, vendo a multidão, subiu a um monte, e, assentando-se, aproximaram-se dele os seus discípulos; 2 e, abrindo a boca, os ensinava, dizendo: 3 Bem-aventurados os pobres de espírito, porque deles é o Reino dos céus; 4 bem-aventurados os que choram, porque eles serão consolados; 5 bem-aventurados os mansos, porque eles herdarão a terra; 6 bem-aventurados os que têm fome e sede de justiça, porque eles serão fartos; 7 bem-aventurados os misericordiosos, porque eles alcançarão misericórdia; 8 bem-aventurados os limpos de coração, porque eles verão a Deus; 9 bem-aventurados os pacificadores, porque eles serão chamados filhos de Deus; 10 bem-aventurados os que sofrem perseguição por causa da justiça, porque deles é o Reino dos céus; 11 bem-aventurados sois vós quando vos injuriarem, e perseguirem, e, mentindo, disserem todo o mal contra vós, por minha causa. 12 Exultai e alegrai-vos, porque é grande o vosso galardão nos céus; porque assim perseguiram os profetas que foram antes de vós."; for($i=10;$i<=12;$i++){$mateus5=str_replace($i,"@",$mateus5);} for($i=1;$i<=9;$i++){$mateus5=str_replace($i,"@",$mateus5);} $mateus5=explode('@',$mateus5); $versiculos=count($mateus5); for($i=0;$i<$versiculos-1;$i++){$mateus5[$i]=trim($mateus5[$i+1]);} $descartar=array_pop($mateus5); var_dump($mateus5); //resultado: C:\wamp64\www\astudy\astudy.php:22: array (size=12) 0 => string 'Jesus, vendo a multidão, subiu a um monte, e, assentando-se, aproximaram-se dele os seus discípulos;' (length=104) 1 => string 'e, abrindo a boca, os ensinava, dizendo:' (length=40) 2 => string 'Bem-aventurados os pobres de espírito, porque deles é o Reino dos céus;' (length=74) 3 => string 'bem-aventurados os que choram, porque eles serão consolados;' (length=61) 4 => string 'bem-aventurados os mansos, porque eles herdarão a terra;' (length=57) 5 => string 'bem-aventurados os que têm fome e sede de justiça, porque eles serão fartos;' (length=81) 6 => string 'bem-aventurados os misericordiosos, porque eles alcançarão misericórdia;' (length=77) 7 => string 'bem-aventurados os limpos de coração, porque eles verão a Deus;' (length=68) 8 => string 'bem-aventurados os pacificadores, porque eles serão chamados filhos de Deus;' (length=79) 9 => string 'bem-aventurados os que sofrem perseguição por causa da justiça, porque deles é o Reino dos céus;' (length=103) 10 => string 'bem-aventurados sois vós quando vos injuriarem, e perseguirem, e, mentindo, disserem todo o mal contra vós, por minha causa.' (length=128) 11 => string 'Exultai e alegrai-vos, porque é grande o vosso galardão nos céus; porque assim perseguiram os profetas que foram antes de vós.' (length=134)
-
Já faz dois meses que estou enrolado para reescrever o projeto Polo ou Portaria, o meu problema é que o meu vocabulário em PHP, HTML e JavaScript é muito pobre, eu só sei usar $mysqli, <table> e alert( ). No projeto Polo tem dois checkbox. Para mandar o valor para uma outra página em PHP basta usar o elemento <form> e submeter. Mas eu mudei o escopo do código, ao invés de apagar tudo e prosseguir para a próxima página, vou manter o formulário do cadastro e pedir para o JavaScript conversar com o servidor e verificar se o cadastro foi aceito (ou não). Para saber como o JavaScript lê um checkbox, eu criei o seguinte código: <input type=checkbox id=checkbox onclick=alert(value)> A minha primeira tentativa não deu certo, o JS devolveu "on" e "off". A minha segunda tentativa foi assim: <input type=checkbox id=checkbox onclick=alert(checkbox.checked)> Não deu certo, o JS devolveu "true" ou "false". Finalmente, eu não tive escolha senão fazer gambiarra, que ficou assim: <input type=checkbox id=checkbox onclick=alert(checkbox.checked*1)> Agora sim, o JS devolve 1 ou 0. Esse é o problema de um programador com vocabulário pobre. Enquanto um programador profissional leva meia hora para reescrever um projeto, um programador meia boca vai levar bem mais de dois meses.
-
Nem tudo que parece json no PHP é considerado como válido. Depois de dois anos finalmente consegui fazer um json que parece inválido se tornar válido: <?php $fator="{'cod':520,'conv':0.1}"; var_dump($fator); $obj=json_decode(str_replace("'",'"',$fator)); var_dump($obj);
-
Eu vejo essa mensagem no painel de inspeção do navegador, quando executo esse código: teste.blade.php: <form method=post> @csrf <input name=email><input type=submit> </form> controller: public function teste(Request $request){ if($request->input("email")){ $email=$request->input("email"); dd($email);} return view('teste');} O código funciona, o problema é que eu não sei se posso simplesmente negligenciar a mensagem. De acordo com o Lary Laracasts, o problema é lá no servidor, no meu caso, seria o Hostinger. Como eu só pago R$ 23,00 por mês para hospedar as minhas coisas, não sei se tenho direito a reclamar alguma coisa. The error message "POST https://sample.net/teste/ 500 /teste/:1" indicates that there was a server-side error when attempting to make a POST request to the specified URL. This error is not related to the code provided in the question. To troubleshoot this error, you should check the server logs to see if there are any error messages that can provide more information about the cause of the error. Additionally, you can try making the same POST request using a tool like Postman to see if the error is specific to the code or if it is a server-side issue. As for the code provided, it appears to be functioning correctly. The form is submitting a POST request to the "teste" method in the controller, which is then retrieving the "email" input value and displaying it using the dd() function. If you want to display the email value on the page instead of using dd(), you can modify the controller code as follows: public function teste(Request $request){ $email = $request->input("email"); return view('teste', ['email' => $email]); } Then, in the teste.blade.php file, you can display the email value using: @if(isset($email)) <p>Email: {{ $email }}</p> @endif
-
Tem um monte de produtos que eu esqueci de cadastrar o NCM, fiz um código provisório para entrar com o NCM do produto. O máximo que eu consegui é fazer o código ir até o final da lista. O idel era se eu soubesse como pegar o penúltimo <input>. <?php include 'menu.php'; if(isset($_GET['codprod'])){ $codprod=$_GET['codprod']; $cf=$_GET['cf']; $query=$mysqli->query("update tbprod set cf=$cf where codprod=$codprod");} $lcto=4651; echo "<table>"; $query=$mysqli->query("select * from tbhistprod join tbprod on tbhistprod.codprod=tbprod.codprod where tbhistprod.lcto=$lcto"); while($row=$query->fetch_assoc()){ $codprod=$row['codprod'];$prod=$row['prod'];$cf=$row['cf']; echo " <tr><td>$codprod<td>$prod<td> <form> <input name=cf value='$cf' onchange=submit()> <input type=hidden name=codprod value=$codprod> </form>"; if($cf==""){echo "<tr><td><td><td><input autofocus>";exit;}} echo "</table>";
-
Como fazer o método GET funcionar no Laravel?
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Snapey do Laracasts encontrou centenas de erros no meu código: put quotes around your field name and value <form> <input name="up" value="{{$texto}}"> <input type="submit"> </form> if you want to get the value from the database $texto=teste::where('id',1)->first()->value('texto'); Class names (eg model name) should be capitalised, eg Teste If you are changing the data at the server, your method should be POST or PATCH and not GET -
Esse é o método GET no PHP: <?php $mysqli=new mysqli("localhost","root","","astudy"); if(isset($_GET['up'])){ $novotexto=$_GET['up']; $query=$mysqli->query("update teste set texto='$novotexto' where id=1");} $query=$mysqli->query("select texto from teste where id=1"); $texto=$query->fetch_assoc()['texto']; echo " <form> <input name=up value=$texto> <input type=submit> </form>"; Para fazer um código equivalente no Laravel, você precisa definir o Route, o Model, o Controller e o Blade, aqui só vou listar os dois últimos: teste.blade.php <form> <input name=up value={{$texto}}> <input type=submit> </form> testeController <?php namespace App\Http\Controllers; use App\Models\teste; use Illuminate\Http\Request; class testeController extends Controller { public function teste (Request $request){ if($request->input('up')){ $up=$request->input('up'); teste::where('id',1)->update(['texto'=>$up]);} $texto=teste::where('id',1)->value('texto'); return view('teste',['texto'=>$texto]); } } Os dois códigos funcionam somente se você colocar qualquer coisa na caixa do <input>, mas se você não colocar nada, só o código do PHP é que funciona. Para fazer o GET funcionar no Laravel eu fiz uma tremenda gambiarra e já fiz ele funcionar. O problema é o PHP, como ele consegue definir o valor da variável $_GET['up'], se o indexador só tem um lado da equação assim "up=". O PHP é fascinante!
-
Eu sempre tive problema na hora de usar a interpolação $ { } no JavaScript, eu não sei se isso é recurso nativo do Java, ou se faz parte do JQuery, ou se faz parte do Ajax, enfim, eu nunca consegui fazer funcionar. Assim, eu uso o seguinte método para usar o JavaScript: <script> objectDate=new Date() day=objectDate.getDate() if(day<10){day='0'+day} month=objectDate.getMonth()+1 if(month<10){month='0'+month} year=objectDate.getFullYear() TODAY=day+month+year filename="/home/imar/backup/imar_syscapturas"+TODAY+".backup" alert(filename) </script>
-
XML não é a minha praia, mas encontrei um XML nesse fórum com um monte de prefixos e o membro desse forum perguntou como alterá-lo. A solução que segue é baseado em improvisação, muitas orientações que eu vi no Google não deram certo, assim eu precisei fazer algumas marteladas. É possível que não funcione com você: O arquivo 1.xml é esse: <?xml version="1.0" encoding="UTF-8"?><pt:document xmlns:pt="http://schemas.brother.info/ptouch/2007/lbx/main" xmlns:style="http://schemas.brother.info/ptouch/2007/lbx/style" xmlns:text="http://schemas.brother.info/ptouch/2007/lbx/text" xmlns:draw="http://schemas.brother.info/ptouch/2007/lbx/draw" xmlns:image="http://schemas.brother.info/ptouch/2007/lbx/image" xmlns:barcode="http://schemas.brother.info/ptouch/2007/lbx/barcode" xmlns:database="http://schemas.brother.info/ptouch/2007/lbx/database" xmlns:table="http://schemas.brother.info/ptouch/2007/lbx/table" xmlns:cable="http://schemas.brother.info/ptouch/2007/lbx/cable" version="1.7" generator="P-touch Editor 5.4.007 Windows"><pt:body currentSheet="Folha 1" direction="LTR"><style:sheet name="Folha 1"><style:paper media="0" width="68pt" height="2834.6pt" marginLeft="2pt" marginTop="2.8pt" marginRight="2pt" marginBottom="2.8pt" orientation="portrait" autoLength="true" monochromeDisplay="true" printColorDisplay="false" printColorsID="0" paperColor="#FFFFFF" paperInk="#000000" split="1" format="261" backgroundTheme="0" printerID="28464" printerName="Brother PT-P900W"/><style:cutLine regularCut="0pt" freeCut=""/><style:backGround x="2pt" y="2.8pt" width="64pt" height="66.4pt" brushStyle="NULL" brushId="0" userPattern="NONE" userPatternId="0" color="#000000" printColorNumber="1" backColor="#FFFFFF" backPrintColorNumber="0"/><pt:objects><barcode:barcode><pt:objectStyle x="10pt" y="20.8pt" width="46.4pt" height="46.4pt" backColor="#FFFFFF" backPrintColorNumber="0" ropMode="COPYPEN" angle="0" anchor="TOPLEFT" flip="NONE"><pt:pen style="INSIDEFRAME" widthX="0.5pt" widthY="0.5pt" color="#000000" printColorNumber="1"/><pt:brush style="NULL" color="#000000" printColorNumber="1" id="0"/><pt:expanded objectName="barras" ID="0" lock="0" templateMergeTarget="LABELLIST" templateMergeType="NONE" templateMergeID="0" linkStatus="NONE" linkID="0"/></pt:objectStyle><barcode:barcodeStyle protocol="QRCODE" lengths="48" zeroFill="false" barWidth="1.2pt" barRatio="1:3" humanReadable="true" humanReadableAlignment="LEFT" checkDigit="false" autoLengths="true" margin="true" sameLengthBar="false" bearerBar="false"/><barcode:qrcodeStyle model="2" eccLevel="15%" cellSize="1.6pt" mbcs="auto" joint="1" version="auto"/><pt:data>qrcode de teste</pt:data></barcode:barcode><text:text><pt:objectStyle x="14pt" y="4.8pt" width="38.1pt" height="8.7pt" backColor="#FFFFFF" backPrintColorNumber="0" ropMode="COPYPEN" angle="0" anchor="TOPLEFT" flip="NONE"><pt:pen style="NULL" widthX="0.5pt" widthY="0.5pt" color="#000000" printColorNumber="1"/><pt:brush style="NULL" color="#000000" printColorNumber="1" id="0"/><pt:expanded objectName="modelo" ID="0" lock="0" templateMergeTarget="LABELLIST" templateMergeType="NONE" templateMergeID="0" linkStatus="NONE" linkID="0"/></pt:objectStyle><text:ptFontInfo><text:logFont name="Arial" width="3.4pt" italic="false" weight="400" charSet="0" pitchAndFamily="34"/><text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="7.8pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/></text:ptFontInfo><text:textControl control="FREE" clipFrame="false" aspectNormal="false" shrink="false" autoLF="false" avoidImage="false"/><text:textAlign horizontalAlignment="JUSTIFY" verticalAlignment="CENTER" inLineAlignment="BASELINE"/><text:textStyle vertical="false" nullBlock="false" charSpace="0" lineSpace="0" orgPoint="8pt" combinedChars="false"/><pt:data>ABCDEFG</pt:data><text:stringItem charLen="7"><text:ptFontInfo><text:logFont name="Arial" width="3.4pt" italic="false" weight="400" charSet="0" pitchAndFamily="34"/><text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="7.8pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/></text:ptFontInfo></text:stringItem></text:text><text:text><pt:objectStyle x="14pt" y="12.8pt" width="38.3pt" height="8.7pt" backColor="#FFFFFF" backPrintColorNumber="0" ropMode="COPYPEN" angle="0" anchor="TOPLEFT" flip="NONE"><pt:pen style="NULL" widthX="0.5pt" widthY="0.5pt" color="#000000" printColorNumber="1"/><pt:brush style="NULL" color="#000000" printColorNumber="1" id="0"/><pt:expanded objectName="serie" ID="0" lock="0" templateMergeTarget="LABELLIST" templateMergeType="NONE" templateMergeID="0" linkStatus="NONE" linkID="0"/></pt:objectStyle><text:ptFontInfo><text:logFont name="Arial" width="3.4pt" italic="false" weight="400" charSet="0" pitchAndFamily="34"/><text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="7.7pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/></text:ptFontInfo><text:textControl control="FREE" clipFrame="false" aspectNormal="false" shrink="false" autoLF="false" avoidImage="false"/><text:textAlign horizontalAlignment="JUSTIFY" verticalAlignment="CENTER" inLineAlignment="BASELINE"/><text:textStyle vertical="false" nullBlock="false" charSpace="0" lineSpace="0" orgPoint="8pt" combinedChars="false"/><pt:data>123456789</pt:data><text:stringItem charLen="9"><text:ptFontInfo><text:logFont name="Arial" width="3.4pt" italic="false" weight="400" charSet="0" pitchAndFamily="34"/><text:fontExt effect="NOEFFECT" underline="0" strikeout="0" size="7.7pt" orgSize="28.8pt" textColor="#000000" textPrintColorNumber="1"/></text:ptFontInfo></text:stringItem></text:text></pt:objects></style:sheet></pt:body></pt:document> A solução que improvisei é esse: <?php $dom=new DOMDocument(); $dom->load('1.xml'); $xpath=new DOMXPath($dom); $elements=$xpath->query("//pt:data"); foreach($elements as $element){echo $element->textContent."<br>";} foreach($elements as $element){$element->textContent="Frank";} foreach($elements as $element){echo $element->textContent."<br>";} // resultado: qrcode de teste ABCDEFG 123456789 Frank Frank Frank