
Frank K Hosaka
Membros-
Total de itens
1.623 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
Encontrei um código bacana que monta um arquivo XLM, converte o XLM em Array, e tira do Array a parte que mais interessa. Isso foi escrito por Itibere em 30/07/2007 nesse fórum. Eu tentei fazer a mesma coisa com outros comandos fornecidos no Google, mas eu perdi o endereço da imagem, e assim precisei do algorítmo do Itibere. O algoritimo dele é bom demais porque funciona. Eu não sei como funciona, mas preciso tirar o chapéu para ele. Já as imagens não estão definidas por um indicador que possa ser separado pela função untag que foi publicado pelo Itibere, eu tive que improvisar bastante na base da tentativa e erro, e consegui resolver pelo menos 2% do problema. É a respeito de colocar o RSS na página do Website. Lá em 2007, o RSS era novidade. Hoje, pouca hoje gente usa esse recurso. Mas naquela época alguém perguntou se era possível trazer as imagens que estão acompanhados no RSS. Eu consegui trazer 2% das imagens. <?php // crédito Itibere // https://forum.scriptbrasil.com.br/topic/109868-como-colocar-um-painel-com-not%C3%ADcias-em-rss-no-meu-site/?do=findComment&comment=455732 $feed = 'https://www.uol.com.br/vueland/api/?loadComponent=XmlFeedRss'; ini_set('allow_url_fopen', true); $fp = fopen($feed, 'r'); $xml = ''; while(!feof($fp)){$xml .= fread($fp, 128);} fclose($fp); function untag($string, $tag){ $tmpval = array(); $preg = "|<$tag>(.*?)</$tag>|s"; preg_match_all($preg, $string, $tags); foreach ($tags[1] as $tmpcont){ $tmpval[] = $tmpcont;} return $tmpval;} $items = untag($xml, 'item'); foreach ($items as $item) { $posURL=strpos($item,"url="); $posJPG=strpos($item,".jpg"); if(!empty($posURL)){ $imagem=substr($item,$posURL+5,$posJPG-$posURL-1); echo "<img src=$imagem width=300 height=225><br>";} $posCDATA=strpos($item,"CDATA"); $posBarra=strpos($item,"]]"); $link=untag($item,'link'); echo "<a href=$link[0]>"; echo substr($item,$posCDATA+6,$posBarra-$posCDATA-6)."</a><br>";} //título da notícia ?>
-
Como Colocar Um Painel Com Notícias Em Rss No Meu Site?
pergunta respondeu ao Master_ de Frank K Hosaka em PHP
<?php // crédito Itibere // https://forum.scriptbrasil.com.br/topic/109868-como-colocar-um-painel-com-not%C3%ADcias-em-rss-no-meu-site/?do=findComment&comment=455732 $feed = 'https://www.uol.com.br/vueland/api/?loadComponent=XmlFeedRss'; ini_set('allow_url_fopen', true); $fp = fopen($feed, 'r'); $xml = ''; while(!feof($fp)){$xml .= fread($fp, 128);} fclose($fp); function untag($string, $tag){ $tmpval = array(); $preg = "|<$tag>(.*?)</$tag>|s"; preg_match_all($preg, $string, $tags); foreach ($tags[1] as $tmpcont){ $tmpval[] = $tmpcont;} return $tmpval;} $items = untag($xml, 'item'); foreach ($items as $item) { $posURL=strpos($item,"url="); $posJPG=strpos($item,".jpg"); if(!empty($posURL)){ $imagem=substr($item,$posURL+5,$posJPG-$posURL-1); echo "<img src=$imagem width=300 height=225><br>";} $posCDATA=strpos($item,"CDATA"); $posBarra=strpos($item,"]]"); $link=untag($item,'link'); echo "<a href=$link[0]>"; echo substr($item,$posCDATA+6,$posBarra-$posCDATA-6)."</a><br>";} //título da notícia ?> // a solução resolve 2% do que foi solicitado. -
<?php $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); $playersonline=$pdo->query("select sum(online) as total from tbusuario")->fetchColumn(); echo "<h4 class=mb-4>Junte-se aos <strong>$playersonline</strong> usuarios on-line agora mesmo!</h4>"; ?>
-
Comparar se valores do "while" são iguais aos valores do banco de dados
pergunta respondeu ao rfreitas84 de Frank K Hosaka em Tutoriais & Dicas - PHP
<style>.verde{color:white;background-color:green</style> <?php session_start(); $mysqli=new mysqli("localhost","root","","astudy"); //usei os dados do meu servidor echo "<table class=table>"; for($i=0;$i<=10;$i++){ $query=$mysqli->query("select numero from numeros_teste where numero=$i"); $num_rows=mysqli_num_rows($query); if($num_rows){$classe="verde";}else{$classe="";} echo "<tr><td class=$classe>$i";} echo "</table>"; ?> -
<?php date_default_timezone_set('America/Sao_Paulo'); $diasemana = array('domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'); $horaatual=date("d/m/Y H:i:s" ); $numdia=date('w',strtotime($horaatual)); $horaminima = '09:00:00'; $horamaxima = '10:00:00'; if ($horaatual<=$horaminima or $horaatual>=$horamaxima or $numdia<1 or $numdia>5){ echo "<div class='conteudo'>"; echo "<h2>Hoje é $diasemana[$numdia] ".date("d/m/Y H:i")."hs."; echo "<br>O saque é liberado somente de segunda a sexta, das 9 até 10 hs.</h2>"; echo "</div>";}
-
Inserir dados de array multidimensional em banco de dados
pergunta respondeu ao Ismael_show de Frank K Hosaka em PHP
<?php $array=array(array("id"=>1,"nome"=>"José","telefone"=>"9-9999-9990"),array("id"=>2,"nome"=>"João","telefone"=>"9-9999-8888")); $json=json_encode($array); // recebendo dados em json $arrays=json_decode($json); // transformando json num array $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); $query=$pdo->prepare("insert into tbcadastro (id,nome,telefone) values (?,?,?)"); foreach($arrays as $array){ $fetch=$query->execute(array($array->id,$array->nome,$array->telefone));} //se o id for chave primária na tbcadastro, o MySQL não vai aceitar valores repetidos. -
Manipulando datas de vencimento e inserindo no BD
pergunta respondeu ao diego_dias de Frank K Hosaka em Repositório de Scripts - PHP
<?php $mysqli=new mysqli("localhost","root","","astudy"); $data=new DateTime(Date('Y-m-d')); $parcelas = 2; for($i = 1; $i <= $parcelas;$i++){ $data = $data->add(new DateInterval('P1M')); $vcto=$data->format("Y-m-d"); $query=$mysqli->query("insert into tbteste (vcto, created) values ('$vcto', NOW())");} echo "os dados são gravados assim:"; $query=$mysqli->query("select * from tbteste"); while($row=$query->fetch_assoc()){ echo "<br>".$row['vcto']." ".$row['created'];} //resultado: //os dados são gravados assim: //2022-09-13 00:00:00 2022-08-13 16:33:56 //2022-10-13 00:00:00 2022-08-13 16:33:56 // //O MySQL não suporta o formato brasileiro // o brasileiro não suporta o formato MySQL, nesse caso, o último comando deveria ser assim: // echo "<br>".date('d/m/Y',$row['vcto'])." ".date('d/m/Y',$row['created']); -
Estou tentando estudar o CSS através desse portal: Examples · Bootstrap v5.2 (getbootstrap.com) Eu peguei um exemplo de como fazer um modal, peguei o código original, e reduzi o máximo que pude: astudy3.html ------------------------------------------------------------ <!DOCTYPE html> <title>astudy3</title> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="css/modals.css" rel="stylesheet"> <body> <div class="modal modal-sheet position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalSheet"> <div class="modal-dialog" role="document"> <div class="modal-content rounded-4 shadow"> <div class="modal-header border-bottom-0"> <h5 class="modal-title">Modal title</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body py-0"> <p>This is a modal sheet, a variation of the modal that docs itself to the bottom of the viewport like the newer share sheets in iOS.</p> </div> <div class="modal-footer flex-column border-top-0"> <button type="button" class="btn btn-lg btn-primary w-100 mx-0 mb-2">Save changes</button> <button type="button" class="btn btn-lg btn-light w-100 mx-0" data-bs-dismiss="modal">Close</button> </div> </div> </div> </div> Ele pega o estilo fora do arquivo HTML. Eu fiz um outro, colocando o estilo dentro do arquivo HTML, assim: <!DOCTYPE html> <title>A Study2</title> <style> .bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important} .border-bottom-0{border-bottom:0!important} .border-top-0{border-top:0!important} .btn{border-top-left-radius:0;border-top-right-radius:0} .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5); margin:calc(var(--bs-modal-header-padding-y) * -.5) calc(var(--bs-modal-header-padding-x) * -.5) calc(var(--bs-modal-header-padding-y) * -.5) auto} .btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5; --bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8; --bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000; --bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa} .btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem} .btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7; --bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca; --bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff; --bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd} .d-block{display:block!important} .flex-column{flex-direction:column!important} .mb-2{margin-bottom:.5rem!important} .modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff; --bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem; --bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem; --bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color); --bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ; --bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex); display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0} .modal-body{overflow-y:auto} .modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto; background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color); border-radius:var(--bs-modal-border-radius);outline:0} .modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto} .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0} .modal-sheet .modal-dialog {width: 380px;transition: bottom .75s ease-in-out;} .modal-sheet .modal-footer {padding-bottom: 2rem;} .modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)} .mx-0{margin-right:0!important;margin-left:0!important} .position-static{position:static!important} .py-0{padding-top:0!important;padding-bottom:0!important} .py-5{padding-top:3rem!important;padding-bottom:3rem!important} .rounded-4{border-radius:var(--bs-border-radius-xl)!important} .shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important} .w-100{width:100%!important} </style> </head> <body> <div class="modal modal-sheet position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalSheet"> <div class="modal-dialog" role="document"> <div class="modal-content rounded-4 shadow"> <div class="modal-header border-bottom-0"> <h5 class="modal-title">Modal title</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body py-0"> <p>This is a modal sheet, a variation of the modal that docs itself to the bottom of the viewport like the newer share sheets in iOS.</p> </div> <div class="modal-footer flex-column border-top-0"> <button type="button" class="btn btn-lg btn-primary w-100 mx-0 mb-2">Save changes</button> <button type="button" class="btn btn-lg btn-light w-100 mx-0" data-bs-dismiss="modal">Close</button> </div> </div> </div> </div> </body></html> Só que o resultado foi um gigantesco fracasso. O problema é que eu não consigo ver onde eu errei, alguém pode me ajudar?
-
Warning: mysql_query() expects parameter 2 to be resource
pergunta respondeu ao exata.justino de Frank K Hosaka em PHP
Os erros que eu encontrei estão nos comentários: <!Doctype html> <?php include('conexao.php');//aqui estava config/conexao.php $conn = obter_conexao(); if (!$conn)//foi usado $con die("Falha ao conectar ao banco de dados: ".mysqli_errno($conexao).": ".mysqli_error($conexao));//foi usado mysql $dados=mysqli_query($conn,"SELECT * FROM gruposusuarios");//estava invertido ("select...",$conn)//mysql_query $linha=mysqli_fetch_array($dados,MYSQLI_ASSOC);// faltou MYSQLI_ASSOC $total_regs = mysqli_num_rows($dados);//foi usado mysql_num_rows ?> Hoje eu faço assim (não é um bom exemplo, mas funciona): conexao.php ---------------------------- <?php $mysqli=new mysqli("localhost","root","","astudy"); index.php --------------------------- <?php require "conexao.php"; $query=$mysqli->query("select * from tbusuario"); $array=$query->fetch_array(MYSQLI_ASSOC); $num_rows=mysqli_num_rows($query); -
Uma gambiarra para copiar o placeholder do <input>
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
A solução que eu publiquei é uma grande porcaria. Ele força o usuário a copiar o texto da janela do alerta do JS e depois colar na caixa do input. Eu usei, eu detestei. Estudando um pouco mais o JS, a melhor solução é essa: <input placeholder=pindamonhangaba ondblclick=this.value=placeholder> Ou seja, com um duplo clique o JS já faz o trabalho de converter o placeholder em texto, sem depender da tradicional má vontade do usuário. -
Eu fiquei olhando as mensagens de 2018 do fórum Script Brasil e lá encontrei uma questão de como pegar o valor de uma janela popup. Eu fui logo pesquisar no Google, e encontrei um monte de soluções que não funcionaram no meu laboratório, digo, no meu notebook. Ao invés de resolver o problema do pobre coitado, eu sugeri fazer uma gambiarra: <style>.modal{display:none;position:fixed;top:10px;left:65px}</style> <script>function escolha(opcao){inpnave.value=opcao;divmodal.style.display="none"}</script> Aeronave <input id=inpnave><input type=submit value=Selecionar onclick=divmodal.style.display="block"> <div id=divmodal class=modal> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select aeronave from tbcabine"); echo "<select onchange=escolha(value)><option>Selecione uma aeronave</option>"; while($row=$query->fetch_assoc()){ $escolha=$row['aeronave']; echo "<option value=$escolha>$escolha</option>";} ?> </select> </div>
-
Preencher input automatico a partir de busca.php (checkbox)
pergunta respondeu ao quinhosp de Frank K Hosaka em PHP
Já estamos em 2022, quatro anos após você ter colocado a sua questão, e não consegui encontrar a resposta de como obter o valor do popup para preencher o campo da aeronave. Eu desisti. A minha sugestão é apelar para o modal, colocando as opções dentro do input, assim: <style>.modal{display:none;position:fixed;top:10px;left:65px}</style> <script>function escolha(opcao){inpnave.value=opcao;divmodal.style.display="none"}</script> Aeronave <input id=inpnave><input type=submit value=Selecionar onclick=divmodal.style.display="block"> <div id=divmodal class=modal> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select aeronave from tbcabine"); echo "<select onchange=escolha(value)><option>Selecione uma aeronave</option>"; while($row=$query->fetch_assoc()){ $escolha=$row['aeronave']; echo "<option value=$escolha>$escolha</option>";} ?> </select> </div> -
Duvida quanto a menu carrossel em PHP com botão para ir passando novas fotos [ + PHP - CSS ]
pergunta respondeu ao ssj4bq de Frank K Hosaka em PHP
Eu já tentei fazer isso com esse código: <?php function fatorial($numero){ if($numero <= 1){return $numero;}else{ return $numero * fatorial($numero - 1);}} // mostrar as imagens 1,2,3 $controlador=1; $imagem1="fotos/img".$controlador; $imagem2="fotos/img".$controlador++; $imagem3="fotos/img".$controlador++; echo fatorial(200); $imagem1="fotos/img".$controlador++; $imagem2="fotos/img".$controlador++; $imagem3="fotos/img".$controlador++; echo "<div><img src=$imagem1></img></div>"; echo "<div><img src=$imagem2></img></div>"; echo "<div><img src=$imagem3></img></div>"; O PHP não tem um temporizador. Assim, eu inventei o fatorial de 200. Ele não calcula, ele só retorna "INF". E também só mostra as três últimas imagens. O PHP também não consegue colocar os paineis lado a lado, assim o máximo que você vai conseguir é uma cascata de imagens, e não um carrossel. Para atualizar a tela, e mostrar o resultado de uma consulta, eu uso o método POST nos meus códigos, acho que esse é o máximo que o PHP pode fazer em termo de "animação". O PHP é muito bom para servir de ponte entre o MySQL e o HTML/JS/CSS. Mas, quando o assunto é imagem, o melhor é só o CSS e o JS. -
Preview de imagem selecionada num input file com src já carregado
pergunta respondeu ao Edilson Santiago de Frank K Hosaka em PHP
O JavaScript é muito legal, quando funciona. No meu caso, eu sempre faço esse tipo de erro: <?php $logo_usuario="frank";?> <script type="text/javascript"> foto_logo = document.getElementById('inpfoto'); foto_logo.addEventListener('change', function(e) { showThumbnail(this.files);}) function showThumbnail(files) { if (files && files[0]) { reader = new FileReader(); reader.onload = function (e) { imgPhoto.src = e.target.result;} reader.readAsDataURL(files[0]);}} </script> <input type=file id=inpfoto> <div class="logo" id="foto_logo" name="foto_logo"><img id="imgPhoto" src="<?=$logo_usuario?>"></img> Aqui o código JS foi escrito antes dos elementos, logo, ele não tem como saber quem é quem. A listagem está invertida. O correto é assim: <?php $logo_usuario="frank";?> <input type=file id=inpfoto> <div class="logo" id="foto_logo" name="foto_logo"><img id="imgPhoto" src="<?=$logo_usuario?>"></img> <script type="text/javascript"> foto_logo = document.getElementById('inpfoto'); foto_logo.addEventListener('change', function(e) { showThumbnail(this.files);}) function showThumbnail(files) { if (files && files[0]) { reader = new FileReader(); reader.onload = function (e) { imgPhoto.src = e.target.result;} reader.readAsDataURL(files[0]);}} </script> Outro erro bastante comum é que sempre confundo o nome do elemento que vai abrir o arquivo (inpfoto), o nome do painel que vai receber o arquivo (foto_logo), o nome do elemento que vai receber a imagem (imgPhoto), isso para não mencionar que sempre esqueço de fechar o marcador do tipo <img id="imgPhoto" src="<?php echo $logo_usuario ?>"</img> No caso acima, eu presumi que o fechamento do tag <?php já fechava o <img. O JS é muito chato, ele não gosta de mim. -
Ontem, eu estudei um pouco de CSS e encontrei o portal do Codepen, estava procurando uma barra lateral para navegar entre os códigos. Eu fiquei espantado com a simplicidade do tutorial. Eles deram um HTML e um CSS. Mas, na hora de executar, o HTML não estava funcionando. Precisei editar o HTML para conectar no CSS. Eu ajuntei os dois, e chamei o arquivo de sidebar.php. Como o fórum não permite arquivos com a extensão .zip ou .php, vou ter que listar aqui nessa mensagem. sidebar.php -------------------------------------------------------------------------- <html> <head> <style> @import url(//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css); } @import url(https://fonts.googleapis.com/css?family=Titillium+Web:300); .fa-2x { font-size: 2em; } .fa { position: relative; display: table-cell; width: 60px; height: 36px; text-align: center; vertical-align: middle; font-size:20px; } .main-menu:hover,nav.main-menu.expanded { width:250px; overflow:visible; } .main-menu { background:#212121; border-right:1px solid #e5e5e5; position:absolute; top:0; bottom:0; height:100%; left:0; width:60px; overflow:hidden; -webkit-transition:width .05s linear; transition:width .05s linear; -webkit-transform:translateZ(0) scale(1,1); z-index:1000; } .main-menu>ul { margin:7px 0; } .main-menu li { position:relative; display:block; width:250px; } .main-menu li>a { position:relative; display:table; border-collapse:collapse; border-spacing:0; color:#999; font-family: arial; font-size: 14px; text-decoration:none; -webkit-transform:translateZ(0) scale(1,1); -webkit-transition:all .1s linear; transition:all .1s linear; } .main-menu .nav-icon { position:relative; display:table-cell; width:60px; height:36px; text-align:center; vertical-align:middle; font-size:18px; } .main-menu .nav-text { position:relative; display:table-cell; vertical-align:middle; width:190px; font-family: 'Titillium Web', sans-serif; } .main-menu>ul.logout { position:absolute; left:0; bottom:0; } .no-touch .scrollable.hover { overflow-y:hidden; } .no-touch .scrollable.hover:hover { overflow-y:auto; overflow:visible; } a:hover,a:focus { text-decoration:none; } nav { -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; -o-user-select:none; user-select:none; } nav ul,nav li { outline:0; margin:0; padding:0; } .main-menu li:hover>a,nav.main-menu li.active>a,.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus,.no-touch .dashboard-page nav.dashboard-menu ul li:hover a,.dashboard-page nav.dashboard-menu ul li.active a { color:#fff; background-color:#5fa2db; } .area { float: left; background: #e2e2e2; width: 100%; height: 100%; } @font-face { font-family: 'Titillium Web'; font-style: normal; font-weight: 300; src: local('Titillium WebLight'), local('TitilliumWeb-Light'), url(http://themes.googleusercontent.com/static/fonts/titilliumweb/v2/anMUvcNT0H1YN4FII8wpr24bNCNEoFTpS2BTjF6FB5E.woff) format('woff'); } </style> </head> <body><div class="area"></div><nav class="main-menu"> <ul> <li> <a href="https://codepen.io/trending"> <i class="fa fa-home fa-2x"></i> <span class="nav-text"> Dashboard </span> </a> </li> <li class="has-subnav"> <a href="#"> <i class="fa fa-laptop fa-2x"></i> <span class="nav-text"> Stars Components </span> </a> </li> <li class="has-subnav"> <a href="#"> <i class="fa fa-list fa-2x"></i> <span class="nav-text"> Forms </span> </a> </li> <li class="has-subnav"> <a href="#"> <i class="fa fa-folder-open fa-2x"></i> <span class="nav-text"> Pages </span> </a> </li> <li> <a href="#"> <i class="fa fa-bar-chart-o fa-2x"></i> <span class="nav-text"> Graphs and Statistics </span> </a> </li> <li> <a href="#"> <i class="fa fa-font fa-2x"></i> <span class="nav-text"> Quotes </span> </a> </li> <li> <a href="#"> <i class="fa fa-table fa-2x"></i> <span class="nav-text"> Tables </span> </a> </li> <li> <a href="#"> <i class="fa fa-map-marker fa-2x"></i> <span class="nav-text"> Maps </span> </a> </li> <li> <a href="#"> <i class="fa fa-info fa-2x"></i> <span class="nav-text"> Documentation </span> </a> </li> </ul> <ul class="logout"> <li> <a href="#"> <i class="fa fa-power-off fa-2x"></i> <span class="nav-text"> Logout </span> </a> </li> </ul> </nav> </body> </html>
-
A aparência é mais importante que o conteúdo
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Tirei a página da internet e sua respectiva pasta da minha área de trabalho, e coloquei na pasta frank que fica debaixo do wamps64. Tentei abrir a pagina, usando o endereço do localhost no navegador, e a página abriu sem nenhum erro. Tentei usar o notepad++ para alterar o código da página assim: <form> <img class="mb-4" src="./Signin Template · Bootstrap v5.2_files/bootstrap-logo.svg" alt="" width="72" height="57"> <h1 class="h3 mb-3 fw-normal"><?php echo "olá mundo"; ?>Please sign in</h1> Mas a minha mensagem não aparece. O chato é que eu não sei o que fiz de tão errado para merecer esse castigo. Fiz mais uma gambiarra. Usei o notepad para mudar a extensão da página html para php, e dessa vez a minha mensagem apareceu!!! -
Faz 63 anos que a minha mãe vem me ensinando que o mais importante é o que as pessoas tem por dentro. Graças à pandemia de 2020, eu percebi que a minha mãe estava bem errada. É cientificamente impossível saber o que as pessoas tem por dentro. Alguém que está tossindo e precisa de um pulmão artificial para respirar, isso não significa que ele é um hospedeiro do Covid-19. Para saber se uma pessoa tem o vírus ou se está fingindo que está doente, você precisa de um microscópio eletrônico, e lamentavelmente o Brasil não tem sequer um microscópio analógico. Logo, tudo o que temos são apena aparências. Quando um jornal afirma que morreram mais de 600.000 pessoas por causa do vírus, eu finjo que acredito, eu finjo que acredito que os jornalistas sabem o que estão escrevendo. Para melhorar a minha audiência aqui no fórum, só hoje é que comecei a valorizar de verdade a aparência. E eu me dei mal. Primeiro, eu fui nessa página: Signin Template · Bootstrap v5.2 (getbootstrap.com) - ele é belo exemplo de como fazer a tela de login. Salvei uma cópia dessa página na minha área de trabalho. E quando tentei abrir a página da minha área de trabalho, eu recebi dezenas de mensagens de erro. Eu não tenho a menor ideia de como consertar.
-
Até ontem todos os meus códigos em JavaScript estavam amontoados dentro do arquivo config.php. Mas hoje precisei criar uma planilha com esse código: geraplanilha.php ------------------------------------------ <?php require "config.php"; echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"; echo "<table border=1><tr><th>Mat<th>Nome<th>Tipo<th>Veiculo<th>Placa<th>Dia<th>Entrada<th>Saída"; $query=$mysqli->query("select * from vw_entrada"); while($row=$query->fetch_assoc()){ echo "<tr><td>".$row['matricula']; echo "<td>".$row['nome']; echo "<td>".$row['tipo']; echo "<td>".$row['veiculo']; echo "<td>".$row['placa']; echo "<td>".Date('d/m/y',strtotime($row['horaentrada'])); echo "<td>".Date('H:i',strtotime($row['horaentrada'])); if (!empty($row['horasaida'])){echo "<td>".Date('H:i',strtotime($row['horasaida']));} else {echo "<td>";}} echo "</table>"; $arquivo="relatorio_entsai.xls"; header ('Cache-Control: no-cache, must-revalidate'); header ('Pragma: no-cache'); header('Content-Type: application/x-msexcel'); header ("Content-Disposition: attachment; filename=\"{$arquivo}\""); ?> Mas, ele reclamou assim Cannot Modify Header Information – Headers Already Sent By config.php Na base da tentativa e erro, descobri que o problema estava no meio de dois códigos em JavaScript. Peguei tudo que estava entre os marcadores <script></script> e guardei num outro arquivo que eu chamei de config.js. E assim consegui montar a planilha tipo Excel. Claro que o resto do programa não funcionava mais. Com a ajuda do Google, tudo o que eu precisava fazer é informar onde foram parar todos os códigos em JavaScript através desses marcadores: <script type="text/javascript" src="config.js"></script> Coloquei esse comando no config.php, e graças a Deus o gerador de planilha continuava funcionando, menos o resto do programa. Através do navegador, descobri que eu fiz errado o meu primeiro arquivo em JavaScript, eles não podem ter marcador nenhum. Tive que arrancar o marcador <script> no começo do arquivo config.js e o marcador </scrip> no final do arquivo. Se você é desorganizado como eu, não existe nenhum problema amontoar o código JavaScript num arquivo do PHP. Mas, se você precisar criar uma planilha, aí eu acredito que você será a obrigado a separar o joio do trigo.
-
Eu não sabia que o MySQL tinha o campo json, mas ele não vai ajudar. Um banco de dados decente tem um código exclusivo para usar a engenharia InnoDB e catalogar os produtos por nome, unidade, custo, código fiscal, localização, mas JAMAIS poderia ter um código de fornecedor, isso porque um produto pode ser fornecido por vários fornecedores. Esse é o erro número 1. Um registro tem que ser vinculado a apenas um produto. Um registro jamais pode ser vinculado a outro registro da mesma tabela. O que eu fiz foi violar centenas de regras como o princípio da atomicidade, o princípio da normatização, para citar apenas alguns. Se eu criar um campo tipo json na tabela de produtos, certamente vou acabar na cadeia. Se bem que a sugestão é muito valiosa, eu não precisaria ficar procurando na tabela quem é um "registro puro" e o que é um "registro quebra galho".
-
Terminei o meu código rascunho, e ele ficou assim: <?php $mysqli=new mysqli("localhost","root","","diario"); $query=$mysqli->query("select * from tbprod where codprod=1401"); $row=$query->fetch_assoc(); var_dump($row); echo "produto ".$row['prod']." codigo ".$row['codprod']; $codforn=$row['codforn']; $json=json_decode($codforn); var_dump($json); if($json->Conv==1){ $somacusto=0; foreach($json as $chave=>$codprod){ if($chave<>"Conv"){ $query=$mysqli->query("select * from tbprod where codprod=$codprod"); $row=$query->fetch_assoc(); echo "<br>produto ".$row['prod']." custo ".$row['custo']; $somacusto+=$row['custo'];}}} echo "<br>o custo do novo produto vinculado será de $somacusto"; Resultado: C:\wamp64\www\frank\astudy.php:5: array (size=10) 'codprod' => string '1401' (length=4) 'un' => string 'un' (length=2) 'prod' => string 'Kit Quitanda' (length=12) 'custo' => string '0.59' (length=4) 'marg' => string '30.00' (length=5) 'codbar' => string '' (length=0) 'loc' => string '' (length=0) 'emb' => string '' (length=0) 'cf' => string '' (length=0) 'codforn' => string '{"Cod":198,"Conv":1,"Cod1":44,"Cod2":95}' (length=40) produto Kit Quitanda codigo 1401 C:\wamp64\www\frank\astudy.php:9: object(stdClass)[3] public 'Cod' => int 198 public 'Conv' => int 1 public 'Cod1' => int 44 public 'Cod2' => int 95 produto Batata custo 6.99 produto Tomate custo 7.99 produto Cebola custo 8.05 o custo do novo produto vinculado será de 23.03 O json é uma tecnologia que só conheci aqui no fórum. Antes disso, eu usava o Microsoft Access, e o máximo que eu consegui foi somar dois produtos, e usei dezenas e dezenas de linhas, o que dá para fazer com poucas linhas com o json. O json é muito chato, mas vale a pena utilizar. Para somar três produtos, eu precisei alterar a tbprod, o codforn foi criado com varchar(30), eu tive que alterar para varchar(40). Aumentando o tamanho do campo, vai ser possível somar mais de três produtos.
-
Eu estou bem enrolado com o projeto portaria2, mas hoje apareceu outro cliente pedindo para aperfeiçoar a gambiarra que eu fiz no MySQL. O cliente tem uma camisa que custa R$ 6,00, ele queria vender os botões. Cada camisa tem 6 botões, logo, cada botão custa R$ 1,00. Para resolver isso, eu abri um novo registro chamado botão, e no campo código do fornecedor eu coloquei {"cod":886,"conv":6}, onde 886 é o código da camisa e 6 é o número de botões que cada camisa tem. Eu pedi para o PHP calcular o custo do botão assim: $custooriginal= // resultado da consulta do produto original $obj=json_decode($codfornecedor); $conv=$obj->conv; $custo=round($custooriginal/$conv,2); // cálculo do custo para um produto vinculado em outro. Agora, o cliente disse que tem uma camisa que custa R$ 6,00, uma calça que custa R$ 6,00 e um par de chinelo que custa R$ 6,00. Logo o Conjunto Para a Praia custa R$ 18,00. Para resolver esse problema, eu pensei nessa anotação {"cod":886,"conv":1,"cod":666,"cod":999} e o código PHP ficaria mais ou menos assim: if (!$conv==1){ $custo=round($custooriginal/$conv,2);} else { // ver quantos cod tem na anotação json // consultar o custo de cada um deles $custo=$somacusto;} A primeira dificuldade que eu vejo é que o PHP não vai conseguir distinguir os códigos, a menos que chame de cod1, cod2 e assim vai, mas enfim, isso é apenas um esboço de uma ideia. Na hora de digitar, tudo sai diferente.
-
Quantas vezes eu posso usar a função Java?
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Fiz uma gambiarra, e ele funcionou! Pelo menos dá para usar a função Java uma vez!!!! <script> function hexToAscii(str1){ hex = str1.toString(); str = ''; for (var n = 0; n < hex.length; n += 2) { str += String.fromCharCode(parseInt(hex.substr(n, 2), 16)); } return str;} function funcaojava(hexanome) {alert(hexToAscii(hexanome))} </script> <?php $mysqli=new mysqli("localhost","root","","porteiro"); $query=$mysqli->query("select * from tbcadastro limit 1"); echo "<table>"; while ($row=$query->fetch_assoc()){ $nome=$row['nome']; $hexanome=bin2hex($nome); echo "<tr><td>$nome "; echo "<input type=submit value='Liberar a Saída' onclick=funcaojava('$hexanome')>";} -
Placeholder é um atributo do <input> que eu encontrei no código da portaria que achei nesse forum. Gostei muito dele, e ele mudou o perfil dos meus projetos. Onde eu tinha três colunas na tabela consegui reduzir em um e isso se adaptou como uma luva na tela do celular. O problema é quando você precisa copiar o valor que o placeholder mostra. Pesquisei no Google, e a solução que encontrei foi essa: copy placeholder text (codepen.io) Mas, ele não funciona, ou mais precisamente, eu não sei como fazer funcionar. Assim, eu tive que improvisar, e cheguei nessa solução: <input placeholder="Pindamonhangaba" ondblclick=alert(placeholder)> O meu conhecimento em JS é bem pouco, mas o pouco que sei dele já me ajuda a copiar o placeholder do <input>.
-
É possível definir o $mysqli apenas uma vez?
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Bom dia, Wash, A única solução que eu encontrei foi tirar o painel de controle do config.php e criei um novo código chamado painel.php. E assim consigo chamar o config.php onde for necessário e sem "sujar" a resposta de quem for precisar consultar o servidor. Nos códigos por onde o usuário navega, eu escrevi assim <?php require 'config.php'; require 'painel.php'; -
Eu queria executar esse código pelo menos uma vez: <script>function funcaojava(nome) {alert(nome)}</script> <?php $mysqli=new mysqli("localhost","root","","porteiro"); $query=$mysqli->query("select * from tbcadastro limit 1"); echo "<table>"; while ($row=$query->fetch_assoc()){ $nome=$row['nome']; echo "<tr><td>$nome "; echo "<input type=submit value='Liberar a Saída' onclick=funcaojava('$nome')>";} Ele mostra o nome do colaborador e o botão liberar a saída. Mas na hora de usar o botão, nada acontece. Com a ajuda da ferramenta de inspeção do navegador, eu consigo ver essa mensagem: Uncaught SyntaxError: Invalid or unexpected token (at astudy.php:2:140) e a linha 2 é essa daqui, mas não consegui copiar o x vermelho que aparece no final da mensagem <table><tr><td>Adriana de Jesus Elidio <input type=submit value='Liberar a Saída' onclick=funcaojava('Adriana de Jesus Elidio')> Eu presumi que eu estava sendo punido por não fechar as tags do tipo <td></td>. Mas fiz a correção, mas o problema persiste. Alguém pode me ajudar?