Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.576
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. 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>";
  2. 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>";
  3. 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.
  4. 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!";}} ?>
  5. 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;} ?>
  6. 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.
  7. 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>"; } ?>
  8. 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.
  9. 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>";}}
  10. 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>"; ... ?>
  11. 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?
  12. 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?
  13. 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>";
  14. 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.
  15. <?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;}
  16. 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.
  17. 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.
  18. 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); }
  19. 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.
  20. 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
  21. 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
  22. 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.
  23. 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.
  24. Recentemente eu criei um programa chamado orçamento com o PHP e o MySQL. O programa é uma simples tabuada, onde z = x * y. Ou seja, a minha tabela de dados é só assim: dados [ produto, preço ] Ele funciona se eu usar o celular OU o notebook, mas não os dois ao mesmo tempo. Para evitar o conflito entre o celular e o notebook, estou pensando em trabalhar com conta de usuário, um para o celular e outro para o notebook. Eu nunca mexi com conta de usuário. A minha dúvida é quanto a base dados, eu devo modificar a tabela de dados assim [usuário, produto, preço] ou não devo mexer em nada, e deixo banco de dados se virar sozinho?
  25. Eu faria assim: pegaremail.php <? echo "<form action='pegarprefixo.php'>Digite email<input name='email'></form>"; pegarprefixo.php <? $email = $_GET['email'] ?? null; if (empty($email) {echo "você não digitou nada!";} else { $pos=strripos("@",$email); if ($pos==0) {echo "$email - email inválido!";} else {$prefixo = substr($email, 1, $pos-1); echo "Olá Sr $prefixo!";}}
×
×
  • Criar Novo...