Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.578
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Eu não sei como criar um <input> pelo Ajax, mas eu sei como criar um <input> pelo PHP. O código que segue é completamente inútil, mas estou contente por conseguir fazer funcionar. Se você manja de Java, gostaria que você traduzisse o código Ajax em "Java puro". _3.php <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function(){ $("li").click(function(){ alert("olá mundo"); $(this).html("olá mundo"); $("div#div1").html("<?php echo '<input>'; ?>"); }); }); </script> <?php echo "<div id='div1'></div>"; for ($i=1;$i<=10;$i++) { echo "<li>item $i </li>";} ?>
  2. Eu fiz um código em PHP que limpa a tela por parte, e com ele cheguei na conclusão de que o PHP monta o HTLM lá no servidor e o Java monta o HTML lá no navegador. _2.php <?php echo "<div id=div1>"; for ($i=1;$i<=10;$i++) { echo "$i elefantes atrapalham muita gente <br>";} echo "</div>"; echo "<div id=div2>"; for ($i=11;$i<=20;$i++) { echo "$i elefantes atrapalham muita gente<br>";} echo "</div>"; ?> <input type="submit" value="apagar div1" onclick='div1.innerHTML=""'> <input type="submit" value="apagar div2" onclick='div2.innerHTML=""'>
  3. Eu tenho uma lista de 600 produtos, mas ele não cabe na tela do celular. Eu fiz uma bela gambiarra para mostrar 10 itens de cada vez no celular, usando o método POST, mas o máximo que posso usar é 15 vezes. Depois disso, a listagem não avança. A minha dúvida é saber se a tolerância do PHP é de 15 gambiarras ou é a NGROK que impôs a restrição para quem usa o túnel da internet sem pagar nada. O código é esse daqui: _1.php <meta name="viewport" content="width=device-width, initial-scale=1"> <?php $criterio=$_POST['criterio'] ?? null; if (empty($criterio)) {$criterio="a";} $mysqli = new mysqli("localhost","root","hacker","diario"); $sql = "select * from tbprod where prod > '$criterio' order by prod"; $query=$mysqli->query($sql); echo "<table><tr><th>Código<th align='left'>Produto</tr>"; for ($i=1; $i<=10; $i++){ $row=$query->fetch_assoc(); echo "<tr><td align='right'>".$row['codprod']."<td>".$row['prod']."</tr>";} echo "<tr><td><form action='_1.php' method='post'><input type='hidden' name='criterio' value=".$row['prod'].">"; echo "<input type='submit' name='continua' value='continua'></tr>";
  4. Estou começando a usar o método POST, ao invés do PUT/GET que usei durante esse ano que comecei a estudar o PHP. O método POST é bem sofisticado, ele não deixa nenhum rastro na barra de endereço como o método PUT/GET faz. Eu também estou começando a estudar o Java Script, esse é bem difícil de usar. Tentei copiar os arquivos .CSS e .JS na pasta C:/wamp64/scripts, mas o meu método cientifico de tentativa e erro mostrou que ele não funciona lá. Então, mandei tudo para C:/wamp64/www/frank onde estão todos os meus arquivos .php, ficou uma tremenda baderna. E copiando vários códigos em várias páginas do Google, montei o meu arquivo _2.php: _2.php <link rel="stylesheet" href="jquery-ui.css"> <!--copiei de https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css --> <script src="jquery-1.12.4.js"></script> <!--copiei de https://code.jquery.com/jquery-1.12.4.js --> <script src="jquery-ui.js"></script> <!--copiei de https://code.jquery.com/ui/1.12.1/jquery-ui.js --> <script> <!-- função para aportuguesar datepicker --> $(function(){ $.datepicker.regional['pt-BR'] = { closeText: 'Fechar', prevText: '&#x3c;Anterior', nextText: 'Pr&oacute;ximo&#x3e;', currentText: 'Hoje', monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'], dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['pt-BR']); });</script> <script> $(function () {$("#datepicker").datepicker();});</script> <!-- função para chamar o calendário, quando mexerem no input com id datepicker --> <?php if (isset($_POST['datepicker'])){$dia=$_POST['datepicker'];} else {$dia = date('d/m/Y');} echo "<form method='POST'><input type='text' size='6' id='datepicker' name='datepicker' value=$dia onchange='submit()'></form>";
  5. Obrigado pelas intervenções, mas estou bem longe do protocolo da lógica e da segurança. Estou usando o famigerado método da tentativa e erro, eu sei que o meu de conhecimento é bem precário, mas pelo menos fico feliz quando as minhas gambiarras funcionam. Agora estou me adaptando ao método POST, mas na base da tentativa e erro, pois ainda não consigo enxergar quem é o servidor e quem é o clinte. Hoje vou publicar 'datepicker no PHP' nesse forum, e mostrar até onde eu consegui chegar nas minhas precárias leituras que o Google oferece.
  6. Boa tarde, Wash, Eu fiz o seguinte código que chamei de _1.php: <form action='<?php $_PHP_SELF ?>' method='POST'> Senha <input id='senha' name='senha' autocomplete='off'> <script>senha.focus();</script> </form> <?php if (isset($_POST['senha'])) {if ($_POST['senha']==1045) {echo "parabéns";}} ?> Ele funciona, o problema é que o input que pede a senha fica visível na tela. O jeito mais fácil de eliminar isso é chamando outra página. Gostaria de saber se existe algum macete para apagar o input e permanecer na mesma página _1.php, depois de entrar a senha correta. Obrigado pela dica do POST. ---------------------------------- Em tempo, consegui resolver o problema: _1.php <body> <form action='<?php $_PHP_SELF ?>' method='POST'> Senha <input id='senha' name='senha' autocomplete='off'> <script>senha.focus();</script> </form></body> <?php if (isset($_POST['senha'])) {if ($_POST['senha']==1045) {echo "<script>document.body.innerHTML='';</script> acesso liberado!";}} ?>
  7. Hoje estudei o meu index.php, e eu vi na barra de endereço index.php?senha=1045 depois que eu digitei a senha correta. Eu fiquei perplexo e fiquei me perguntando como esconder a última parte do endereço "senha=1045". Pesquisei o Google, encontrei um camuflador, mas achei aquilo muito complicado. Assim eu decidi fazer o meu próprio código. Ele é bem meia boca, mas pelo menos não aparece mais "senha=1045" na barra de endereço. index.php <meta name="viewport" content="width=device-width, initial-scale=1"> <?php $html="<table><form action='produto.php'><input type='submit' value='Produtos'></form>" ."<form action='fornecedores.php'><input type='submit' value='Fornecedores'></form>" ."<form action='pagar.php'><input type='submit' value='Pagar'></form>" ."<form action='orcamento.php'><input type='submit' value='Orçamento'></form>" ."<form action='entraproduto.php'><input type='submit' value='Entrar Produto'></form>" ."<form action='diario.php'><input type='submit' value='Diario'></form></table><br><br>"; if (substr($_SERVER["REQUEST_URI"],-9)<>"bem-vindo") { $senha=$_GET['senha'] ?? null; if (empty($senha)) {echo '<form>Senha: <input name="senha" id="senha" onchange="submit()" autocomplete="off"></form><script>senha.focus()</script>';} else {if ($senha==1045) {header('location:index.php?bem-vindo');} else { header('location:index.php');}}} else {echo $html;} ?>
  8. Hoje tomei coragem e fui pesquisar o que é JSON e o Googe indicou a seguinte página: O mínimo que você precisa saber sobre JSON para ser um bom programador! (https_dicasdeprogramacao.com.br) Lá encontrei o seguinte código: var texto = '{"atributo1": "valor 1", "atributo2": 23}'; var objeto = JSON.parse(texto); console.log(objeto); Criei o teste.php assim: <?php echo "<script>var texto='{'atributo1':'valor 1','atributo2':23}'; var objeto=JSON.parte(texto); console.log(objeto);</script>"; Como era de esperar, não apareceu nada na tela do navegador. Fiquei imaginando que o meu erro foi trocar as aspas duplas por aspas simples no código PHP. Mesmo assim, perguntei ao Google o que é console.log. E o Google informou que o console não tem nada a ver com o navegador, ele é uma janela exclusiva do desenvolvedor, e o desenvolvedor só chega nessa janela se usar o botão direito do mouse em quaquer parte do navegador e usar o comando inspecionar. Em seguida o navegador abre um novo painel, onde no topo tem a opção Bem-Vindo >>. Clicando no ícone >> é que apareceu a opção Console. O Console é cheio de mensagens. Para apagar todas as mensagens encontrei um ícone que parece com o "proibido estacionar". Mas ele continuou recebendo mensagens. Logo ao lado do "proibido estacionar" encontrei a opção de filtros. Pedi para só filtrar por informações. E assim eu comecei a testar o código exemplo. Enfim, eu aprendi que o Console é o melhor lugar para testar os códigos em Java. E também vi que não é possíve ficar trocando aspas duplas por simples nem no Java e nem no PHP, logo os dois códigos têm que ficar isolados, não dá para embrulhar um dentro do outro.
  9. Eu fiz uma pesquisa no Google para ver se é possível para o Android ver a pasta C:/wamp64/www/frank/ no notebook através do PHP e da internet. Eu consegui fazer o download. Para modificar o arquivo eu usei o bloco de notas nativo do Gereciador de Arquivo + instalado no Android. Também consegui montar o código para o upload, ou seja, fiz um código para o Android gravar no notebook. Tudo foi copiado do Google, eu fiz algumas modificações. É possível que o código não dê certo para você, principalmente se tiver configurações mais seguras no Apache. Mas se funcionar, essa é uma boa hora para você se preocupar com segurança. No meu caso, estou só aprendendo a usar o PHP, agora posso usar tanto o Windows bem como o Android. No caso do Windows estou usando o Notepad++. No caso do Android ainda não achei nenhum bom editor de PHP. download.php <meta name="viewport" content="width=device-width, initial-scale=1"> <?php $path = "c:/wamp64/www/frank/"; $arquivo = $_GET['arquivo'] ?? null; if (empty($arquivo)) {;} else { $file = $path.$arquivo;; header("Expires: 0"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); $ext = pathinfo($file, PATHINFO_EXTENSION); $basename = pathinfo($file, PATHINFO_BASENAME); header("Content-type: application/".$ext); header('Content-length: '.filesize($file)); header("Content-Disposition: attachment; filename=\"$basename\""); ob_clean(); flush(); readfile($file); exit;} $diretorio = dir($path); echo "Lista de arquivos do diretório '<strong>".$path."</strong>':<br/>"; while($arquivo = $diretorio -> read()){echo "<a href='download.php?arquivo=$arquivo'>".$arquivo."</a><br/>";} $diretorio -> close(); ?> upload.php <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- O tipo de encoding de dados, enctype, DEVE ser especificado abaixo --> <form enctype="multipart/form-data" action="upload.php" method="POST"> <!-- MAX_FILE_SIZE deve preceder o campo input --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- O Nome do elemento input determina o nome da array $_FILES --> Enviar esse arquivo: <input name="userfile" type="file" /> <input type="submit" value="Enviar arquivo" /> </form> <?php if (isset($_FILES['userfile']['name'])) { $uploaddir = 'c:/wamp64/www/frank/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {echo "Arquivo válido e enviado com sucesso.\n";} else {echo "Possível ataque de upload de arquivo!\n";} echo 'Aqui está mais informações de debug:'; print_r($_FILES); print "</pre>"; } ?>
  10. Eu tenho um código PHP que esbarrou em três <input>. Ele funciona bem se eu trabalhar com a tecla [TAB], o problema é que eu sempre esbarro na tecla [ENTER] e aí o PHP solta um monte de mensagens de erro. A minha saída foi estudar o JavaScript. O Google tem dezenas de exemplos, tentei adaptar aqui no notebook, mas nada deu certo. JavaScript é muito, mas muito difícil. Na base da tentativa e erro, cheguei nesse código HTML: <body onLoad="document.f1.n1.focus()"> <form name="f1" action="teste.php"> <input name="n1" onchange="document.f1.n2.focus();"> <input name="n2" onchange="document.f1.n3.focus();"> <input name="n3" onchange="document.f1.submit();"> </form> </body> Encontrei códigos com o marcador <script>, mas não consegui fazer funcionar.
  11. Isso requer um bom conhecimento de Java Script, CSS e HTML, o que não é o meu caso. Por enquanto, só sei fazer gambiarra com PHP, e o meu código ficaria assim, supondo que todas as informações estão no MySQL, na tbprod que tem os campos prod, categoria e subcategoria: subgrupo.php <?php $mysqli=new mysqli("servidor","usuario","senha","bancodedados"); $grupo = $_GET['grupo'] ?? null; if (empty($grupo)) { echo "Selecione o subgrupo<br><br>"; $query = $mysqli->query("select categoria as grupo from tbprod group by categoria order by grupo"); while ($row = $query->fetch_assoc()) {$grupo = $row['grupo']; echo "<a href=subgrupo.php?grupo=$grupo>$grupo</a><br>";}} else {$subgrupo = $_GET['subgrupo'] ?? null; if (empty($subgrupo)) { echo "Categoria $grupo<br><br>"; echo "Selecione o subgrupo<br>"; $sql="select subcategoria as subgrupo from tbprod where categoria='$grupo' group by subcategoria order by subgrupo"; $query = $mysqli->query($sql); while ($row = $query->fetch_assoc()) {$subgrupo = $row['subgrupo']; echo "<a href=subgrupo.php?grupo=$grupo&subgrupo=$subgrupo>$subgrupo</a><br>";} echo "<br><form action=subgrupo.php'><input type='submit' value='voltar'>";} else {echo "Categoria $grupo - Subcategoria $subgrupo<br><br>"; $sql="select * from tbprod where subcategoria = '$subgrupo' order by prod"; $query = $mysqli->query($sql); $row = $query->fetch_assoc(); while ($row = $query->fetch_assoc()) {echo $row['prod']."<br>";} echo "<br><form action='subgrupo.php'><input type='hidden' name='grupo' value=$grupo><input type='submit' value='voltar'></form>";}}
  12. Hoje eu aprendi um pouco de CSS com a ajuda do Fórum. No PHP, eu precisava apresentar seis células, todas alinhadas pela direita, menos a segunda. A gambiarra que eu fiz foi essa: <style>table.td {text-align='right';} </style> <?php ... echo "<table class='td'>"; echo "<tr><td>$primeiro</td><td align='left'>$segundo</td><td>$terceiro</td><td>$quarto</td><td>$quinto</td><td>$sexto</td></tr>"; ... ?>
  13. raio.php <?php $raio = $GET_['raio'] ?? null; if (empty($raio)) {;} else { $mysqli=new mysqli("servidor","usuario","senha","bancodedados"); $query = $mysqli->query("select taxa from tbraio where raio=$raio"); $row = $query->fetch_assoc(); $taxa = $row['taxa']; echo "a taxa é de $taxa para um raio de $raio km";} echo "<form action='raio.php'>"; echo "Qual a distância em km daqui até o cliente? <input name='raio'>"; echo "</form>"; ** eu não testei, espero que funcione. Esse código é muito ruim. Como é que o safado do atendente vai saber quantos quilometros tem da Rua Direita até a Rua Esquerda?
  14. Nossa, que vergonha. Tudo não passou de erro de digitação, e o pior é que estou usando uma técnica que foi condenada pelo comitê do HTML. Agradeço pela aula de CSS. Eu presumo que só é possível definir uma tabela por HTML. Ou é possível criar mais de uma tabela para a mesma HTML?
  15. Eu sou péssimo em HTML. O marcador <td align='right'> funciona que é uma maravilha, o problema é quando ele encontra o resultado de uma equação no PHP, ele manda para o lado left. Não sei como resolver o problema. <?php $qt = 10; echo "<table><tr><th>Quantidade</th><th>X</th><th>Quantidade</th><th>=</th><th>Total</th></tr>"; echo "<tr><td align='right'>$qt</td><td></td><td align='right'>$qt</td><td></td><td align='riqht'>".$qt*$qt."</td></tr>"; echo "<tr><td align='right'>$qt</td><td></td><td align='right'>$qt</td><td></td><td align='riqht'>".strval($qt*$qt)."</td></tr></table>";
  16. Isso é coisa de profissional! O problema é que eu não entendo nada de HTML e CSS, você pode notar que os meus scripts são pobres e bem rudimentares. A minha preocupação é fazer com que tudo caiba dentro do celular, de preferência no modo retrato. Enfim, estou fazendo só gambiarra com o PHP. Por exemplo, eu chamei index.html de _3.php, app.js de _2.php e api de _1.php. É óbvio que eu precisei fazer um monte de martelada. No _3.php mudei o <form action='_1.php' method='post'> bem como <script src='_2.php'>. Certamente, isso é uma tremenda violação da boa prática de programação, claro que a principal vítima sou eu mesmo, mas como o computador aceita qualquer coisa, eu vou dando asas para as minhas fantasias. Gostei do CSS da formatação da digitação em tempo real, ele é muito engenhoso. Também gostei do api (eu chamei de _1.php), não sabia que o php podia chamar o json com o verbo die e apresentar a resposta na mesma tela do front-end. Isso abre um enorme universo de possibilidades, uma vez que é impossível fazer paineis na tela só com o PHP. Enfim, quero agradecer pelos códigos, certamente isso me incentiva a estudar o HTML e o CSS.
  17. <?php // o nome desse scrypt é padronizadescricao.php // essa rotina transforma descrição do tipo "CABO DE ENXADA" em "Cabo de Enxada" echo "<form action='padronizadescricao.php'>"; echo "<input name='texto'>"; echo "</form>"; $texto = $_GET['texto'] ?? null; if (empty($texto)) {;} else { echo "$texto<br>"; $texto = strtolower($texto); $vetor = explode(" ",$texto); echo $texto; echo "<pre>"; print_r($vetor); echo "</pre>"; foreach ($vetor as $key => $subtexto) { if (in_array($subtexto,["de","da","do"])) {;} else { $vetor[$key] = ucfirst($subtexto); echo "$subtexto => $vetor[$key]<br>"; }} $texto = implode(" ",$vetor); echo "<br>-----------<br>"; echo $texto;}
  18. A sua listagem está incompleta ou tem uma sintaxe que eu ainda não conheço. A seguir uma lista de como obter os dez primeiros itens da tbprod. <?php $mysqli = new mysqli("localhost","root","hacker","diario"); $produtos = $mysqli->query("select * from tbprod where codprod < 10"); while ($carpro = $produtos->fetch_assoc()) { echo $carpro['codprod']." - ".$carpro['prod']."<br>";} Claro que você não quer ver os dez primeiros itens do tbprod. Estou presumindo que você tem uma nota fiscal e você quer armazenar no seu banco de dados, só não sei como você conseguiu botar os dados da nota fiscal num vetor. Supondo que você conseguiu o CFOP, o codforn, NF, codprodforn, qt, desc, unitario, total de uma tbNF, eu faria assim: <?php $mysqli = new mysqli("localhost","root","hacker","diario"); $itemNF = $mysqli->query("select * from tbNF") While ($item = $itemNF->fetch_assoc()) { $sql = "insert into tbhistprod (CFOP,codforn,NF,codprodforn, qt, desc, unitarioi, total) values ("; $sql .= ".$item['CFOP'], $item['codforn'], $item['NF'], $item['codprodforn'],$item['qt'],$item['desc'],"; $sql .= "$item['unitario'], $item['total']"; $inserir = $mysqli->query($sql); } Não sei se esse código funciona, mas é mais ou menos por aí que faria a inclusão de novos itens. No caso de você não ter uma tbNF e quer colocar a NF na unha, o jeito é ter duas páginas PHP: página1.php <?php echo <form action='pagina2.php'> echo "<input name='CFOP'> etc... etc... echo "<input name='total'> echo "<input type='submit' value='Confirmar'> echo "</form> página2.php <?php $CFOP = $_GET['CFOP']; etc... etc... $total = $_GET['total']; $mysqli = new $mysqli("localhost","root","hacker","diario"); $itemNF = $mysqli->query("Insert into tbhistprod (CFOP, etc, etc) values ($CFOP, etc etc)"; header("location:pagina1.php"); Nesse caso, cada item da NF terá que entrar um de cada vez.
  19. Supondo que o código está numa página php chamada _teste.php, eu faria assim: <form action="_teste.php"> <input type="text" name="nome"><br><br> <select name="sexo" multiple> <option value="feminino">feminino</option> <option value="masculino">masculino</option> <option value="na">na</option> </select> <br><br><input type="submit" value="Confirmar"> </form> <?php $nome=$_GET['nome'] ?? null; $sexo=$_GET['sexo'] ?? null; If (empty($nome)) {;} else { echo "$nome, sexo: $sexo";} ?> Ou seja, os marcadores <input> e <select> mandam para a página _teste.php os valores introduzidos pelo usuário, mas eles precisam ser delimitados pelo marcador <form>. Na página _teste.php, o PHP pega os valores através do comando $_GET. Espero que isso ajude.
  20. Eu usei o seu código e chamei de _teste.php, fiz pequenas modificações, e ele ficou assim <?php echo "<form action='_teste.php'>"; echo "<input type='time' name='hour'><br><br>"; echo "<input type='number' name='mult'>"; echo "<input type='submit' value='Confirmar'>"; echo "</form>"; $hour = $_GET['hour'] ?? null; $mult = $_GET['mult'] ?? null; if (empty($hour)) {;} else { $minutodecimal = date('i',strtotime($hour))/60 * $mult; $hours = date('H',strtotime($hour)) * $mult; $soma = $hours + $minutodecimal; $minutopadrao = round(($soma - intval($soma))*60,0); echo "Total de horas $hour x $mult = ".intval($soma).":".sprintf('%02s',$minutopadrao); }
  21. Essa não é uma tarefa fácil, mas fiquei curioso com o comando explode, não sei como ele funciona. Assim, eu montei o seguinte código <meta name="viewport" content="width=device-width, initial-scale=1"> <?php //$produtos = explode(";", $prod['descricaoProduto']); //foreach ($produtos as $key => $value) {$artigos = find_all('cadastroartigos', $key); // foreach ($artigos as $akey => $avalue) { // if ($avalue['descricaoProduto'] == $key) { // $avalue['precoCusto']= $prod['preço']; // update('cadastroartigos',$key, $cavalue); $mysqli=new mysqli("localhost","root","hacker","diario"); $query = $mysqli->query("select * from tbprod"); $row = $query->fetch_assoc(); $produtos=explode(";", $row['prod']); echo "<pre>"; print_r($produtos); echo "</pre>"; ?> mas o máximo que eu consegui fazer é criar o vetor $produtos com apenas o primeiro registro da tbprod. Ou seja, a primeira coisa a fazer é esquecer o comando explode, ele não serve para nada no contexto. O certo é pegar uma caneta e um papel e montar o esquema na mão, assim: 1. Pegar a tbcompra 2. Pegar a tbprod 3. Mostrar na tela do PHP a tbcompra junto com o preço da tbprod, e botar o preço em vermelho se for diferente 4. Ao invés de atualização automática, o certo é deixar para o usuário decidir se vai atualizar o preço (por exemplo, a Petrobras baixou o preço da gasolina, não há porque você baixar também, uma vez que o estoque anterior ainda está lá no tanque). 5. Estudar o PHP (ele é apenas um montador de HTML) e ver como é possível o usuário escolher o código do produto e atualizar o preço assim que o usuário selecionar o código.
  22. Até onde eu sei o include só preserva as variáveis que foram utilizadas no script anterior para o atual. Por exemplo: pagina1.php $mysqli=new mysqli("localhost","root","hacker","diario"); $query = $mysqli->query("select * from tbsupervariavel"); $linha = $query->fetch_assoc(); pagina2.php include 'pagina1.php' $mes=$linha['mesapurado']; $ano=$linha['anoapurado']; Nesse caso o vetor $linha foi criado na primeira página, mas está sendo usado na segunda. Não sei se é possível trazer a função de um MySQL dentro do PHP, mas já ouvi falar de incluir procedure do MySQL no PHP nesse link: https://smallbusiness.chron.com/call-stored-procedure-php-mysql-28881.html
  23. Eu trabalho com o MySQL, mas ainda não montei nenhuma procedure, o máximo que eu fiz foi criar um view para não ter o trabalho de formatar valores, mas depois eu vi que é mais negócio trabalhar com uma function do php. O meu trabalho com o MySQL dentro do PHP é mais ou menos assim: $mysqli=new mysqli("localhost","root","hacker","diario"); $query = $mysqli->query("select * from tbsupervariavel"); $linha = $query->fetch_assoc(); $mes=$linha['mesapurado']; $ano=$linha['anoapurado']; Resumindo, eu conecto, escolho uma tabela e eu vou trabalhando com o primeiro registro que aparecer na consulta. Esse é um exemplo bem simples. O chato são aquele monte de tabelas que são conectados entre si, nesse caso eu peço ajuda para o MS Access para escrever em SQL o que vem depois da palavra select para usar no PHP. Ou seja, o PHP é o meu ambiente para procedure. Se isso não ajudou você, encontrei a seguinte página que fala sobre o assunto (em MySQL): https://smallbusiness.chron.com/call-stored-procedure-php-mysql-28881.html
  24. Boa noite, wash, Usei o comando, <meta name="viewport" content="width=device-width, initial-scale=1"> <?php echo "<pre>"; print_r($_SERVER); echo "</pre>"; ?> Esses são os vetores que achei mais interessante [HTTP_SEC_CH_UA_MOBILE] => ?0 (não tenho isso no celular) [SERVER_ADDR] => ::1 (é igual nos dois) [SERVER_NAME] => localhost (esse é o nome do servidor no notebook, já no celular aparece o endereço no formato ipv6 fornecido pelo ngrok. Eu não vejo como diferenciar o notebook do celular pelo vetor $_SERVER, já o mobile_detect já me ajuda a identificar o notebook e o celular. O mobile_detect também é capaz de identificar o modelo do celular, isso ajuda se houver celulares de modelos diferentes.
  25. A minha primeira tentativa falhou, mas hoje eu consegui criar um novo usuário com a ajuda do editor SQL do Workbench, assim create user 'note'@'localhost'; grant all privileges on diario . * to 'note'@'localhost'; flush privileges Tudo indica que a minha primeira tentativa não deu certo porque eu esqueci de colocar ponto e vírgula, mesmo nos comandos que eu já havia executado. Mas ainda não sei como usar a nova conta para entrar no MySQL Workbench. Para saber se a nova conta funciona, eu usei o PHP. <?php $mysqli = new mysqli("localhost","note","","diario"); $query = $mysqli->query("select * from tbdiario"); $teste = $query->fetch_assoc(); echo $teste['hist']; ?> E o teste funcionou usando o notebook bem como o celular na rede 4G. O meu desafio é saber se o PHP é capaz de saber quem é o notebook (usuário 'root') e quem é o celular (usuário 'note'), e assim criar novos registros na tabela de pedidos com os campos usuário, número do pedido, total do pedido e data do pedido, sem eu precisar usar a rotina do login. Note que não há nenhuma senha nessa história, a minha prioridade é fazer os códigos funcionarem. O problema da segurança vou deixar para depois. ------------------------- Achei a solução em Mobile Detect - lightweight PHP class for detecting mobile devices (including tablets), ele resolve o meu problema. Ele sabe quem é o computador e quem é o phone. No phone, ele conseguiu identificar o aparelho. Se acrescentar mais um computador ou um o mesmo tipo de aparelho, aí a única solução é usar a rotina do login.
×
×
  • Criar Novo...