Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.581
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. A sintaxe do stored procedure do MySQL é assim: CREATE DEFINER=`root`@`localhost` PROCEDURE `MyProc`() BEGIN declare i int; set i = 1; loop_label: loop if i > 10 then leave loop_label; end if; insert into tb_lancamentos (conta) values ("caixa"); set i = i+1; end loop; END Se você comparar com o seu código, você notará que eu usei uma string "caixa" ao invés de uma variável, mas o resultado é o mesmo, ou seja, o procedimento vai registrar dez vezes a mesma conta. Aqui o problema é de lógica: ninguém registra dez vezes o mesmo lançamento. Mas se a ideia é fazer vários lançamentos diferentes, o melhor é usar o PHP, assim: <?php $lançamentos=["caixa","banco","despesa","receita"]; $mysqli=new mysqli("localhost","root","","astudy"); foreach($lançamentos as $lançamento){ $query=$mysqli->query("insert into tb_lancamentos (conta) values ('$lançamento')");} echo ($query) ? "ok" : $mysqli->error; Por aqui você pode ver que é bem mais fácil usar a gramática do PHP do que a gramática do stored procedures do MySQL.
  2. Estamos em 2023, acredito que você já descobriu que os arquivos cadastro.html e pessoa_form.php devem estar no mesmo diretório. Mesmo assim, a sua lista está repleto de curiosidades, apesar de eu não ter a lista da classe que define os métodos que manipulam o banco de dados, o arquivo lista_combo_cidades.php e o form.css, eu consegui montar um pequeno código chamado astudy.php que pega os dois arquivos ao mesmo tempo. <form enctype="multipart/form-data" method="post" action="?action=save"> <label>Código</label> <input name="id" readonly="1" type="text" value='{id}'> <label>Nome</label> <input name="nome" value="{nome}"> <input type="submit"> </form> <?php if(!isset($_POST['id'])){exit;} $pessoa = $_POST; $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("UPDATE pessoa SET nome = '{$pessoa['nome']}' WHERE id = '{$pessoa['id']}'"); echo ($query) ? 'Registro salvo com sucesso' : $mysqli->error; echo "<p>UPDATE pessoa SET nome = '{$pessoa['nome']}' WHERE id = '{$pessoa['id']}'"; A lista é bem pequena, mas está repleto de bobagens. Primeiro: a gente usa o <form enctype> somente para trabalhar com arquivos. Segundo: não há nenhum motivo para definir "save" na ação do <form>. Terceiro: se o objetivo do <form> é cadastrar uma nova pessoa, o campo id não deveria estar nesse formulário. Quarto, se for definir o id da pessoa manualmente o <input> deveria estar desbloqueado e não travado em readonly. Apesar de tanto absurdo, eu testei o programa e obtive sucesso! Mas não salvou coisa alguma. Para dar certo, eu defini a chave primária da tabela pessoa como varchar(45). Mas, ele não gravou nada, pois o comando update é para atualizar uma pessoa com o id='{id}'. Quando a gente salva um novo registro, a gente usa o comando insert into e não update. Tudo parece perda de tempo, mas eu gostei do comando echo ($query) ? 'Registro salvo com sucesso' : $mysqli->error; Esse comando funciona!
  3. Faz três anos que eu tento resolver o seu problema, mas só hoje é que consegui resolver. Como o PHP não aceita a sintaxe $teste={"key":"value"}, então eu converti em string, assim: $teste='{"key":"value"}'. Para converter uma string em json, o PHP usa a função $json=json_decode($teste), mas no seu caso, o PHP retornou null. Fiquei três anos sem dormir, até que eu finalmente decidi usar o famoso método científico da tentativa e erro. Eu consegui converter em json o seguinte: {"nome":"arroz"}, depois eu consegui converter em json {"nome":arroz,"estoque":0}, mas eu não consegui converter {"categ":097}. Para consertar, eu fiz assim {"categ":"097"}. Eu fiz o mesmo procedimento no {"subcategor":"09703"}. Outra coisa que o PHP não aceita é converter [{ } { }], eu tive que corrigir para [{ },{ }]. Depois de reeditar os seus dados, o PHP ficou uma maravilha. <?php $teste='{"produtos":[{"codbar":"123456789","nome":"FEIJÃO", "tipo":"UN","prcprd": 4.00,"prcprm": 3.50, "estoque": 0,"categ":"097" ,"subcateg":"09703"}, {"codbar":"987654321","nome":"ARROZ","tipo":"UN", "prcprd": 5.00,"prcprm": 4.50,"estoque": 0, "categ":"097","subcateg":"09703"}],"atual":1,"totalPages":20}'; $json=json_decode($teste); $produtos=$json->produtos; echo "<table>"; echo "<tr><td>página atual: ".$json->atual; foreach($produtos as $produto){ echo "<tr><td>".$produto->nome; echo "<td>Estoque: ".$produto->estoque;} echo "</table>"; No meu caso, valeu a pena resolver. Hoje eu aprendi que existe uma brutal diferença entre escrever echo "página atual"; e echo "<td>página atual"; a diferença é exatamente um espaço! Outra coisa importante: se você usar o comando $json=json_decode($teste,true) você estará trabalhando com um array, e aí o meu código não é mais válido. Ao invés de usar $json->produtos, você terá que usar a notação $json['produtos'].
  4. Eu tenho uma impressora da HP do modelo Never Stop, e já faz três anos que não mexo nele e eu comprei o toner apenas duas vezes. Mas ontem eu estava no fórum Script Brasil e lá em 2021 encontrei um rapaz perguntando como imprimir o cabeçalho de um documento na impressora pelo PHP. Eu uso o PHP porque não sei mexer no MySQL, mas nunca pensei em usar o PHP para conectar numa impressora. Pelo Google, encontrei várias dicas de como conectar o PHP na impressora, eu só testei o comando <?php $ipAddress = "192.168.0.18"; $toPut = "I can print this no problem \r\n\r\n This line prints too!"; $f = fsockopen($ipAddress,9100, $errno, $errstr); if (!$f) { echo "Connection To Server Failed ($errstr)"; } else { $x = 0; while($x < 3){ if(fwrite($f, $toPut)){echo $x.'<br>';$x++; }} fclose($f); } e o máximo que eu consegui foi ativar a impressora. As outras dicas eu não testei porque envolvem o ambiente do sistema operacional, mas a melhor dica que eu vi foi jogar o PHP dentro do navegador e usar os comandos de impressão do navegador. Apesar de eu não ter conseguido conectar o PHP na impressora, eu gostei da solução do fsockopen. Ele usa o endereço local da impressora na rede sem fio. Já o número 9100 eu não sei o que é, tentei mexer nele, mas aí eu só recebi um monte de mensagem de erro, afirmando que a impressora se recusa a aceitar o comando. Basicamente a história da minha vida foi tentar conectar o computador na impressora. Aqui eu preciso agradecer ao Google, ele me ajudou muito. Rezei muito para conectar o Windows na impressora com a ajuda do Visual Basic. Mas essa época já foi, e eu fiquei muito feliz quando consegui conectar o Windows com uma impressora térmica. E para a minha alegria, eu não lembro mais nem como fazer a conexão, aquilo foi um pesadelo que custou um monte de noites mal dormidas. Essa noite eu dormi tranquilo, mesmo que não tenha conseguido conectar o PHP na impressora. O meu objetivo é outro. Nesse ano, pretendo aprender a proteger o banco de dados criando conta e senha, o Google já tem um monte de tutorial pronto para copiar e colar, o desafio é preparar o MySQL para trabalhar no ambiente multiusuário. Enfim, a vida é incrivelmente fácil, o problema é como conviver com os outros, e a única maneira que eu encontrei para conseguir alguma coisa nessa vida é compartilhando as minhas soluções.
  5. <?php // tentei usar a impressora com o comando // fsockopen("192.168.0.18",9100) mas só consegui fazer // a impressora piscar $date="2021-03-01"; $dateb="2021-03-25"; $start = $days = strtotime($date); $end = strtotime($dateb); $linha=0; echo "<table>"; while($days <= $end){ if($linha==8){echo "<tr>"; $linha=0;} echo "<td><b>".date('d/m/Y', $days)."</b></td> "; $days = strtotime("+1 days", $days); $linha++;} echo "</table>";
  6. O problema do modal é que ele precisa do JavaScript para enxergar o registro que o usuário escolheu. Nesse exemplo, eu comecei o trabalho no tutorial do bootstrap 5 da w3schools, e criei a função ver( ) no Javascript. <!DOCTYPE html> <html lang="en"> <title>Visualizar registro com Bootstrap 5.3</title> <!--https://www.w3schools.com/bootstrap5/bootstrap_modal.php--> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> <script> function ver(jrow){mensagem.innerHTML=JSON.stringify(jrow)} </script> <body style="width:40%;margin:0 auto"> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbreceita"); ?> <table class="table table-bordered tabela"> <tr><th>Data<th>Receita<th>Valor<th> <?php while($row=$query->fetch_assoc()){ $jrow=json_encode($row)?> <tr><td nowrap><?=$row['data']?><td><?=$row['nome']?><td><?=$row['valor']?> <td><button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalSheet" onclick=ver(<?=$jrow?>)> visualizar </button> <?php } ?> </table> <div class="modal modal-sheet bg-secondary py-5" id="modalSheet"> <div class="modal-dialog" role="alert"> <div class="modal-content rounded-4"> <div class="modal-header border-bottom-0"> <h1 class="modal-title fs-5">Visualizando registro escolhido</h1> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body py-0"> <p id=mensagem></p> </div> </div> </div> </div>
  7. Estava pensado em trabalhar com duas <divs>, a de trás mostra a figura e a da frente mostra o horário: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CSS sobreposição de div DIV</title> <style> .container{width: 200px;height: 200px;position: relative;margin: 20px;} .box{width: 100%;height: 100%;position: absolute;top: 0;left: 0; opacity: 0.8;} .stack-top{z-index: 9;margin: 60px;} </style> <script type="text/javascript"> function display_c(){ var refresh=1000; // Refresh rate in milli seconds mytime=setTimeout('display_ct()',refresh) } function display_ct() { var x = new Date() var x1=x.toUTCString(); document.getElementById('ct').innerHTML = x1; display_c(); } </script> <body onload=display_ct();> </head> <body> <div class=container> <div class=box><img src=fusca.jpg width=200 height=200></div> <div class="box stack-top" id=ct></div> </div> </body> </html>
  8. A minha sugestão é começar com algo mais simples assim: drop table if exists alunos; create table alunos (id int, nome varchar(45), PRIMARY KEY (id)); drop table if exists professores; create table professores (id int, nome varchar(45), primary key (id)); drop table if exists salas; create table salas (id int, numero_sala int, horario datetime, idprofessor int, idaluno int, primary key(id));
  9. <?php class tentativa { public $db; public function __construct(){ $this->db=new PDO("mysql:host=localhost;dbname=astudy","root","");} public function teste($indice){ $smt=$this->db->prepare('select nome from usuarios,rede where usuarios.id=rede.id_patrocinador and id_patrocinador=:teste'); $smt->bindParam(':teste',$indice); $smt->execute(); return $smt->fetchObject();}} $tentativa=new tentativa(); $patrocinador=$tentativa->teste(1); ?> <div style="width:25%;margin:0 auto"> <table> <tr><td>Patrocinador</td><td><?=$patrocinador->nome?> </table> </div>
  10. get_field( ) é um recurso que não é nativo no PHP. Ele precisa do composer para ser instalado e tem algumas regras que tem que ser seguidas para aproveita-lo: ACF | Displaying values in your theme (advancedcustomfields.com)
  11. Hahahahaha... esses aplausos não são merecidos! Eu simplesmente não consegui montar a consulta no MySQL, eu não tive outra solução senão apelar para o PHP, é uma solução de desespero. Quem merece o aplauso é quem conseguir montar uma procedure no MySQL que consiga relacionar os três últimos registros de cada categoria. Isso eu não consegui! Eu agradeço os aplausos, mas eles não são merecidos.
  12. Para exibir o nome de quem está logado, a página deveria ter mais ou menos os seguintes comandos: qualquerpagina.php <?php session_start(); echo "usuário logado: ";$_SESSION['usuario'];
  13. Vamos supor que na rotina do login.php tenhamos definido $_SESSION['usuario']="Frank". Vamos supor que depois da autenticação, o fluxo do programa siga para home.php. Para colocar o nome do usuário no topo da página, eu faço assim: <?php session_start(); echo "Usuário logado: ".$_SESSION['usuario'];
  14. Esse tipo de consulta é bem difícil de fazer no MySQL. Mas, graças a Deus, nós temos o PHP! <?php $mysqli=new mysqli("localhost","root","","astudy"); for($categoria=1;$categoria<=5;$categoria++){ $query=$mysqli->query("select id,pessoa,categoria from tbpessoa where categoria=$categoria order by id desc limit 3"); while($pessoa=$query->fetch_assoc()){ echo $pessoa['categoria']." => ".$pessoa['pessoa']."<br>";}}
  15. Recomendo fazer a consulta diretamente no ambiente MySQL e quando você obter o resultado que você espera, aí sim você vai para o PHP. Use recursos mais básicos, depois é que você se preocupa com as aparências. <form> <input name=pedido placeholder="Número do pedido" required><p> <input type=submit> </form> <?php if (!isset($_GET['pedido'])) {exit;} $pesquisa=$_GET['pedido']; $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbpedido where ped=$pesquisa"); if($query->num_rows==0) {echo "Nenhum pedido encontrado";exit;} $rows=$query->fetch_all(MYSQLI_ASSOC); var_dump($rows);
  16. Ao invés da gravar o resultado de uma consulta em uma tabela, eu só fiz uma saída na tela dizendo quem está consultando, o que ele está consultado e o resultado que ele obteve. No meu exemplo, defini a variável $_SESSION['usuario'] no código. O correto é ele ter sido definido na rotina de login. Eu espero que o código lhe ajude a ter uma ideia de como gravar o nome do usuário na sua tabela de controle. <?php session_start(); $_SESSION['usuario']="Frank"; ?> <form method=post> Nome do produto <input name=termo><br> <input type=submit> </form> <?php if(!isset($_POST['termo'])){exit;} class conexao { public static $instance; public static function getinstance(){ self::$instance=new PDO("mysql:host=localhost;dbname=astudy","root",""); return self::$instance; } } $termo=$_POST['termo']; $conexao = conexao::getInstance(); $sql = 'select * from tbprod where prod like :prod'; $stm = $conexao->prepare($sql); $stm->bindValue(':prod', '%'.$termo.'%'); $stm->execute(); $produtos = $stm->fetchAll(PDO::FETCH_OBJ); echo "O usuário ".$_SESSION['usuario']." pesquisou o produto $termo e o resultado foi esse: <br>"; var_dump($produtos);
  17. No meio de vários POST, eu uso apenas um. Escolho qualquer um, se ele não estiver setado, eu simplesmente paro a execução do programa, assim: <form method=post> <input name=produto><br> <input name=qtd><br> <input name=valor><br> <input type=submit> </form> <?php if(!isset($_POST['produto'])){exit;} $produto=$_POST['produto']; $qtd=$_POST['qtd']; $valor=$_POST['valor']; ?> <table> <th>Produto<th>Qtd<th>valor <tr><td><?=$produto?><td><?=$qtd?><td><?=$valor?> </table> O comando foreach não é necessário nesse contexto.
  18. Valeu, bem que eu vi que o pdf do php era bem diferente. Pelo vídeo, deu para notar que ele é muito familiar ao Laravel, onde você precisa preparar várias pastas até atingir o objetivo.
  19. A minha sugestão é tirar a tabela do MS Acess e colocar no MySQL e depois pedir para o MS Access criar uma tabela vinculada. As pessoas podem usar os formulários, as consultas, os relatórios vinculados à antiga tabela, mas ninguém precisa saber que os dados estão sendo armazenados no MySQL.
  20. <?php $inpc='{"source":"\"IBGE - Índice Nacional de Preços ao Consumidor\"","title":"Variação mensal durante o Plano Real","valuesMap":{"Brasil":{"julho 1994":"7,75","agosto 1994":"1,85","setembro 1994":"1,40","outubro 1994":"2,82","novembro 1994":"2,96","dezembro 1994":"1,70","janeiro 1995":"1,44","fevereiro 1995":"1,01","março 1995":"1,62","abril 1995":"2,49","maio 1995":"2,10","junho 1995":"2,18","julho 1995":"2,46","agosto 1995":"1,02","setembro 1995":"1,17","outubro 1995":"1,40","novembro 1995":"1,51","dezembro 1995":"1,65","janeiro 1996":"1,46","fevereiro 1996":"0,71","março 1996":"0,29","abril 1996":"0,93","maio 1996":"1,28","junho 1996":"1,33","julho 1996":"1,20","agosto 1996":"0,50","setembro 1996":"0,02","outubro 1996":"0,38","novembro 1996":"0,34","dezembro 1996":"0,33","janeiro 1997":"0,81","fevereiro 1997":"0,45","março 1997":"0,68","abril 1997":"0,60","maio 1997":"0,11","junho 1997":"0,35","julho 1997":"0,18","agosto 1997":"-0,03","setembro 1997":"0,10","outubro 1997":"0,29","novembro 1997":"0,15","dezembro 1997":"0,57","janeiro 1998":"0,85","fevereiro 1998":"0,54","março 1998":"0,49","abril 1998":"0,45","maio 1998":"0,72","junho 1998":"0,15","julho 1998":"-0,28","agosto 1998":"-0,49","setembro 1998":"-0,31","outubro 1998":"0,11","novembro 1998":"-0,18","dezembro 1998":"0,42","janeiro 1999":"0,65","fevereiro 1999":"1,29","março 1999":"1,28","abril 1999":"0,47","maio 1999":"0,05","junho 1999":"0,07","julho 1999":"0,74","agosto 1999":"0,55","setembro 1999":"0,39","outubro 1999":"0,96","novembro 1999":"0,94","dezembro 1999":"0,74","janeiro 2000":"0,61","fevereiro 2000":"0,05","março 2000":"0,13","abril 2000":"0,09","maio 2000":"-0,05","junho 2000":"0,30","julho 2000":"1,39","agosto 2000":"1,21","setembro 2000":"0,43","outubro 2000":"0,16","novembro 2000":"0,29","dezembro 2000":"0,55","janeiro 2001":"0,77","fevereiro 2001":"0,49","março 2001":"0,48","abril 2001":"0,84","maio 2001":"0,57","junho 2001":"0,60","julho 2001":"1,11","agosto 2001":"0,79","setembro 2001":"0,44","outubro 2001":"0,94","novembro 2001":"1,29","dezembro 2001":"0,74","janeiro 2002":"1,07","fevereiro 2002":"0,31","março 2002":"0,62","abril 2002":"0,68","maio 2002":"0,09","junho 2002":"0,61","julho 2002":"1,15","agosto 2002":"0,86","setembro 2002":"0,83","outubro 2002":"1,57","novembro 2002":"3,39","dezembro 2002":"2,70","janeiro 2003":"2,47","fevereiro 2003":"1,46","março 2003":"1,37","abril 2003":"1,38","maio 2003":"0,99","junho 2003":"-0,06","julho 2003":"0,04","agosto 2003":"0,18","setembro 2003":"0,82","outubro 2003":"0,39","novembro 2003":"0,37","dezembro 2003":"0,54","janeiro 2004":"0,83","fevereiro 2004":"0,39","março 2004":"0,57","abril 2004":"0,41","maio 2004":"0,40","junho 2004":"0,50","julho 2004":"0,73","agosto 2004":"0,50","setembro 2004":"0,17","outubro 2004":"0,17","novembro 2004":"0,44","dezembro 2004":"0,86","janeiro 2005":"0,57","fevereiro 2005":"0,44","março 2005":"0,73","abril 2005":"0,91","maio 2005":"0,70","junho 2005":"-0,11","julho 2005":"0,03","agosto 2005":"0,00","setembro 2005":"0,15","outubro 2005":"0,58","novembro 2005":"0,54","dezembro 2005":"0,40","janeiro 2006":"0,38","fevereiro 2006":"0,23","março 2006":"0,27","abril 2006":"0,12","maio 2006":"0,13","junho 2006":"-0,07","julho 2006":"0,11","agosto 2006":"-0,02","setembro 2006":"0,16","outubro 2006":"0,43","novembro 2006":"0,42","dezembro 2006":"0,62","janeiro 2007":"0,49","fevereiro 2007":"0,42","março 2007":"0,44","abril 2007":"0,26","maio 2007":"0,26","junho 2007":"0,31","julho 2007":"0,32","agosto 2007":"0,59","setembro 2007":"0,25","outubro 2007":"0,30","novembro 2007":"0,43","dezembro 2007":"0,97","janeiro 2008":"0,69","fevereiro 2008":"0,48","março 2008":"0,51","abril 2008":"0,64","maio 2008":"0,96","junho 2008":"0,91","julho 2008":"0,58","agosto 2008":"0,21","setembro 2008":"0,15","outubro 2008":"0,50","novembro 2008":"0,38","dezembro 2008":"0,29","janeiro 2009":"0,64","fevereiro 2009":"0,31","março 2009":"0,20","abril 2009":"0,55","maio 2009":"0,60","junho 2009":"0,42","julho 2009":"0,23","agosto 2009":"0,08","setembro 2009":"0,16","outubro 2009":"0,24","novembro 2009":"0,37","dezembro 2009":"0,24","janeiro 2010":"0,88","fevereiro 2010":"0,70","março 2010":"0,71","abril 2010":"0,73","maio 2010":"0,43","junho 2010":"-0,11","julho 2010":"-0,07","agosto 2010":"-0,07","setembro 2010":"0,54","outubro 2010":"0,92","novembro 2010":"1,03","dezembro 2010":"0,60","janeiro 2011":"0,94","fevereiro 2011":"0,54","março 2011":"0,66","abril 2011":"0,72","maio 2011":"0,57","junho 2011":"0,22","julho 2011":"0,00","agosto 2011":"0,42","setembro 2011":"0,45","outubro 2011":"0,32","novembro 2011":"0,57","dezembro 2011":"0,51","janeiro 2012":"0,51","fevereiro 2012":"0,39","março 2012":"0,18","abril 2012":"0,64","maio 2012":"0,55","junho 2012":"0,26","julho 2012":"0,43","agosto 2012":"0,45","setembro 2012":"0,63","outubro 2012":"0,71","novembro 2012":"0,54","dezembro 2012":"0,74","janeiro 2013":"0,92","fevereiro 2013":"0,52","março 2013":"0,60","abril 2013":"0,59","maio 2013":"0,35","junho 2013":"0,28","julho 2013":"-0,13","agosto 2013":"0,16","setembro 2013":"0,27","outubro 2013":"0,61","novembro 2013":"0,54","dezembro 2013":"0,72","janeiro 2014":"0,63","fevereiro 2014":"0,64","março 2014":"0,82","abril 2014":"0,78","maio 2014":"0,60","junho 2014":"0,26","julho 2014":"0,13","agosto 2014":"0,18","setembro 2014":"0,49","outubro 2014":"0,38","novembro 2014":"0,53","dezembro 2014":"0,62","janeiro 2015":"1,48","fevereiro 2015":"1,16","março 2015":"1,51","abril 2015":"0,71","maio 2015":"0,99","junho 2015":"0,77","julho 2015":"0,58","agosto 2015":"0,25","setembro 2015":"0,51","outubro 2015":"0,77","novembro 2015":"1,11","dezembro 2015":"0,90","janeiro 2016":"1,51","fevereiro 2016":"0,95","março 2016":"0,44","abril 2016":"0,64","maio 2016":"0,98","junho 2016":"0,47","julho 2016":"0,64","agosto 2016":"0,31","setembro 2016":"0,08","outubro 2016":"0,17","novembro 2016":"0,07","dezembro 2016":"0,14","janeiro 2017":"0,42","fevereiro 2017":"0,24","março 2017":"0,32","abril 2017":"0,08","maio 2017":"0,36","junho 2017":"-0,30","julho 2017":"0,17","agosto 2017":"-0,03","setembro 2017":"-0,02","outubro 2017":"0,37","novembro 2017":"0,18","dezembro 2017":"0,26","janeiro 2018":"0,23","fevereiro 2018":"0,18","março 2018":"0,07","abril 2018":"0,21","maio 2018":"0,43","junho 2018":"1,43","julho 2018":"0,25","agosto 2018":"0,00","setembro 2018":"0,30","outubro 2018":"0,40","novembro 2018":"-0,25","dezembro 2018":"0,14","janeiro 2019":"0,36","fevereiro 2019":"0,54","março 2019":"0,77","abril 2019":"0,60","maio 2019":"0,15","junho 2019":"0,01","julho 2019":"0,10","agosto 2019":"0,12","setembro 2019":"-0,05","outubro 2019":"0,04","novembro 2019":"0,54","dezembro 2019":"1,22","janeiro 2020":"0,19","fevereiro 2020":"0,17","março 2020":"0,18","abril 2020":"-0,23","maio 2020":"-0,25","junho 2020":"0,30","julho 2020":"0,44","agosto 2020":"0,36","setembro 2020":"0,87","outubro 2020":"0,89","novembro 2020":"0,95","dezembro 2020":"1,46","janeiro 2021":"0,27","fevereiro 2021":"0,82","março 2021":"0,86","abril 2021":"0,38","maio 2021":"0,96","junho 2021":"0,60","julho 2021":"1,02","agosto 2021":"0,88","setembro 2021":"1,20","outubro 2021":"1,16","novembro 2021":"0,84","dezembro 2021":"0,73","janeiro 2022":"0,67","fevereiro 2022":"1,00","março 2022":"1,71","abril 2022":"1,04","maio 2022":"0,45","junho 2022":"0,62","julho 2022":"-0,60","agosto 2022":"-0,31","setembro 2022":"-0,32","outubro 2022":"0,47","novembro 2022":"0,38","dezembro 2022":"0,69","janeiro 2023":"0,46"}}}'; // fonte: https://www.ibge.gov.br/estatisticas/economicas/precos-e-custos/9258-indice-nacional-de-precos-ao-consumidor.html?=&t=series-historicas $jinpc=json_decode($inpc); $dados=$jinpc->valuesMap->Brasil; echo "<table><th>Período<th>Indice<th>Acumulado"; $periodo="1994-07-01"; $acumulado=1; foreach($dados as $key => $value){ $fperiodo=date('m/Y',strtotime($periodo)); $fvalue=str_replace(",",".",$value); $acumulado=$acumulado+$fvalue/100*$acumulado; $facumulado=str_replace(".",",",$acumulado); echo "<tr><td>$fperiodo<td>$value<td>$facumulado"; $periodo=date('Y-m-d',strtotime("+1 month",strtotime($periodo))); } echo "</table>";
  21. Eu tentei testar apenas a função, mas eu não consegui. Recomendo fazer o mesmo. Teste apenas a função, sem amarrar a nenhum banco de dados, mais ou menos assim: <?php $data = array( array('', 1800, 5), array('', 1810, 7), array('', 1820, 10), array('', 1830, 13), array('', 1840, 17), array('', 1850, 23), array('', 1860, 31), array('', 1870, 39), array('', 1880, 50), array('', 1890, 63), array('', 1900, 76), array('', 1910, 92), array('', 1920, 106), array('', 1930, 123), array('', 1940, 132), array('', 1950, 151), array('', 1960, 179), array('', 1970, 203), array('', 1980, 227), array('', 1990, 249), array('', 2000, 281), ); require("phplot.php"); $plot = new PHPlot(800, 600); $plot->SetImageBorderType('plain'); $plot->SetPlotType('lines'); $plot->SetDataType('data-data'); $plot->SetDataValues($data); # Main plot title: $plot->SetTitle('US Population, in millions'); # Make sure Y axis starts at 0: $plot->SetPlotAreaWorld(NULL, 0, NULL, NULL); $plot->DrawGraph();
  22. Acho que o maior problema aqui no fórum (pelo menos é o meu caso) é como usar o fpdf.php. Eu baixei aqui no meu micro, mas na hora de usar eu recebi várias mensagens de erro que não soube como resolver. Você conhece um tutorial para um leigo como eu fazer o pdf funcionar no PHP? De preferência em português.
  23. Eu nunca ouvi falar. Eu tenho PDFTK Buider, ele consegue agrupar vários arquivos pdf (não criptografado) num só arquivo pdf. Às vezes eu recebo um comprovante em imagem. Para converter em PDF, eu uso a função imprimir do Windows e peço para salvar como PDF. Já o Word e o Excel tem funções próprias para converter as páginas ou as planilhas selecionadas em PDF. Mas colocar tipos de arquivos diferentes dentro de um tipo de arquivo, eu acho pouco provável.
  24. Dá para resolver no php! Exemplo: <?php $teste=base64_decode("dXNlcm5hbWU6cGFzc3dvcmQ="); echo $teste; // username:password
  25. Legal, o problema não é o MySQL, o problema é o base64_decode. Encontrei isso no Google: How to Base64 Encode/Decode a Value in Node.js (futurestud.io) - verifique se você consegue decodificar usando essa dica. Decoding a base64-encoded string is also possible using the global Buffer class. Again, create a buffer instance using the Buffer.from method. Pass it your base64-encoded string as the first argument and the base64 encoding as the second argument. Make sure to pass the correct encoding to initialize the buffer correctly. You can then translate the encoding to a UTF8 representation. Here’s a code snippet translating a base64-encoded string to UTF8: // using the base64 encoded string from above const plain = Buffer.from('dXNlcm5hbWU6cGFzc3dvcmQ=', 'base64').toString('utf8') // 'username:password' That‘s it! Eu acredito que o código só funciona no JavaScript. O texto é só isso, o problema é encontrar esse tal de Buffer class que ele menciona. Veja se você consegue achar essa classe no seu código.
×
×
  • Criar Novo...