Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.583
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. <body style="width:30%;margin:0 auto"><div style="height:5%"></div> <?php $mysqli=new mysqli("localhost","root","","astudy"); $data_final='2023-01-29'; $data_inicial='1500-04-22'; $estado_operacao='não resolvido'; $query = $mysqli->query("select * from tb_operacao WHERE data_operacao between '$data_inicial' and '$data_final' and estado_operacao='$estado_operacao' order by id ASC"); echo "<Select><option>Casos não resolvidos"; while($row=$query->fetch_assoc()){ $data_operacao=date('d/m/Y',strtotime($row['data_operacao'])); echo "<option>$data_operacao=>".$row['nome_operacao'];}
  2. <body style="width:30%;margin:0 auto"><div style=height:5%></div> <?php if(isset($_REQUEST['cep'])){ $cep = $_REQUEST['cep']; switch($cep) { case ($cep>="22000-000" && $cep<="22999-999"):$url = "http://dominio.com.br/cep22"; break; case "23010-010":$url = "http://dominio.com.br/cep22"; break; case "32000-000":$url = "http://dominio.com.br/cep32"; break; default:$url = "http://dominio.com.br/localidade-não-atentida";} echo "a encomenda com cep $cep irá para $url <p>";}// header("Location: $url"); ?> <br><a href='?cep=22000-000'>Teste 22000-000</a> <br><a href='?cep=22090-123'>Teste 22090-123</a> <br><a href='?cep=23010-010'>Teste 23010-010</a> <br><a href='?cep=32000-000'>Teste 32000-000</a>
  3. Eu tentei testar o código por aqui, mas não consegui entender a linha 13 $sql_custo_homologacao_cs = mysqli_query($config, "SELECT percentual FROM tb_erp_custo_homologacao WHERE '$investimento_total' BETWEEN vlr_1 AND vlr_2") or die(mysqli_error($config)); Geralmente, eu encontro código desse tipo: select percentual from tb_homologacao where investimento between vr_1 and vr_2 Depois da cláusula Where sempre vem o nome do campo da tabela, mas nunca uma variável do tipo utilizado no PHP. Eu preciso de todos os códigos para ver como esse programa funciona, principalmente todo o banco de dados com a estrutura e todos os dados. Tem jeito de arranjar para mim?
  4. O jeito mais fácil de zebrar uma tabela que eu vi foi pelo Bootstrap, usando <table class='table table-striped'>. O correto é usar o PHP, mas ontem fiquei imaginando como usar o JavaScript para gerar uma tabela. O código a seguir tem erro de lógica, ele pressupõe que o usuário vá preencher o formulário na sequência. Mas se o usuário querer voltar um pouco para trás, o programa não funciona! Eu não sei como consertar isso. Ou seja, daqui posso concluir que o melhor jeito é usar o PHP, enquanto o usuário fica pensando na vida, o PHP guarda o que já foi feito em um banco de dados. astudy.html <script> controle=0 function inserirLinha(table,var1,var2){ row=table.insertRow() cell=row.insertCell() text=document.createTextNode(var1) cell.appendChild(text) cell.setAttribute("width","20%") cell.setAttribute("style","border:1px solid") cell=row.insertCell() text=document.createTextNode(var2) cell.appendChild(text) cell.setAttribute("style","border:1px solid")} function ver(){ es=document.getElementsByName('txt[]') divTitulo.innerHTML=es[0].value divDescricao.innerHTML=es[1].value table=document.querySelector("table") if((es[2].value && es[3].value && controle==0)){ inserirLinha(table,es[2].value,es[3].value) controle++} if((es[4].value && es[5].value && controle==1)){ inserirLinha(table,es[4].value,es[5].value) controle++} if((es[6].value && es[7].value && controle==2)){ inserirLinha(table,es[6].value,es[7].value)}} </script> <style> .table-striped>tbody>tr:nth-child(2n+1){background-color:lightgray} .table-striped>tbody>tr:nth-child(2n){background-color:whitesmoke} </style> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> <body style="width:70%;margin:0 auto"> <div style="height:5%"></div> <input name=txt[] placeholder='titulo do artigo' required> <input name=txt[] placeholder='descricao'required onchange=ver()><br> <input name=txt[] placeholder='linha1' onchange=ver()> <input name=txt[] placeholder='linha1' onchange=ver()><br> <input name=txt[] placeholder='linha2' onchange=ver()> <input name=txt[] placeholder='linha2' onchange=ver()><br> <input name=txt[] placeholder='descricao' onchange=ver()> <input name=txt[] placeholder='extra' onchange=ver()> <div id=divTitulo style=font-size:16pt;font-weight:bold;padding:10px;font-family:Roboto></div> <div id=divDescricao style=font-size:12pt;padding:10px;font-family:Roboto></div> <div id=divTabela> <table class='table table-striped' width=100% border=1 cellspacing=0 cellpadding=0 style=font-family:Roboto,sans-serif> <tbody> </div>
  5. O problema está na linha 41. Onde está <?, o correto é <?php, acredito que o <? dá a possibilidade de você executar apenas um comando em PHP, e como você usou mais de um comando, o PHP ficou procurando o fim do arquivo do comando anterior. Não consegui testar o seu código, pois eu não tenho a extensão MySQL no PHP, e nem o arquivo mysql.php, onde suponho que tem mais informações sobre a classe $db.
  6. Não consegui testar esse código, pois ele precisa do módulo phpMQTT.php. O módulo eu achei em phpMQTT/phpMQTT.php at master · bluerhinos/phpMQTT · GitHub, o problema é que ele conecta máquinas, e aqui eu só tenho uma máquina.
  7. Eu tive que fazer várias modificações para testar esse código. O mais problemático foi esse daqui: function abreLink($descricao) { $query = mysqli_query($link, "SELECT * FROM links WHERE descricao='$descricao'"); while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {$url = $row['link'];} return $url;} a variável $url da última linha não tem nenhum valor a variável $url da penúltima linha pode receber vários valores, vai prevalecer a última. a variável $link não tem nenhum valor Esse é o famoso capítulo da visibilidade da variável, eu levei 20 anos para entender o problema. O fato da variável estar definida dentro de um mesmo módulo não quer dizer que todo mundo consegue enxergá-la. Outro problema que eu não consegui resolver foi o mysqli_fetch_array( ), eu não consegui usar. O conceito de visibilidade é importante para administrar qualquer tipo de linguagem (HTML, JavaScript, CSS, PHP, Laravel) e mais ainda no Detran (eles não vão liberar o seu CNH se você não dominar a visibilidade). A seguir o código que eu usei para testar: <?php class Funcoes { public $servidor = 'localhost'; public $usuario ='root'; //'meu_user'; public $senha = ''; // 'minha_senha'; public $bd = 'astudy'; //'meu_bd'; public function cnx() { $link = mysqli_connect($this->servidor, $this->usuario, $this->senha, $this->bd); return $link;}} // echo $_SERVER['DOCUMENT_ROOT']."/wamp64/www/astudy/menu.php"; $obj = new Funcoes(); $link = $obj->cnx(); function abreLink($link,$descricao){ $query = mysqli_query($link, "select * from tblinks where descricao='$descricao'"); $urls = $query->fetch_array(MYSQLI_ASSOC); return var_dump($urls);} $teste=abreLink($link,"beterraba");
  8. Eu fiz algumas modificações no código original para testar aqui. Acrescentei o campo acess_level na tbusuarios como integer, mas na hora do código resgatar a informação na variável $acesso, ele acabou se transformando numa string. E assim, o código if($nivel==1){echo "você vai para dashboard";} não funcionou. Tive que corrigir assim: if($nivel=='1'). astudy.php <?php session_start(); $conexao=new mysqli("localhost","root","","astudy"); //include('conexao.php'); $_POST['usuario']="teste"; $_POST['senha']="1234"; if(empty($_POST['usuario']) || empty($_POST['senha'])) { header('Location: login.php'); exit();} $usuario = mysqli_real_escape_string($conexao, $_POST['usuario']); $senha = mysqli_real_escape_string($conexao, $_POST['senha']); $query = "select usuario, acess_level from tbusuarios where usuario='$usuario' and senha=md5($senha)"; $result = mysqli_query($conexao, $query); $row = mysqli_num_rows($result); if($row == 0) { $_SESSION['nao_autenticado'] = true; header('Location: ERROR.php');exit;} $nivel=$result->fetch_assoc()['acess_level']; if($nivel=="1"){echo "você vai para dashboard";exit;} //{header('location:dashboard.php');} echo "você vai para index"; //header("location:index.php");
  9. A sugestão do wash é boa, Mas se você aceita sugestão de um programador eventual: astudy.php <?php if(!isset($_GET['placa'])){ echo "<form><input name=placa placeholder=placa></form>";exit;} $mysqli=new mysqli("localhost","root","","astudy"); $placa=$_GET['placa']; $query=$mysqli->query("select placa from tbplacas where placa='$placa'"); $num_rows=mysqli_num_rows($query); if($num_rows==1){echo "a placa $placa já está cadastrada!! <br>";} else { $query=$mysqli->query("insert into tbplacas (placa) values ('$placa')");} echo "<input value='Cadastrar outra placa' type=submit onclick=location.replace('astudy.php')>";
  10. Eu não tenho a extensão PDF e nem o MySQL do PHP, mas consegui testar a sua primeira consulta: <?php $mysqli=new mysqli("localhost","root","","astudy"); $codigo=1; //$_GET["codigo"]; $rs_pal=$mysqli->query("select * from grupos_estudos_inscricoes where codigo=$codigo"); $row_pal = $rs_pal->fetch_all(MYSQLI_ASSOC); var_dump($row_pal); O erro que encontrei na consulta é que você escreveu "where codigo=codigo", ou seja, você está comparando o campo com o próprio campo. Você usa codigo=$codigo se o campo for numérico, caso contrário codigo='$codigo'.
  11. Isso daí não é fácil. Hoje estudei um pouco e apanhei muito para multiplicar uma matriz 2x3 por uma de 3x2. Agora, fazer um algorítimo nxm e mxn, isso deve ser coisa para super neuronios. Olha só o meu código: <?php // multiplicando matriz $a(2x3) x $b(3x2) = $c(2x2) $a=[[-3,1,0], [2,4,-2]]; $b=[[-1,2], [3,5], [-2,6]]; $c=[[0,0],[0,0]]; /* => [[6,-1] [14,12]] */ $d=array(); $c[0][0]=$a[0][0]*$b[0][0]+$a[0][1]*$b[1][0]+$a[0][2]*$b[2][0]; $c[1][0]=$a[1][0]*$b[0][0]+$a[1][1]*$b[1][0]+$a[1][2]*$b[2][0]; $c[0][1]=$a[0][0]*$b[0][1]+$a[0][1]*$b[1][1]+$a[0][2]*$b[2][1]; $c[1][1]=$a[1][0]*$b[0][1]+$a[1][1]*$b[1][1]+$a[1][2]*$b[2][1]; for($linha=0;$linha<=1;$linha++){ for($coluna=0;$coluna<=1;$coluna++){ $somaproduto=0; for($soma=0;$soma<=2;$soma++){ $somaproduto+=$a[$linha][$soma]*$b[$soma][$coluna];} $d[$linha][]=$somaproduto;}} var_dump($d);
  12. Frank K Hosaka

    Maluquice MYSQL

    O problema que eu encontrei no código foi esse daqui: $sql1 = "INSERT INTO jacad (pad) VALUES ($pad)"; Ele deveria estar escrito assim: $sql1 = "INSERT INTO jacad(pad) VALUES ('$pad')"; Sem as aspas na variável, a consulta nem deveria ser executada. Eu interpretei errado o seu problema, eu pensei que você queria colocar o resultado de uma consulta dentro de outra tabela. Eu apanhei muito, até que consegui colocar o array do resultado de uma consulta num campo texto da outra tabela, assim: <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from resto where cod=1"); $row=$query->fetch_assoc(); $jrow=json_encode($row); $query_2=$mysqli->query("insert into jacad (pad) values ('$jrow')"); $query_3=$mysqli->query("select * from jacad"); $row_3=$query_3->fetch_all(); var_dump($row_3);
  13. Eu geralmente encosto o mouse nessas minhocas vermelhas e encontro mensagens do tipo "sintax error, unexpected token" (acontece quando esqueço de colocar ponto e vírgula na instrução da linha anterior); "undefined constant" (acontece quando escrevo uma variável sem o prefixo $). Qual a mensagem que aparece por aí?
  14. <body style="width:200px;margin:0 auto"> <div style="height:50px"></div> <form> <fieldset><legend>opções de pagamento</legend> <?php function dec($num) {if (empty($num)) {$fmt="";} else { $fmt = number_format($num,2,',','.'); return $fmt;}} $preço=100; $par12=$preço*1.5/12; $par24=$preço*2/24; echo "<table>"; echo "<tr><td><input type=radio name=opcao[] value=1> R$ <td align=right>".dec($preço)."<td> à vista"; echo "<tr><td><input type=radio name=opcao[] value=2> R$ <td align=right>".dec($par12)."<td> x 12"; echo "<tr><td><input type=radio name=opcao[] value=3> R$ <td align=right>".dec($par24)."<td> x 24"; echo "<tr><td><input type=submit>"; echo "</table></fieldset></form>"; if(isset($_GET['opcao'])){ $opcao=$_GET['opcao'][0]; echo "Foi escolhido a $opcao.a opção";}
  15. Para você ajuntar dois textos, basta usar o HTML Caso você não saiba como conectar o banco de dados no HTML com JavaScript, aí você vai precisar do PHP. Um código básico de PHP é assim: <?php $mysqli=new mysqli("localhost","root","","astudy"); O PHP se tornou popular porque é bem mais fácil trabalhar com ele do que com JavaScript. Mas nem tudo que tem o marcador <?php é PHP como é o código que você publicou. Esse código que você publicou é Laravel, uma nova tecnologia que surgiu em 2011 para turbinar o PHP com falicitadores. É o mesmo caso do JQuery com o JavaScript. Se eu fosse você, pediria o dinheiro de volta do professor que não ensinou nada para você, só fez você perder tempo. Mas, já que chegamos aqui, usei o seu código para rodar no Laravel. O PHP precisa de um servidor tipo Wamp no ambiente Windows. O Laravel precisa de tudo isso e do programa Composer. No PHP você é o controlador, visualizador e roteador. Já o Laravel exige que você separe tudo assim: astudy>routes>web.php <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\ExercicioController; Route::get('',[ExercicioController::class,'ex01']); astudy>app>Http>Controllers>ExercicioController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ExercicioController extends Controller{ public function ex01(request $request) { if($request->input('txt_nome1')){ $texto1=$request->input('txt_nome1'); $texto2=$request->input('txt_nome2'); $resultado=Exercicio::lerDoisValores($texto1,$texto2);} return view('view',['resultado'=>$resultado]);}} astudy>app>Http>Controllers>Exercicio.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class Exercicio extends Controller{ public static function lerDoisValores ($nome1, $nome2) { return $nome1." ".$nome2;}} astudy>resources>views:view.blade.php <html> <head> <meta charset=utf-8> <title>Aprendendo Laravel</title> </head> <body> <form> Nome1: <input type="text" name="txt_nome1"> Nome2: <input type="text" name="txt_nome2"> <input type="submit" value="Imprime"> </form> <br> <span><b> <?php echo isset ($resultado) ? $resultado : null; ?> </b></span> </body> </html> O seu código sugere criar a classe Exercício dentro da pasta Models. Eu tentei e não consegui. Tentei criar a classe no Helper.php, mas não consegui. A minha última saída foi criar a classe dentro do controlador. Eu apanhei muito, mas consegui concatenar os dois textos pelo Laravel, isso parece inútil, mas aos poucos fui aprendendo o que posso e o que não posso fazer com o Laravel. O Laravel, no meu caso, precisa do servidor WampServ, e também de um outro servidor chamado Artisan. Para botar o Laravel no ar, você tem que digitar no diretório do projeto "php artisan serve". No navegador, você digita "localhost" para acessar o PHP, e digita "localhost:8000" para acessar o Laravel.
  16. Trabalhando no problema: 1) o que é status? Status é apenas um rótulo para identificar o irmão. Basicamente só tem dois irmãos, o que lembra de trazer a oferta, vamos chamá-lo de adimplente, e o que esquece de trazer a oferta, o inadimplente. 2) como criar uma caixa de combinação com o status? <body style="width:500px;margin:0 auto"> <div style=height:50px></div> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select status from tbpessoa group by status"); echo "<select name=status><option>Selecione tipo de irmão</option>"; while($row=$query->fetch_array()){ echo "<option>".$row[0]."</option>";} echo "</select>"; 3) Ao invés da caixa de combinação mostrar apenas dois status, ele mostra uma opção vazia. Certamente isso é obra daquele safado do irmão Murphy, ele esqueceu de cadastrar o cliente, perdão, o irmão. Para "tapar" essa linha vazia, vamos modificar o programa, onde houver o status vazio vamos chamá-lo de verificar, assim: <body style="width:500px;margin:0 auto"> <div style=height:50px></div> <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select status from tbpessoa group by status"); echo "<form>"; echo "<select name=status onchange=submit()><option>Selecione tipo de irmão</option>"; while($row=$query->fetch_array()){ if(empty($row[0])){$status="verificar";}else{$status=$row[0];} echo "<option>$status</option>";} echo "</select></form>"; 4) Depois de escolher o status, fazer uma relação dos irmãos correspondentes. E ao selecionar um dos irmãos da lista, ver todo o cadastro dele. astudy.php <body style="width:500px;margin:0 auto"> <div style=height:50px></div> <?php $mysqli=new mysqli("localhost","root","","astudy"); if(empty($_GET)){ $query=$mysqli->query("select status from tbpessoa group by status"); echo "<form>"; echo "<select name=status onchange=submit()><option>Selecione tipo de irmão</option>"; while($row=$query->fetch_array()){ if(empty($row[0])){$status="verificar";}else{$status=$row[0];} echo "<option>$status</option>";} echo "</select></form>"; exit;} if(isset($_GET['status'])){ $status=$_GET['status']; echo "<h2>$status</h2>"; if($status=="verificar"){$h4="imprimir para o irmão Murphy";} if($status=="adimplente"){$h4="merecem uma oração";} if($status=="inadimplente"){$h4="precisam de muitas admoestações";} echo "<h4>$h4</h4>"; if($status=="verificar"){ $query=$mysqli->query("select codp,pessoa,status from tbpessoa where status is null"); }else{ $query=$mysqli->query("select codp,pessoa,status from tbpessoa where status='$status'");} while($row=$query->fetch_assoc()){ echo "<a href=?irmao=".$row['codp'].">".$row['pessoa']."</a><br>";} echo "<p>"; echo "<input type=submit value=voltar onclick=location.replace('astudy.php')>"; exit;} if(isset($_GET['irmao'])){ $codp=$_GET['irmao']; $query=$mysqli->query("select * from tbpessoa where codp=$codp"); $row=$query->fetch_assoc(); var_dump($row); echo "<p>"; echo "<input type=submit value=voltar onclick=location.replace('astudy.php')>";}
  17. Esse código é bem bacana, eu aprendi que existe o <input type=reset>, ele limpa todos os outros <input>, e também o fetch_array( ), que dá para relacionar todos os campos, usando apenas número, e hoje eu também aprendi a alinhar duas divs por cima. Mas eu não tenho a extensão MySQL no PHP, assim usei o motor mysqli e fiz várias modificações no código original: cadastro1.php <title>CADASTRO</title> <body style="width:900px;margin:0 auto"> <form id=cadastro name=cadastro method=post action=processa.php> <table width=625 border=0 align=center> <h2 align=center>Dados da retirada: <tr><td width="69">Produto: <td width=546><input name=produto size=60 maxlength=50 required> <tr><td>Quantidade: <td><input name=quantidade type=number size=38 maxlength=35 required> <tr><td>Colaborador: <td><input name=colaborador size=60 maxlength=50 required> <tr><td><h3>Adicionais:</h3> <tr><td>Observações: <td><textarea name=obs id=obs cols=40 rows=3></textarea> <tr><td>Lote: <td><input name=lote size=38> APENAS PARA KITS DE PCR <tr><tr><td colspan=2><p> <input type=submit value="Concluir retirada!" /> &ensp; <input type=reset value="Limpar Campos preenchidos!"> <br> <p>&nbsp; </p> </table> </form> <div style=width:400;float:left> <fieldset><legend>Ultimas Saídas</legend> <?php $mysqli = new mysqli("localhost","root","","astudy"); $sql = "SELECT created,produto,quantidade,colaborador,id from retirada ORDER BY created desc"; $query = $mysqli->query($sql); while($row = $query->fetch_array()){ $id=$row[4]; echo "<p>". $row[0] . " | " . $row[1] . " | " . $row[2] . " | " . $row[3] . "<a href=processa?excluir=$id> Excluir</a></p>";} ?> </p> </fieldset> </div> <div style=width:400;display:inline-block> <fieldset><legend>Requisições</legend> <?php $query=$mysqli->query("select * from requisicao"); while($row=$query->fetch_array()){ echo "<p>".$row[1]."|".$row[2]."|".$row[3]."|".$row[4];} ?> </div> </body> </html> ------------------------------------------- processa.php <?php $mysqli=new mysqli("localhost","root","","astudy"); if(isset($_GET['excluir'])){ $id=$_GET['excluir']; $sql="delete from retirada where id=$id";} else { $produto=$_POST["produto"]; $quantidade=$_POST["quantidade"]; $colaborador=$_POST["colaborador"]; $obs=$_POST["obs"]; $lote=$_POST["lote"]; $sql="INSERT INTO `retirada` (`created` , `produto` , `quantidade` , `colaborador` , `obs` , `lote` , `id` ) VALUES (NOW(),'$produto', '$quantidade', '$colaborador', '$obs', '$lote', '')";} $query=$mysqli->query($sql); header('location:cadastro1.php');
  18. <?php if(!isset($_GET['email'])){ echo "<form><input name=email></form>";exit;} $email=$_GET['email']; $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbpessoa where email='$email'"); $num_rows=mysqli_num_rows($query); echo "<b>email $email</b>"; if($num_rows==0){echo "email não cadastrado";exit;} $vinculo=$query->fetch_all(); var_dump($vinculo);
  19. Solução em andamento... 1) Entender o que é categoria e subcategoria. Na minha cabeça veio isso: id descrição categoria subcategoria 1 blusa rosa roupa feminina blusa 2 blusa azul roupa masculina blusa 3 saia rosa roupa feminina saia 4 calça azul roupa mascuina calça 2) Montar o banco de dados, aqui vou usar o MySQL CREATE TABLE `tbvestuario` ( `id` int NOT NULL AUTO_INCREMENT, `descricao` varchar(100) COLLATE utf8mb4_general_ci NOT NULL, `categoria` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `subcategoria` varchar(100) COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci 3) Como listar as categorias no PHP? <?php $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); $query = $pdo->query("select categoria from tbvestuario"); $categorias = $query->fetchAll(PDO::FETCH_OBJ); foreach($categorias as $categorias){echo $categorias->categoria."<br>";} 4) Apareceram muitas categorias repetidas, como agrupá-los? <?php $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); $query = $pdo->query("select categoria from tbvestuario group by categoria order by categoria"); $categorias = $query->fetchAll(PDO::FETCH_OBJ); foreach($categorias as $categorias){echo $categorias->categoria."<br>";} 5) Como colocar as categorias numa caixa de seleção? <?php $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); $query = $pdo->query("select categoria from tbvestuario group by categoria order by categoria"); $categorias = $query->fetchAll(PDO::FETCH_OBJ); echo "<form>"; echo "<select name=categoria onchange=submit()><option value=''>Escolha uma opção</option>"; foreach($categorias as $categorias){ $categoria=$categorias->categoria; echo "<option value='$categoria'>$categoria</option>";} echo "</select>"; echo "</form>"; 6) Como pegar as subcategorias? <?php $pdo=new PDO("mysql:host=localhost;dbname=astudy","root",""); if(!isset($_GET['categoria'])){ $query = $pdo->query("select categoria from tbvestuario group by categoria order by categoria"); $categorias = $query->fetchAll(PDO::FETCH_OBJ); echo "<form>"; echo "<select name=categoria onchange=submit()><option value=''>Escolha uma categoria</option>"; foreach($categorias as $categorias){ $categoria=$categorias->categoria; echo "<option value='$categoria'>$categoria</option>";} echo "</select>"; echo "</form>";exit;} $categoria=$_GET['categoria']; echo "Categoria $categoria <p>"; $query = $pdo->query("select subcategoria from tbvestuario where categoria='$categoria' group by subcategoria order by subcategoria"); $subcategorias = $query->fetchAll(PDO::FETCH_OBJ); echo "<select name=subcategoria><option>Veja as subcategorias</option>"; foreach($subcategorias as $subcategoria){ echo "<option>$subcategoria->subcategoria</option>";} echo "</select><p>"; echo "<input type=submit value='Começar de novo' onclick=location.replace('astudy.php')>"; 7) Para melhorar o visual, recomendo <body style="width:300;margin:0 auto"> ou o Bootstrap 5.3
  20. Esse é um belo código, o problema é como testar. Na base da tentativa e erro, eu criei no banco de dados astudy a tabela retirada com a estrutura que está na foto anexo nessa mensagem. E também modifiquei o código para que seja possível testá-lo. Para testar, o nome do arquivo tem que ser necessariamente retirada.php: <style type="text/css"> .style1 {color: #FF0000;font-size: medium;} </style> <script> function alerta(){alert("procedimento ainda não definido")} </script> <?php $pdo = new PDO("mysql:host=localhost;dbname=astudy","root",""); if ($_SERVER["REQUEST_METHOD"] == "POST") { $produtoErro = null; $quantidadeErro = null; $colaboradorErro = null; if (!empty($_POST)) {$validacao = True;$novoUsuario = False; if (!empty($_POST['produto'])) {$produto = $_POST['produto']; } else {$produtoErro = 'Insira o produto!';$validacao = False;} if (!empty($_POST['quantidade'])) {$quantidade = $_POST['quantidade']; } else {$quantidadeErro = 'Digite a quantidade!';$validacao = False;} if (!empty($_POST['colaborador'])) {$colaborador = $_POST['colaborador']; } else {$colaboradorErro = 'Digite seu nome!';$validacao = False;}} $setor = $_POST['setor']; $observacao = $_POST['observacao']; $lote = $_POST['lote']; if ($validacao) { $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO retirada (data, produto, quantidade, colaborador, setor, observacao, lote, valida_op) VALUES(NOW(),?,?,?,?,?,?,'valida')"; $q = $pdo->prepare($sql); $q->execute(array($produto, $quantidade, $colaborador, $setor, $observacao, $lote)); header("Location: retirada.php");}}?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> <title>Retirada</title> </head> <body> <div class="container"> <div clas="span10 offset1"> <div class="card"> <div class="card-header"> <h3 class="well"> Cadastro de retirada </h3> </div> <div class="card-body"> <form class="form-horizontal" action="retirada.php" method="post"> <div class="control-group <?php echo !empty($produtoErro) ? 'error ' : ''; ?>"> <label class="control-label">Produto:</label><span class="style1">*</span> <div class="controls"> <input size="50" class="form-control" name="produto" id="produto" type="text" placeholder="Digite o produto" value="<?php echo !empty($produto) ? $produto : ''; ?>"> <?php if (!empty($produtoErro)): ?> <span class="text-danger"><?php echo $produtoErro; ?></span> <?php endif; ?> </div></div> <div class="control-group <?php echo !empty($quantidadeErro) ? 'error ' : ''; ?>"> <label class="control-label">Quantidade:</label><span class="style1">*</span> <div class="controls"> <input size="80" class="form-control" name="quantidade" type="number" placeholder="Digite a quantidade" value="<?php echo !empty($quantidade) ? $quantidade : ''; ?>"> <?php if (!empty($quantidadeErro)): ?> <span class="text-danger"><?php echo $quantidadeErro; ?></span> <?php endif; ?> </div></div> <div class="control-group <?php echo !empty($colaboradorErro) ? 'error ' : ''; ?>"> <label class="control-label">Colaborador:</label><span class="style1">*</span> <div class="controls"> <input size="35" class="form-control" name="colaborador" type="text" placeholder="Digite seu nome" value="<?php echo !empty($colaborador) ? $colaborador : ''; ?>"> <?php if (!empty($colaboradorErro)): ?> <span class="text-danger"><?php echo $colaboradorErro; ?></span> <?php endif; ?> </div></div> <div class="control-group"> <label class="control-label">Setor:</label> <div class="controls"> <input size="40" class="form-control" name="setor" type="text" placeholder="Setor de destino"> </div></div> <div class="control-group"> <label class="control-label">Observações:</label> <div class="controls"> <input size="40" class="form-control" name="observacao" type="text" placeholder="Observações"> </div></div> <div class="control-group"> <label class="control-label">Lote(APENAS para PCR):</label> <div class="controls"> <input size="40" class="form-control" name="lote" type="text" placeholder="Lote do(s) kit(s) de amplificação"> </div></div> </br><h6 class="well" >Campos com <span class="style1">*</span> são obrigatórios</h6> <div class="form-actions"> <br/> <button type="submit" class="btn btn-success">Adicionar</button> <a type="btn" class="btn btn-default" onclick=alerta()>Voltar</a> </div> </form> <div class="row"> <table align="center"> <th align="center">Últimas retiradas:</th> </table> <table class="table table-striped"> <thead> <tr> <th scope="col">Id</th> <th scope="col">Data(A-M-D H:M:S)</th> <th scope="col">Produto</th> <th scope="col">Quantidade</th> <th scope="col">Colaborador</th> <th scope="col"></th> </tr> </thead> <tbody> <?php $sql = 'SELECT * FROM retirada WHERE valida_op LIKE "valida" ORDER BY data DESC LIMIT 7'; date_default_timezone_set('America/Sao_Paulo'); foreach($pdo->query($sql)as $row){ echo " <tr><th scope=row>". $row['id'] ." <td>". $row['data'] ." <td>". $row['produto'] ." <td align=center>". $row['quantidade'] ." <td align=center>". $row['colaborador'] ." <td width=250> <a align=right class='btn btn-danger' onclick=alerta()>CANCELAR</a>";}?> </tbody></table></div></div></div></div></div></div></body></html> Eu ainda não tenho a menor experiência com validação e autenticação, mas estudando esse código eu aprendi a ver o problema de misturar JavaScript, HTML e PHP numa só página: o problema está nas aspas. No caso desse código, eu tive que criar uma função de alerta em separado, não dava para embutir aonde ele foi necessário (ou seja, no botao Voltar e Cancelar).
  21. A orientação precisa ser corrigida para array_push($formacao,array('inicio' => $_POST['ano'])); O <form> também precisa ser corrigido para <form method=post> Gostei do código, ele lembra as minhas primeiras páginas no HTML, tudo ficava encostado no canto esquerdo do monitor. Para botar no meio, eu fiz isso <body style="width:330px;margin: 0 auto"> e o código final ficou assim: <?php $formacao = array(array('inicio' => 2006),array('inicio' => 2013)); ?> <html> <head> <title></title> </head> <body style="width:330px;margin: 0 auto"> <h2>Formação:</h2> <?php foreach ($formacao as $curso): echo "<p>".$curso['inicio']."</p>"; endforeach; ?> <form method=post> <fieldset> <legend>acrescentar mais uma data ao array</legend> <label>tarefa: <input type="text" name="ano" /></label> <input type="submit" value="cadastrar" /> </fieldset> </form> <?php if (isset($_POST['ano'])){ array_push($formacao,array('inicio' => $_POST['ano'])); echo "<h2>ADICIONADOS:</h2>"; foreach ($formacao as $curso): echo "<p>".$curso['inicio']."</p>"; endforeach;} ?>
  22. Estou estudando o PHP já faz dois anos, mas só hoje é que eu tive coragem de mexer com um arquivo xml, mais exatamente a NFe. O PHP tem um comando chamado xpath( ) que promete procurar qualquer coisa dentro do xml, mas ele não funcionou comigo. O jeito mais prático de ver uma NFe é usando o navegador, mas se você precisa trabalhar com as informações da NFe, tipo calcular o custo de um produto antes de chegar no estabelecimento, nesse caso o PHP pode ajudar bastante. A listagem a seguir mostra como o PHP pega o arquivo e põe numa variável. A listagem mostra como converter um xml num json, mas isso não ajuda muito. O grande problema do xml é que ele tem um "node" (eu chamo de "chave") chamado @attributes, levei um tempão para descobrir como pegar os elementos que estão debaixo dele. <?php $xml=simplexml_load_file('teste.xml'); $jxml=json_decode(json_encode($xml)); echo $NFe=$xml->NFe->infNFe['Id']; echo "<br>"; echo $NFe=$xml->NFe->infNFe->attributes()->Id; echo "<br>"; echo $NFe=$jxml->NFe->infNFe->{'@attributes'}->Id;
  23. <?php if(!isset($_GET['negocio'])){ echo " <form> <table> <tr><td>Valor a ser parcelado <td><input name=negocio[] autofocus> <tr><td>Valor da 1a. parcela <td><input name=negocio[] onchange=submit()> </table> </form> ";exit;} $negocio=$_GET['negocio']; $compra=(float)$negocio[0]; $parcelas=0; for($i=1;$i<=count($negocio)-1;$i++){$parcelas+=$negocio[$i];} if($parcelas<$compra){ echo "<form>"; echo "<table>"; echo "<tr><td>Valor a ser parcelado<td><input name=negocio[] value=".$negocio[0].">"; for($i=1;$i<=count($negocio)-1;$i++){ echo "<tr><td>Valor da $i.a parcela<td><input name=negocio[] value=".$negocio[$i].">";} echo "<tr><td>Valor da $i.a parcela<td><input name=negocio[] autofocus onchange=submit()>"; exit;} $negocio[$i-1]=$compra-$parcelas+(float)($negocio[$i-1]); echo "Negócio de R$ ".$negocio[0]." está fechado, com as seguintes parcelas:<br>"; for($i=1;$i<=count($negocio)-1;$i++){ echo "Parcela $i: ".$negocio[$i]."<br>";} echo "<input type=submit value=Novo_negocio onclick=location.replace('astudy.php')>";
×
×
  • Criar Novo...