Ir para conteúdo
Fórum Script Brasil

Frank K Hosaka

Membros
  • Total de itens

    1.623
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Desde 1990 o meu conhecimento em SQL é precário. Naquela época, eu sabia que o lançamento contábil era formado pelos campos (contad, contac, valor), mas eu não tinha a menor ideia de como transformar o valor em débito e crédito. Então, eu apelei para a gambiarra. Mudei a estrutura do lançamento para (conta,debito,credito). Só em 2022 é que eu tive a coragem de fazer a coisa certa. Agora, o problema é como separar o valor em débito e crédito. Hoje eu consegui encontrar um tutorial de como fazer um balancete nesse endereço: MySQL, Banco de Dados | SALDO DE DEBITO E CREDITO NO MESMO REGISTRO - MYSQL - Fórum DevMedia, tentei adaptar aqui no meu projeto, mas eu não consegui. Eu sou péssimo em SQL, mas usando o terminal do MySQL Workbench, finalmente eu consegui separar o valor do débito e crédito, graças a Deus: select contad, contac, (case when contad>0 then valor end) debito, (case when contac>0 then valor end) credito from tbdiario; Em 1990, eu não teria a menor chance de criar um código desses. Nem em 2022. Tudo depende da sorte de encontrar o tutorial e entendê-lo.
  2. Hahahahahaha... muito obrigado mesmo, eu pensei que estava usando um editor imprestável.
  3. Eu recebi muitas mensagens de erro de sintaxe no VS Code na hora que fui testar o seu primeiro Array. Ele ficou assim: <?php $array=Array ( [0] => Array ( "estab" => 2, "serie" => "OC", "numero" => 56834, "seqItem" => 1, "item" => 56834, "descricao" => "MOSAIC - 20.00.20", "qtd" => 12, "grupo" => 24002, "descricaoGrupo" => "FERTILIZANTES CONVENCIONAIS", "dataProgramada" => "10-11-22", "dataInclusao" => "01-11-22", "obs" => null) ); As chaves são aspadas, as chaves e os valores são separados por vírgulas, a chave e o valor sempre vem em par (nunca vem sozinho como acontece com [obs] do seu exemplo). Que editor de texto você usa?
  4. Eu encontrei uma resposta afirmando que o Brasil tem 5.570 cidades em 2016, outra afirma que o Brasil tem 5.565 cidades em 2022, e no Wikipedia eu encontrei 5568 cidades. Todas elas estão aqui: <?php // fonte: https://pt.wikipedia.org/wiki/Lista_de_munic%C3%ADpios_do_Brasil // salvei no diretorio c:\wamp64\www\astudy\municipios.html $municipios=file_get_contents("municipios.html"); $pos0=0; for($i=1;$i<=5568;$i++){ $pos1=strpos($municipios,"<li>",$pos0); $pos1a=strpos($municipios,"title",$pos1); $pos1b=strpos($municipios,">",$pos1a)+1; $pos1c=strpos($municipios,"<",$pos1b); $pos2=strpos($municipios,"</li>",$pos1); echo substr($municipios,$pos1b,$pos1c-$pos1b); echo " => "; echo substr($municipios,$pos1c+6,2); echo "<br>"; $pos0=$pos2;}
  5. Achei a solução: <?php $text = "Afonso Cláudio"; echo utf8_decode($text);
  6. Encontrei na internet uma lista com todas as cidades do Brasil nesse endereço: https://gist.githubusercontent.com/zerobugs-oficial/53d692e5bec98d4b805dc5501dd5b157/raw/b9c4d0f538a83d5abf2d07d901055059fd20f442/cidades_estados_brasil.sql Mas ao invés de Maranhão, encontrei Maranhão. Tentei usar o editor de texto para tentar salvar como UTF-8 ou ANSI, mas nada mudou. Tentei usar o comando PHP htmlspecialchars_decode("Maranhão"); mas nada mudou. Alguém tem algum truque legal que transforme texto estranho em menos estranho?
  7. astudy.php -------------------------------------------------- <?php function tentativa($texto){ $tamanhopadrao=strlen("2020-05-26"); $tamanho=strlen($texto); $texto=substr($texto,0,$tamanho-$tamanhopadrao); $novotamanho=strlen($texto); if(strpos($texto,"Palavras")==35) {return substr($texto,43,$novotamanho);} if(strpos($texto,"coisa")==43) {return substr($texto,48,$novotamanho);} } $texto1="Qualquer texto de qualquer tamanho.Palavras65.00002020-05-26"; $texto2="Qualquer texto de qualquer tamanho.Qualquercoisa127.00002020-05-26"; $teste1=tentativa($texto1); $teste2=tentativa($texto2); echo "$teste1 $teste2";
  8. O que eu consegui entender é que se trata de um orçamento. No meu projeto, tenho o seguinte código: <?php $menu="Orçamento"; require 'menu.php'; echo "<script>document.title='Orçamento'</script>"; // abrir o pedido pela tbsupervariavel echo "<div><table class='table table-striped'>"; $query=$mysqli->query("select ped from tbsupervariavel"); $row=$query->fetch_assoc(); $ped = $row['ped']; echo "<td><form method='post'><input type='submit' value='anterior'><input type='hidden' name='anterior' value=$ped></form>"; echo "<td><font color=red>Pedido $ped "; $query=$mysqli->query("update tbsupervariavel set end='orcamento.php'"); $query=$mysqli->query("select * from tbpedido where ped=$ped"); $row=$query->fetch_assoc(); $diaped = df($row['dia']); $total = dec($row['total']); $codp = $row['codp']; echo "de $diaped"; echo "<td><form method='post'><input type='submit' value='novo'><input type='hidden' name='novo' value=$ped></form></table></div>"; if (empty($codp)) { $java='<a onclick=location.replace("pessoa.php")>Mudar de Cliente</a>'; $dados = "<a href='pessoa.php'>Selecione um cliente</a>"; $pessoa = $dados; echo "<script>pessoadiv.innerHTML='$java'</script>"; } else { $query=$mysqli->query("select * from tbpessoa where codp=$codp"); $row=$query->fetch_assoc(); $pessoa=$row['pessoa']; $end=$row['end']; $cnpj=$row['cnpj']; $tel=$row['tel']; $nota=$row['nota']; $java1='location.replace("pessoa.php")'; $java2='inpg.value='.$codp.';inpg.name="detalhe";frmg.action="pessoa.php";frmg.submit()'; $dados="<details><summary><b>$pessoa</b></summary>Endereço:<b> $end</b>" ."<br>CNPJ CPF: <b>$cnpj</b><br>Telefone:<b> $tel</b><br>Nota:<b> $nota</b>" ."<br><font color=red><a onclick=$java1>Mudar de Cliente</a>" ."<br><font color=red><a onclick=$java2>Atualizar Cliente</a>" ."</details>";} // atualizar produto selecionado if (isset($_GET['atualizar'])){ $codprod = $_GET['atualizar']; $query=$mysqli->query("update tbsupervariavel set codprod=$codprod"); header("location:detalheproduto.php");} //pedido novo if (isset($_POST['novo'])) { $query=$mysqli->query("select * from tbpedido order by ped desc"); $row = $query->fetch_assoc(); $ultped = $row['ped']; $query=$mysqli->query("update tbsupervariavel set ped = $ultped"); $total = $row['total']; if ($total>0){ $dia=date('Y-m-d'); $ultped = $ultped + 1; $query=$mysqli->query("insert into tbpedido (ped,dia) values ($ultped,'$dia')"); $query=$mysqli->query("update tbsupervariavel set ped = $ultped");} echo "<script>location.replace('orcamento.php');</script>";} //pedido anterior if (isset($_POST['anterior'])){ if ($ped > 1) { $ped=$ped-1; $query=$mysqli->query("update tbsupervariavel set ped=$ped"); echo "<script>location.replace('orcamento.php');</script>";}} //rotina para excluir item do pedido if (isset($_POST['excluir'])) { $id = $_POST['excluir']; $query=$mysqli->query("delete from tbhistped where id=$id"); $query=$mysqli->query("select sum(subtotal) as total from tbhistped where ped = $ped"); $total = $query->fetch_assoc()['total']; if (empty($total)) {$total=0;} else {$total=round($total,2);} $query=$mysqli->query("update tbpedido set total = $total, dia = '".date('Y-m-d')."' where ped = $ped"); echo "<script>location.replace('orcamento.php')</script>";} //detalhes do pedido atual echo "<div><table class='table table-striped linha2'><th>Produto<th>Qt<th>Un<th>Preço<th>Total"; $sql="select tbhistped.id,tbhistped.ped, tbhistped.codprod, tbhistped.qt as qt, tbhistped.unitario as unitario, tbhistped.subtotal,"; $sql.="tbprod.prod as prod, tbprod.un as un "; $sql.="from tbhistped inner join tbprod on tbhistped.codprod = tbprod.codprod and tbhistped.ped = $ped order by tbhistped.id"; $query = $mysqli->query($sql); while ($row = $query->fetch_assoc()) { $un = $row['un']; $id = $row['id']; $un = "<a href='#' onclick='excluir($id)'>$un</a>"; echo "<tr><td>".$row['prod']."<td align=right>".dec($row['qt'])."<td>$un<td align=right>".dec($row['unitario']); echo "<td align=right>".dec($row['subtotal']); } //incluir item no pedido (frontend) if (isset($_POST['inclusao'])) { $prod=$_POST['inclusao']; $query = $mysqli->query("select * from tbprod where prod='$prod'"); if($query==false){header('orcamento.php');} $row=$query->fetch_assoc(); $codprod=$row['codprod']; $custo = $row['custo']; $margem = $row['marg']; $custo = pvenda($custo,$margem); // calculo do preço de venda echo "<tr><td>".$row['prod']."</td><td>"; echo "<form method='post'><input name='qt' autocomplete=off id='inpqt' size='2' >"; echo "<input type='hidden' name='codprod' value=$codprod>"; echo "<input type='hidden' name='unitario' value=$custo>"; echo "<input type='hidden' name='ped' value=$ped></td><td>".$row['un'].""; echo "</td><td align=right>$custo</td></td>"; echo "<tr><td>$dados</form></table></div>"; echo "<script>inpqt.focus()</script>";} else { $query1=$mysqli->query("select prod from tbprod order by prod"); $java="inpg.name='inclusao';inpg.value=value;frmg.submit()"; echo "<tr><td><input type=text id=inproduto list=produto onchange=$java placeholder=produto autofocus>"; echo "<datalist id='produto'>"; while($row1=$query1->fetch_assoc()) { $prod=$row1['prod']; echo "<option>$prod</option>";} echo "</datalist><tr><td>"; echo "$dados"; echo "<td><td><td><td><b>".$total.'</table></div>';} //incluir item no pedido (backend) if (isset($_POST['qt'])) { $qt=deca($_POST['qt']); $codprod = $_POST['codprod']; $unitario = deca($_POST['unitario']); $subtotal = round($qt * $unitario,2); $ped = $_POST['ped']; $query=$mysqli->query("insert into tbhistped (ped,qt,codprod,unitario,subtotal) values ($ped,$qt,$codprod,$unitario,$subtotal)"); $query=$mysqli->query("select sum(subtotal) as total from tbhistped where ped = $ped"); $total = $query->fetch_assoc()['total'];$total=round($total,2); $query=$mysqli->query("update tbpedido set total = $total, dia = '".date('Y-m-d')."' where ped = $ped"); echo "<script>location.replace('orcamento.php')</script>";} ?>
  9. Foi em 2020 que comecei a estudar o PHP. Naquela época usava o Notepad+ para editar o código PHP e o navegador para testar o código. Em 2022, comecei a estudar o Laravel (é um novo tipo de PHP, com nova gramática, e força você codificar em pelo menos três partes separadas, o controlador, o visualizador e o roteador). O Laravel mudou tudo, a começar pelo editor de código, substitui o Notepad+ pelo Visual Studio Code. Tem muita coisa que eu consegui fazer no PHP mas não consegui fazer no Laravel. Para resolver isso, eu tive que melhorar o banco de dados. Na hora que eu tentei otimizar o banco de dados é que eu percebi que ele tem um gigantesco erro de lógica, ele não respeita a definição de lançamento contábil. Então, decidi deixar o Laravel de lado e comecei a consertar o banco de dados, com a ajuda de uma caneta, um papel e uma calculadora. Percebi que estava escrevendo a mesma coisa e fazendo o mesmo tipo de cálculo, então eu comecei a codificar em PHP. Para testar o PHP, eu usei o navegador. E o meu notebook ficou com três janelas abertas, um no MySQL, outro no PHP (Visual Studio) e outro no navegador, isso é janela demais! Eu pensei: que bom seria se eu pudesse trabalhar em apenas uma janela! Hoje eu decidi usar o comando Executar > Executar sem depuração, e eu recebi a resposta do código PHP na janela Console de Depuração do Visual Studio. Para deixar o MySQL de lado, só preciso melhorar o código PHP para que o PHP olhe para mim o que acontece lá no banco de dados. Esse Visual Studio Code é bom demais!
  10. Nem tudo você pode escrever em caixa baixa no PHP, tipo $_SESSION, $_GET, $_POST, $_SEVER.
  11. Já consegui criar 100 lançamentos contábeis. Mas é bem trabalhoso. Para facilitar o trabalho usei o PHP, criei cinco códigos: astudy.php --------------------------- <?php // um débito e um crédito genérico $mysqli=new mysqli("localhost","root","","astudy"); for($lcto=86;$lcto<=100;$lcto++){ // base=182 $docto1=$lcto*2+10; $docto2=$docto1+1; $query=$mysqli->query("select * from tbdiariobk where docto=$docto1"); $row=$query->fetch_assoc(); $dia=$row['dia']; $contad=$row['conta']; $valor=$row['debito']; $hist=$row['hist']; $query2=$mysqli->query("select * from tbdiariobk where docto=$docto2"); $row2=$query2->fetch_assoc(); $contac=$row2['conta']; if($valor!=$row2['credito']){echo "valores divergentes em ".$row2['docto'];exit;} $sql="insert into tbdiario (lcto,dia,contad,contac,valor,hist) values ($lcto,'$dia',$contad,$contac,$valor,'$hist')"; $query3=$mysqli->query($sql); $row3=$query->fetch_assoc();} astudy2.php ---------------------------------- <?php // multiplos débitos $mysqli=new mysqli("localhost","root","","astudy"); $lcto=74; for($docto1=154;$docto1<=158;$docto1++){ $query=$mysqli->query("select * from tbdiariobk where docto=$docto1"); $row=$query->fetch_assoc(); $dia=$row['dia']; $contad=$row['conta']; $valor=$row['debito']; $hist=$row['hist']; $sql="insert into tbdiario (lcto,dia,contad,valor,hist) values ($lcto,'$dia',$contad,$valor,'$hist')"; $query3=$mysqli->query($sql); $row3=$query->fetch_assoc();} astudy3.php -------------------------------------------------------- <?php // um crédito $mysqli=new mysqli("localhost","root","","astudy"); $lcto=85; $docto1=575; $query=$mysqli->query("select * from tbdiariobk where docto=$docto1"); $row=$query->fetch_assoc(); $dia=$row['dia']; $contac=$row['conta']; $valor=$row['credito']; $hist=$row['hist']; $sql="insert into tbdiario (lcto,dia,contac,valor,hist) values ($lcto,'$dia',$contac,$valor,'$hist')"; $query3=$mysqli->query($sql); $row3=$query->fetch_assoc(); astudy4.php ----------------------------------------------- <?php // um débito $mysqli=new mysqli("localhost","root","","astudy"); $lcto=85; $docto1=575; $query=$mysqli->query("select * from tbdiariobk where docto=$docto1"); $row=$query->fetch_assoc(); $dia=$row['dia']; $contad=$row['conta']; $valor=$row['debito']; $hist=$row['hist']; $sql="insert into tbdiario (lcto,dia,contad,valor,hist) values ($lcto,'$dia',$contad,$valor,'$hist')"; $query3=$mysqli->query($sql); $row3=$query->fetch_assoc(); astudy5.php ------------------------------------------------------------ <?php // um débito e um crédito particular $mysqli=new mysqli("localhost","root","","astudy"); $lcto=68; $docto1=141; $docto2=142; $query=$mysqli->query("select * from tbdiariobk where docto=$docto1"); $row=$query->fetch_assoc(); $dia=$row['dia']; $contad=$row['conta']; $valor=$row['debito']; $hist=$row['hist']; $query2=$mysqli->query("select * from tbdiariobk where docto=$docto2"); $row2=$query2->fetch_assoc(); $contac=$row2['conta']; if($valor!=$row2['credito']){echo "valores divergentes em ".$row2['docto'];exit;} $sql="insert into tbdiario (lcto,dia,contad,contac,valor,hist) values ($lcto,'$dia',$contad,$contac,$valor,'$hist')"; $query3=$mysqli->query($sql); $row3=$query->fetch_assoc();
  12. Hoje eu tenho uma tbdiario com 14.000 registros, quando o correto era ter apenas a metade. Eu criei um campo chamado débito e outro chamado crédito, quando o correto era ter apenas um campo chamado valor. Hoje usei as variáveis no MySQL, e gostei a beça, consegui pegar dois registros errados e criar um registro certo, assim: set @lcto=1; select @dia:=dia, @contad:=conta, @valor:=debito, @hist:=hist from tbdiariobk where docto=1; select @contac:=conta from tbdiariobk where docto=2; insert into tbdiario (lcto,dia,contad,contac,valor,hist) values (@lcto,@dia,@contad,@contac,@valor,@hist); A estrutura da tabela errada é essa: `tbdiariobk` ( `docto` mediumint NOT NULL AUTO_INCREMENT, `dia` date DEFAULT NULL, `conta` mediumint DEFAULT NULL, `debito` decimal(13,2) DEFAULT NULL, `credito` decimal(13,2) DEFAULT NULL, `hist` varchar(100) CHARACTER SET utf8 COLLATE utf8_swedish_ci DEFAULT NULL, PRIMARY KEY (`docto`)) A estrutura da tabela certa é essa: `tbdiario` ( `idiario` mediumint NOT NULL AUTO_INCREMENT, `lcto` mediumint NOT NULL, `dia` date DEFAULT NULL, `contad` mediumint DEFAULT NULL, `contac` mediumint DEFAULT NULL, `valor` decimal(13,2) DEFAULT NULL, `hist` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`idiario`) ) Agora, consertar 14.000 registros errados em 7.000 certos, isso é coisa que eu pretendo resolver com a ajuda do PHP.
  13. Depois de dois meses estudando o Laravel, hoje chegou a vez de ver o Laravel no celular. Eu digitei 192.168.0.12:8000 no navegador do celular, mas eu não consegui conectar. Consultando o Google, ele me informou que devo ativar o servidor do artisan assim: php artisan serve --localhost=192.168.0.12 Para acessar o Laravel pela internet, eu ainda não pesquisei se tem algum hospedeiro (gratuito) que usa esse programa, mas aqui no meu notebook eu posso usar o ngrok, ao invés de ativar para a porta 80, eu ativo para a porta 8000, assim: ngrok http 8000
  14. <?php // astudy.php // mysql: TABLE `tbcidades` (`id` int AUTO_INCREMENT pk,`uf` varchar(2),`cidade` varchar(45)) $mysqli=new mysqli("localhost","root","","astudy"); if(!isset($_GET['uf'])){ $query=$mysqli->query("select uf from tbcidades group by uf order by uf"); echo "<form>"; echo "<input list='uf' name='uf' placeholder='selecione o estado'>"; echo "<datalist id='uf'>"; while($row=$query->fetch_assoc()){echo "<option value=".$row['uf'].">";} echo "</datalist></form>"; exit;} $uf=$_GET['uf']; echo "estado: $uf <input type=submit value='mudar de estado' onclick=location.replace('astudy.php')>"; $query=$mysqli->query("select cidade from tbcidades where uf='$uf' order by cidade"); echo "<p><input list='cidades' placeholder='selecione a cidade'>"; echo "<datalist id='cidades'>"; while($row=$query->fetch_assoc()){echo "<option value=".$row['cidade'].">";} echo "</datalist>";
  15. Eu ainda não testei, mas encontrei um tutorial de como corrigir esse erro, quando atualizo o banco de dados no servidor hospedeiro. Eu uso o orgfree.com. Por enquanto só uso para fazer teste, e o código PHP não funciona quando ele precisa de uma view definida no MySQL: #1273 – Unknown collation ao importar um banco de dados - KingHost
  16. Estou bastante contente com o Laravel, graças a ele descobri que o meu banco de dados Diário está completamente errado. Eu não tenho a menor ideia de como consertar o banco de dados. Assim, ao invés de fazer a coisa certa, eu vou persistir no erro. Ou seja, vou continuar estudando o Laravel, mesmo sabendo que o banco de dados e o código PHP estão bastante equivocados. Eu consegui fazer o balancete no PHP, mas o Laravel me obrigou a fazer o balancete no MySQL. O Laravel recebe o balancete no controller com essa instrução: $contas=vw_balanco::all(); Usando a função dd($contas) eu consegui enxergar uma impressionante espaçonave, cheio de alienígenas. Qual é o nome dessa espaçonave? Isto está no topo da página, o Laravel chama de Illuminate\Database\Eloquent\Collection. Eu sei como calcular a receita pelo Eloquent, mas nunca somei coisa alguma com o Collection. Pedi ajuda no Google, e eu cheguei nesse comando: $receita=$contas->whereBetween('conta',[301,304])->sum('final'); Ele funciona! Eu não tenho a menor ideia de como o Laravel consegue fazer, mas funciona! No PHP, eu precisei de dezenas e dezenas de linhas para chegar no mesmo resultado.
  17. Esse é um trabalho bem difícil, mas o máximo que eu consegui foi assim usuário (nome,codempresa) ("zé",1) ("zé",3) empresas(codempresa,empresa) (1,"Bradesco") (3,"Itaú") E a consulta ficaria assim SELECT nome,GROUP_CONCAT(empresa) FROM usuario INNER JOIN empresas on usuario.codempresa = empresas.codempresa GROUP BY nome; #resultado: zé Bradesco,Itaú Ou seja, eu consigo chegar no mesmo resultado, desde que defina um código de empresa para cada usuário. No caso do zé, eu posso cadastrar um novo banco, entrando com o nome dele e o código do novo banco, que eu acho que é bem mais fácil do que ficar editando um campo de valores múltiplos.
  18. Eu fiz uma bela abreviação (preguiça de digitar): UPDATE cadmer, inv SET cadmer.nbm = inv.ncm WHERE cadmer.Codigo = inv.Codigo; Gostei desse código, não sabia que era possível atualizar uma tabela baseado no valor de outra tabela. Bacana!
  19. Eu nunca tive esse problema com o VS Code, mas navegando pela internet encontrei matéria que fala do problema da autenticação no MySQL: mysql - Authentication plugin 'caching_sha2_password' cannot be loaded - Stack Overflow
  20. Acredito que o arquivo .php inclui o recurso do <meta charset=utf-8>, já o arquivo .html requer esse comando para o texto aparecer "aportuguesado". O problema é que eu só tenho um notebook, e não consigo enxergar o lado do cliente e o lado do servidor. Agradeço pela sua observação no fechamento dos marcadores. Em matéria de HTML eu sou um péssimo exemplo.
  21. Olá, Anna, depois que você descobriu as mutretas da sua namorada, você continuou espionando o WhatsApp da moça? Espionar a vida de outras pessoas não vale a pena, a menos que alguém pague por esse serviço.
  22. // exibe produtos comprados pelo $docto echo "<div><table class='table table-sm table-striped'>"; echo "<script>divmenu.innerHTML='Detalhes do documento $docto'</script>"; $sql = "select tbhistprod.*, tbhistprod.docto, tbprod.prod, tbprod.un, tbpessoa.pessoa from (tbhistprod inner join tbprod on "; $sql .= "tbhistprod.codprod = tbprod.codprod) inner join tbpessoa on tbhistprod.codp = tbpessoa.codp where (((tbhistprod.docto)=$docto))"; $query = $mysqli->query($sql); if (mysqli_num_rows($query)>0) { $sum=0; echo "<tr><td>Cod<td>Descrição<td>Qt<td>Un<td>Total"; While ($linha = $query->fetch_assoc()) { $id = $linha['id']; $un = "<a href=?excluir=$id>".$linha['un']."</a>"; $codprod="<a href=?corrigeitem=$id>".$linha['codprod']."</a>"; echo "<tr><td align=right>$codprod<td>".$linha['prod']."<td>".dec($linha['qt'])."<td>$un</td><td align=right>".dec($linha['custototal']); $pessoa=$linha['pessoa']; $sum=$sum+$linha['custototal'];$dia=df($linha['dia']);} echo "<tr><td><td><form action='produto'><input type='submit' value='Produto'><td><td><td></form>"; echo "<tr><td colspan=2><b>$dia $pessoa<td><td><td align='right'><b>".number_format($sum,2,',','.')."</form>";} else {echo "<tr><td><td><form action='produto'><input type=submit value='Produto'></form>";} Esse é um trecho do meu projeto Diário, onde vinculei a compra dos produtos (tbhistprod) ao docto do tbdiario. Ao invés de trabalhar com tbclientes e tbfornecedores eu fiz apenas um cadastro para os dois, chamando de tbpessoa. Ou seja, primeiro eu faço o registro contábil e uso o número desse registro para cadastrar os produtos que foram comprados. Para fazer um quadro, isso requer conhecimento em CSS, e nisso eu sou péssimo.
  23. Eu usei a minha imaginação e criei o arquivo teste.txt com o poderoso Bloco de Notas do Windows assim: 123456789012312345678901 12202210222022102211 123456789012312345678901 12202210222022102211 123456789012312345678901 12202210222022102211 123456789012312345678901 12202210222022102211 123456789012312345678901 12202210222022102211 Depois criei uma tabela teste no MySQL assim: CREATE TABLE `teste` ( `chave` varchar(13) COLLATE utf8_swedish_ci DEFAULT NULL, `cf` varchar(11) COLLATE utf8_swedish_ci DEFAULT NULL, `vazio` varchar(13) COLLATE utf8_swedish_ci DEFAULT NULL, `reg` varchar(2) COLLATE utf8_swedish_ci DEFAULT NULL, `datacad` varchar(8) COLLATE utf8_swedish_ci DEFAULT NULL, `dataalt` varchar(8) COLLATE utf8_swedish_ci DEFAULT NULL, `status` varchar(1) COLLATE utf8_swedish_ci DEFAULT NULL, `indicador` varchar(1) COLLATE utf8_swedish_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_swedish_ci # note que não tem nenhuma chave primária, pois os exemplos que eu trabalhei tem um monte de registros repetidos. Finalmente, pedi para o MySQL importar os dados do teste.txt na tabela teste, assim set global local_infile=1; LOAD DATA LOCAL INFILE '/wamp64/www/teste.txt' INTO TABLE teste (@row) set chave=trim(substr(@row,1,13)), cf=trim(substr(@row,14,11)), vazio=trim(substr(@row,25,13)), reg=trim(substr(@row,38,2)), datacad=trim(substr(@row,40,8)), dataalt=trim(substr(@row,48,8)), status=trim(substr(@row,56,1)), indicador=trim(substr(@row,57,1));
  24. # criando tabela teste DROP TABLE IF EXISTS Teste; CREATE TABLE Teste(id serial primary key,data_inicio date, data_fim date) engine=innoDB; # inserindo alguns dados INSERT INTO Teste(data_inicio,data_fim) VALUES ('1977-12-01', '1979-10-31'), ('1979-06-04', '1981-02-17'), ('1983-06-06', '1985-01-07'), ('1987-05-01', '1988-04-30'), ('1988-01-11', '1988-01-27'); # procurando dados inconsistentes, onde data_inicio do registro atual < data_fim do anterior set @anterior=null; SELECT id, data_inicio,case when data_inicio<@anterior then 'plobrema!' end as mens, (@anterior:=data_fim) as data_fim from teste
  25. O erro está no Create Table, você pede para criar um campo id serial, ou seja, você pede para o MySQL atribuir um número sequencial para cada registro que for incorporado. Mas na hora de inserir as informações você atribui um id diferente para cada registro. O nome disso é conflito de interesses: quem vai gerar o id do registro, você ou o MySQL? Se for o MySQL, a gramática do Insert seria assim: "insert to clientes (nome, cpf, etc) values ('emanuelly','9999999','etc'). Se for você, a sintaxe do create table deveria ser assim "id primary key".
×
×
  • Criar Novo...