Frank K Hosaka
Membros-
Total de itens
1.678 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
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
-
Eu acho que consegui: <?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 O problema é que eu devo ter alterado coisa que não devia como o "qrcode de teste", mas acho que o mais difícil eu consegui.
-
Aplicação PHP MVC/Composer Apache/Nginx
pergunta respondeu ao Thyago Dantas de Frank K Hosaka em Tutoriais & Dicas - PHP
Eu não uso o servidor VPS, por enquanto. Mesmo assim, eu fiz algumas modificações: index.php <?php require 'Painel/Application.php'; // aqui session_start(); date_default_timezone_set('America/Recife'); require('vendor/autoload.php'); define('INCLUDE_PATH_STATIC', 'http://localhost/Painel/Views/Pages/'); define('INCLUDE_PATH', 'http://localhost/'); $app = new Application(); // aqui echo $app->teste(); // aqui $app->run(); ?> ---------------------- Application.php <?php /* namespace Painel; <--- Aqui */ class Application { private $controller; private function setApp() { $loadName = 'Painel\Controllers\\'; $url = explode('/', @$_GET['url']); if ($url[0] == '') {$loadName .= 'Home';} else { $loadName .= ucfirst(strtolower($url[0]));} $loadName .= 'Controller'; if (file_exists($loadName . '.php')) { $this->controller = new $loadName();} else { include('Views/Pages/404.php'); die();} } public function teste(){return "olá mundo!";} // aqui public function run(){ $this->setApp(); $this->controller->index();} } ?> -
Ao invés de usar o <form> para consultar o banco de dados, eu usei um código JavaScript, eu tirei o <form> do código e, por tabela, o <button> deixou de funcionar porque ele não tinha mais nenhum <form> para submeter. Para dar vida ao <button>, usei esse código: <button onclick="location.replace('entrada.php')">Cancelar</button> Só que na hora de testar, ele não funcionou. Pensei no Google, e encontrei esse tópico: html - JavaScript button onclick not working - Stack Overflow Lá tem várias soluções, uma mais estranha que a outra. Tentei adaptar algumas, mas não consegui ressuscitar o <botton>. Até que por acidente eu atualizei o navegador, e assim o <button> conseguiu executar a tarefa. O meu erro é acreditar que as alterações no editor de texto VS Code fossem automáticas. E são. Mas ele não atualiza o que está lá no navegador. O navegador precisa ser atualizado para receber a nova versão do código. Isso me lembra o professor de Informática, ele disse que o maior problema de todo o programa é aquela pecinha que fica na frente do monitor.
-
O meu conhecimento em JavaScript é precário, eu sei que é possível o JS consultar o MySQL diretamente, bem como existem facilitadores para usar o JS como o Ajax e o JQuery, mas eu não uso nada disso. Geralmente eu uso o <form> para evitar de usar o JS. Mas nem sempre o <form> é conveniente, ele simplesmente apaga tudo o que tem na tela do navegador para dar lugar a uma nova página solicitada. No meu caso, eu só precisava saber se o colaborador está autorizado a passar pela portaria. Como eu não sei usar o Node.js, a minha única saída é usar um código PHP, onde eu sei como consultar o MySQL. O código JS que eu uso é esse daqui: <script> async function pesquisar(value){ form = new FormData(); form.append("matricula",value) response = await fetch('cadastro_pesquisa.php',{method:"POST",body:form}) body=await response.json() funcao.value=body.funcao nome.value=body.nome identidade.value=body.identidade placa.value=body.placa veiculo.value=body.veiculo empresa.value=body.empresa situacao=body.situacao if(situacao==2){ divPainel.innerHTML="Colaborador não está autorizado a entrar"}} </script> Nesse caso, o JS vai pedir para o cadastro_pesquisa.php ver no MySQL a autorização. O código cadastro_pesquisa.php só vai ser executado no servidor, e ele é assim: <?php $matricula=$_POST['matricula']; require 'config.php'; $sql = "select * from colaborador where matricula = :matricula"; $stm = $pdo->prepare( $sql ); $stm->execute([':matricula'=>$matricula]); $colaborador=$stm->fetchObject(); if($colaborador){ $arr['funcao'] = $colaborador->funcao; $arr['identidade'] = $colaborador->identidade; $arr['situacao'] = $colaborador->situacao; $arr['nome'] = $colaborador->nome; $arr['placa'] = $colaborador->placa; $arr['veiculo'] = $colaborador->veiculo; $arr['empresa'] = $colaborador->empresa;} else { $arr['matricula'] = 'Não encontrada.';} echo json_encode( $arr );
-
como baixar dados do banco em formato utf8
pergunta respondeu ao adrsublimacao de Frank K Hosaka em Tutoriais & Dicas - PHP
Espero que este artigo ajude você: Como corrigir acentuação no PHP MySQL - Ajuda Locaweb -
Usei o editor de texto e pedi para ele eliminar todos os prefixos text: , pt: , barcode: , style:, e o novo arquivo ficou assim: <?xml version="1.0" encoding="UTF-8"?> <body currentSheet="Folha 1" direction="LTR"> <sheet name="Folha 1"> <objects> <barcode> <data>text1</data> </barcode> <text> <textControl control="FREE" clipFrame="false" aspectNormal="false" shrink="false" autoLF="false" avoidImage="false"/> <textAlign horizontalAlignment="JUSTIFY" verticalAlignment="CENTER" inLineAlignment="BASELINE"/> <textStyle vertical="false" nullBlock="false" charSpace="0" lineSpace="0" orgPoint="6pt" combinedChars="false"/> <data>text2</data> <stringItem charLen="1"></stringItem> </text> <text><data>text3</data></text> </objects></sheet> </body> Eu acredito que depois dessa modificação, você consegue trabalhar com as ferramentas do PHP voltado para o XML. Ou você precisa definir os prefixos assim: XML Namespaces (w3schools.com)