
Frank K Hosaka
Membros-
Total de itens
1.623 -
Registro em
-
Última visita
Tudo que Frank K Hosaka postou
-
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')>";
- 3 respostas
-
- programação
- php
- (e %d mais)
-
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'.
-
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);
- 1 resposta
-
- rede neural
- php
- (e %d mais)
-
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);
-
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í?
- 1 resposta
-
HTTP vs HTTPS (semrush.com)
-
Ajuda: Como criar Seleção de preços na venda.
pergunta respondeu ao Enver Garcia de Frank K Hosaka em PHP
<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";} -
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.
-
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')>";}
-
Ajuda para criar tabela com dados de uma consulta mysql e botão excluir registro a cada linha
pergunta respondeu ao marcusufsj de Frank K Hosaka em PHP
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!" />   <input type=reset value="Limpar Campos preenchidos!"> <br> <p> </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'); -
Autocomplete vinculo com outro campo
pergunta respondeu ao thiagoaf19 de Frank K Hosaka em Tutoriais & Dicas - PHP
<?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);- 1 resposta
-
- javascript
- jquery
-
(e %d mais)
Tags:
-
COMO ATUALIZAR UM SELECT AO SELECIONAR OUTRO SELECT
pergunta respondeu ao adrsublimacao de Frank K Hosaka em PHP
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 -
Validar campo verificando se o preenchimento está correto
pergunta respondeu ao marcusufsj de Frank K Hosaka em PHP
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). -
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;} ?>
-
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;
-
carrinho de compras
pergunta respondeu ao Rafael Andrade de Frank K Hosaka em Tutoriais & Dicas - PHP
<?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')>"; -
No meu banco de dados eu tenho 8 fotos, queria publicar 3 fotos na primeira linha, 3 fotos na segunda linha e 2 fotos na terceira linha. Esse é um tópico que deveria pertencer ao CSS, mas como envolve o MySQL e o PHP, achei melhor colocar o tópico aqui. Na internet existem vários exemplos em CSS tipo grid, ou <div><div></div><div></div></div> e depois segue a sequência, mas eu não consegui adaptar no PHP. O máximo que eu consegui foi publicar três fotos na primeira linha. Já a segunda linha é um desastre, ao invés de ir na linha seguinte, o PHP acaba colocando do lado da primeira linha, assim pedi para o programa parar na primeira linha: <style> .linha{width:600px;margin: 0 auto} .linha div{width:150px;height:150px;padding:10px;display:inline-block} .linha img{width:100%} </style> <?php echo "<div class=linha>"; $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbfotos"); $num_rows=mysqli_num_rows($query); for($i=1;$i<=$num_rows;$i++){ $row=$query->fetch_assoc(); echo "<div>"; $foto=$row['foto']; echo "<img src='fotos/$foto'>"; echo $foto; echo "</div>"; if($i%3==0){exit;echo "<div class=linha>";}} echo "</div>"; A solução: Com a ajuda do painel de inspeção do navegador, eu vi que a di<visão da linha estava misturada com a divisão da coluna. Esqueci de fechar a divisão da linha. Eu dei uma olhada nos tutoriais sobre a <div> e percebi o meu enorme erro é que eu defini a largura da linha, mas esqueci de definir a altura. Agora sim, eu aprendi como usar o <div>! <style> .linha{width:600px;height:250px;margin: 0 auto;} .linha div{width:150px;height:150px;padding:10px;display:inline-block} .linha img{width:100%} </style> <?php echo "<div class=linha>"; $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbfotos"); $num_rows=mysqli_num_rows($query); for($i=1;$i<=$num_rows;$i++){ $row=$query->fetch_assoc(); echo "<div>"; $foto=$row['foto']; echo "<img src='fotos/$foto'>"; echo $foto; echo "</div>"; if($i%3==0){echo "</div><div class=linha>";}} echo "</div>";
-
Essa é uma questão de 2003 que pergunta se o banco de dados foi atualizado. Essa é uma dúvida que eu também sempre tive, e que resolvi assim: if(!$query){echo "não deu nada certo"; exit;} astudy.php <?php $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select codprod,prod from tbprod limit 10"); $produtos=$query->fetch_all(MYSQLI_ASSOC); if(!$produtos) {echo "erro ao exibir produtos\n"; exit;} if(isset($_GET['codprod'])){ $codprod=$_GET['codprod']; $novadescricao=$_GET['novadescricao']; $query=$mysqli->query("update tbprod set prod='$novadescricao' where codprod=$codprod"); if(!$query){echo "não deu certo!";exit;} header("location:astudy.php");} ?> <form> <table cellspacing=2 cellpadding=2 border=0 align=center> <tr><td><td> <select name=codprod onchange=inpnova.focus()><option value="">Selecione um produto</option> <?php foreach($produtos as $produto){ echo "<option value=".$produto['codprod'].">".$produto['prod']."</option>";} ?> </select> <td>Alterar para <input id=inpnova name=novadescricao></table></form>
-
Passei o dia todo estudando a função __construct( ). Ele não é nada fácil, o máximo que eu consegui com o meu método científico de tentativa e erro foi isso: <?php class conexao extends \PDO { public $bd=null; public $dsn="mysql:dbname=astudy;host=localhost"; public $username='root'; public $password=''; function __construct(){ $this->bd = new PDO($this->dsn,$this->username,$this->password); return $this->bd;}} $frank= new conexao; $query=$frank->bd->query("select * from tbprod"); var_dump($query->fetch()); Eu tentei escrever $frank->query, mas o PHP reclamou que eu não inicializei o objeto PDO, que eu deveria fazer uma referência ao construtor. A única maneira que eu vi para fazer referência ao construtor foi puxando a propriedade bd, ou seja, $frank->bd Na montagem da classe, note que coloquei todas as variáveis como público. Você pode mudar tudo para private, menos o $bd.
-
A junção de três tabelas no Laravel Eloquent
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
Eu fiz mais um teste, e percebi que não preciso definir a relação da tbprod com a tbhistprod e nem da tbpessoa com a tbhistprod. Eu só preciso definir a relação no Model da tbhistprod com as outras duas tabelas assim: app>Models>tbhistprod.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class tbhistprod extends Model{ use HasFactory; protected $table="tbhistprod"; public function produtos(){return $this->belongsTo(tbprod::class,'codprod');} public function pessoas(){return $this->belongsTo(tbpessoa::class,'codp');}} Note que apareceram os campos 'codprod' e 'codp' nas relações, senão o Eloquent iria procurar o campo 'id' como chave primária nas outras tabelas, o que não é o caso. O controller ficou assim: app>Http>Controllers>DiarioController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\tbhistprod; class DiarioController extends Controller { public function detalhe(Request $request){ $produtos=tbhistprod::with('produtos','pessoas')->where('lcto',$lcto)->get(); $soma=$produtos->sum('custototal'); return view('detalhe',compact('detalhe','contas','produtos'),['soma'=>$soma]);}} E, finalmente, no detalhe.blade.php, para obter o nome do produto, você precisa mencionar a relação assim: {{{$produtos->produtos->prod}}} e para obter o nome do fornecedor, assim {{{$produtos->pessoas->pessoa}}} -
Esse sim é um json de verdade! Eu consegui isso itemId 41eea8db-b3f8-4807-97b0-384f1b40dcb7 categoryId 371b26a6-86e5-46b8-9a19-3d379afae666 itemExternalCode c01-i001 categoryName Categoria Item Normal categoryIndex 2 itemName Sanduíche itemDescription Descrição do item... logosUrls 0 elementos itemIndex 0 itemPrice 20 itemMinSalePrice 20 itemSchedules 0 elementos itemOptionGroups 2 elementos e mais uns dez desse tipo, com o código: <?php $teste='[ etc etc ]'; $jteste=json_decode($teste); // var_dump($jteste); echo "<table>"; foreach($jteste as $j){ echo " <tr><td>itemId<td>$j->itemId <tr><td>categoryId<td>$j->categoryId <tr><td>categoryName<td>$j->categoryName <tr><td>categoryIndex<td>$j->categoryIndex <tr><td>itemName<td>$j->itemName <tr><td>itemDescription<td>$j->itemDescription <tr><td>logosUrls<td>".count($j->logosUrls)." elementos <tr><td>itemIndex<td>$j->itemIndex <tr><td>itemPrice<td>".$j->itemPrice->value." <tr><td>itemMinSalePrice<td>$j->itemMinSalePrice <tr><td>itemSchedules<td>".count($j->itemSchedules)." elementos <tr><td>itemOptionGroups<td>".count($j->itemOptionGroups)." elementos <tr height=50px> "; } Esse json tem centenas de itens, eu só listei alguns. Tem algumas chaves que não têm a propriedade itemExternalCode, logo vai dar problema se você pedir para imprimir. Alguns itens são arrays, você não pode imprimir diretamente, mas você pode contar os elementos. Para imprimir, por exemplo, o item $j->logosUrls, você teria que fazer algo do tipo $logo=$j->logosUrls; foreach($logo as $L){echo $L->campo."<br>";} Para saber quem é uma propriedade ou um array, você precisa dar uma olhada antes no objeto através do comando var_dump( ). Espero ter ajudado.
-
Achei isso na internet: Moodle in English: Exception - Argument 1 Error
-
Não consegui transformar o string em json usando json_decode json_encode do PHP. Agora, vou pegar uma chave e trabalhar por parte, e ver se encontro algum padrão. Peguei a primeira chave "itemId" e eu consegui essas chaves: itemId categoryId itemExternalCode categoryName categoryIndex itemName itemDescription logosUrls itemIndex itemPrice itemMinSalePrice itemSchedules itemOptionGroups itemGeneralTags itemProductTags eu usei esse código: <?php $teste=' {"itemId":"961c2637-5d9a-3e23-8bb6-beace6ea5592", etc etc }'; $jteste=json_decode($teste); foreach($jteste as $key=>$value){echo $key."<br>";} Já a última chave itemId, não consegui transformar em json. Visualmente ele não segue o padrão da primeira chave com que trabalhei. Eu desconfio que isso daí é um arquivo XML, e nisso eu não tenho a menor experiência. Tentei importar no Microsoft Excel, mas não ajudou muito.
-
A junção de três tabelas no Laravel Eloquent
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
O código que publiquei não funciona, pois eu não segui a nomenclatura sugerida pelo manual do Laravel. A chave primária da tbprod é codprod e não id. A chave primária da tbpessoa é codp e não id. Logo, para o código acima funcionar, ela tem que ser consertada assim: <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class tbhistprod extends Model{ use HasFactory; protected $table="tbhistprod"; public function relProdutos(){return $this->belongsTo(tbprod::class,'codprod');} public function relPessoas(){return $this->belongsTo(tbpessoa::class,'codp');}}