Ir ao conteúdo
  • Cadastre-se

MySQL Como inserir um texto automaticamente no campo "text" do MySQL?


Posts recomendados

  • Moderador

Bom dia a todos!
Estou utilizando o sistema Map-OS para meu trabalho MEI. Na hora de criar uma ordem de serviço, eu gostaria que houvesse o preenchimento automático do campo "laudo técnico" para o seguinte texto:
 

Caso o cliente não buscar o equipamento após o período de trinta dias, será cobrada diária de R$ 2,50. Passado o período de sessenta dias, o equipamento pertencerá à assistência e poderá ser descartado para lixo eletrônico, sucateado ou vendido.

Não nos responsabilizamos por defeitos causados/apresentados pela reprovação de reparos ou testes por parte do cliente.

Em caso de reprovação do orçamento, será cobrada taxa mínima de R$ 25, e orçamentos acima de R$ 150 será cobrado 25% do valor do serviço.

 

Porém, o procedimento que fiz não funcionou, e gostaria de saber o que fiz de errado.

Eu tinha feito o seguinte: naveguei para localhost/phpmyadmin, Cliquei em "bancos de dados" > "mapos", cliquei no botão "estrutura" da tabela "os", e editei o campo "laudoTecnico", alterando o padrão para "Como definido" e colei o texto no campo que surgiu (conforme imagem abaixo:)

 

image.thumb.png.2460bb62fb63a2124a1eb5a6a5ad7000.png

 

O código do SQL ficou assim:

ALTER TABLE `os` CHANGE `laudoTecnico` `laudoTecnico` TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Caso o cliente não buscar o equipamento após o período de trinta dias, será cobrada diária de R$ 2,50. Passado o período de sessenta dias, o equipamento pertencerá à assistência e poderá ser descartado para lixo eletrônico, sucateado ou vendido. Não nos responsabilizamos por defeitos causados/apresentados pela reprovação de reparos ou testes por parte do cliente. Em caso de reprovação, será cobrada taxa mínima de R$ 25, e orçamentos acima de R$ 150 será cobrado 25% do valor do serviço.'; 

 

Obs: estou utilizando o Xampp para criar um localhost para meu sistema.

 

Alguém poderia me ajudar? Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

@Ferox Graxaim , olá

  • Fiquei com uma dúvida sobre o texto: Pela regra do projeto/negócio é necessário colocar isso em um campo dentro banco de dados?

Nesta tela você está mexendo com estrutura do campo da tabela definido o tipo de dados, seu tamanho ou valor. O "padrão" um exemplo a ser seguindo dentro do banco de dados.

  • o Laudotecnico - só vai esse texto ou vai ter mais informações incluídas pelo técnico?
  • Se sim, esse texto seria necessário colocar em outro campo dentro da tabela do BD. Como um novo campo "Regras_de_Laudos" ou "Observações_orçamento".

 

Sugestão:

  • Mudar o tipo 'text' para outro como MEDIUMTEXT ou LONGTEXT.

Ou

  • Você pode definir essa observação em um variável fora do banco de dados para ser mostrado, por exemplo: dentro variável na página em html e colocar no campo do formulário.

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderador
1 minuto atrás, Kaze_jp disse:

Fiquei com uma dúvida sobre o texto: Pela regra do projeto/negócio é necessário colocar isso em um campo dentro banco de dados?

Basicamente é uma ordem de serviço.

Esse é um exemplo de como vai ser a ordem de serviço:
image.png.3c9f8086eed9895a982623f6dc5cf530.png

 

Basicamente eu quero que o texto abaixo da linha divisória seja colocado automaticamente na ordem de serviço sem que eu tenha que ficar colando.

11 minutos atrás, Kaze_jp disse:

Se sim, esse texto seria necessário colocar em outro campo dentro da tabela do BD. Como um novo campo "Regras_de_Laudos" ou "Observações_orçamento".

Então basicamente preciso criar um novo campo para isso?

Link para o comentário
Compartilhar em outros sites

@Ferox Graxaim ,Entendi.

  • Neste caso a variável = "laudotecnico" no banco de dados seria para colocar as informações que técnico ou do atendimento. E não poderia receber o texto que você está querendo.

Por essa questão de você querer alterar depois os valores do texto(acima) tem duas soluções:

 

Neste caso você pode fazer alterações se necessário.

  1. Será necessário alterar a tabela e criar um novo campo na tabela (por exemplo: regras_de_orçamentos), escolher o tipo "MEDIUMTEXT" e colocar no padrão "o texto citado...."; 
  2. Quando for fazer a query o campo deve ser incluído junto e colocado em uma variável separada para mostrando no formulário da tela.(aí depende da linguagem utilizada).

ou outra solução é:

Neste caso precisa altera no arquivo do formulário da página.

  1. colocar em uma variável (obs_orçamento=""texto....") c/ texto acima - dentro do formulário da linguagem utilizada no sistema. É mostrar no formulário junto dados que vem do banco de dados.

 

Aí vai depender de quem está programando a modificação. Se está dentro da regras e como os valores mudam e trabalho necessário para trocar caso o valores do texto seja alterado.

 

Não sei consegui passar direito a solução, qualquer dúvida só perguntar.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@fernando c  Alterei para varchar 9000, diz que a alteração foi feita com sucesso, mas ainda não aparece o texto automaticamente...

1 hora atrás, Kaze_jp disse:

@Ferox Graxaim ,Entendi.

  • Neste caso a variável = "laudotecnico" no banco de dados seria para colocar as informações que técnico ou do atendimento. E não poderia receber o texto que você está querendo.

Por essa questão de você querer alterar depois os valores do texto(acima) tem duas soluções:

 

Neste caso você pode fazer alterações se necessário.

  1. Será necessário alterar a tabela e criar um novo campo na tabela (por exemplo: regras_de_orçamentos), escolher o tipo "MEDIUMTEXT" e colocar no padrão "o texto citado...."; 
  2. Quando for fazer a query o campo deve ser incluído junto e colocado em uma variável separada para mostrando no formulário da tela.(aí depende da linguagem utilizada).

ou outra solução é:

Neste caso precisa altera no arquivo do formulário da página.

  1. colocar em uma variável (obs_orçamento=""texto....") c/ texto acima - dentro do formulário da linguagem utilizada no sistema. É mostrar no formulário junto dados que vem do banco de dados.

 

Aí vai depender de quem está programando a modificação. Se está dentro da regras e como os valores mudam e trabalho necessário para trocar caso o valores do texto seja alterado.

 

Não sei consegui passar direito a solução, qualquer dúvida só perguntar.

 

Vou tentar fazer isso. Obrigado!

 

Edit: descobri que o texto padrão está funcionando (tentei alterar pra mediumtext pra ver se resolve). Mas ele só aparece na hora de criar uma OS pelo PhpMyAdmin.

 

image.thumb.png.db1bf361f774821345f7f6c9c5377536.png

 

Agora na hora de criar a OS pelo Map-OS o texto padrão não aparece.

image.png.0a82904e791472b1895f6db39043ec57.png

 

No caso preciso mexer nos códigos do Map-OS?

Link para o comentário
Compartilhar em outros sites

@Ferox Graxaim ,

 

Dúvida: qual linguagem é usada no sistema?

 

Então o "Laudotécnico" seria o campo onde o técnico/atendimento coloca as informações sobre o atendimento.

  • Essa coluna na tabela ao ser colocado como padrão c/ texto sobre atendimento não aparece porque uma variável não está associada ao campo c/ dados e não está sendo puxada(o texto). Isso deve ocorrer pela regra do sistema no campo deve só inserir dados(orçamento de limpeza por R$100,00) . Depois vai por insert na coluna "Laudotécnico".
  • Ele iriam aparecer se você não inserir dados no campo "Laudotecnico". Se você colocar algo ele vai apagar e colocar a informação do formulário colocado pelo técnico.

 A sugestão:

  • O texto que você queria. Você pode deixar ir em baixo em outra tabela ou linha(tipo um linha/coluna pra baixo) depois das informações técnicas(laudotecnico) sobre atendimento. Que vai ser puxada se não inserir nada e deixando Not NULL, nas definições da variavel. 
  • Lembrando de mexer o layout/formulário para ser puxado o dados(Banco de dados) do novo campo c/ texto para ser mostrado no orçamento junto com descrição dos laudos.
Link para o comentário
Compartilhar em outros sites

  • Moderador
1 hora atrás, Kaze_jp disse:

@Ferox Graxaim ,

 

Dúvida: qual linguagem é usada no sistema?

Não tenho certeza, mas é um sistema por rede que funciona através do navegador. Então acredito ser PHP e HTML.

 

1 hora atrás, Kaze_jp disse:

 A sugestão:

  • O texto que você queria. Você pode deixar ir em baixo em outra tabela ou linha(tipo um linha/coluna pra baixo) depois das informações técnicas(laudotecnico) sobre atendimento. Que vai ser puxada se não inserir nada e deixando Not NULL, nas definições da variavel. 
  • Lembrando de mexer o layout/formulário para ser puxado o dados(Banco de dados) do novo campo c/ texto para ser mostrado no orçamento junto com descrição dos laudos.

Obrigado pela dica, vou tentar isso.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Moderador

@Ferox Graxaim Eu li o tópico desde o ínicio. Só ví este tópico agora pouco.

 

Não sei como funciona o seu sistema e como  gera aquele documento que mostou no post #03.

 

Mas tenho algumas ideias.

Você não necessariamente precisa inserir o texto dentro do textarea do formulário.    No caso, seria ideal incluir o texto diretamente quando gerar o laudo.. A não ser que o texto esteja sujeito a mudanças.

 

Partindo da premissa que a imagem do post #03, seja um relatório que foi gerado pelo formulário,  e ele é dividido por elementos em HTML..

Por exemplo:

 Vamos supor que o relatório seja montado desta forma no HTML:

 

<div>
       <header>CLIENTE</header>
        <p>E-mail: [email protected]</p>
        <p>Celular: </p>
         <hr/>
         <section class="dados">
               <div>STATUS OS: <span> Orçamento </span></div>
                <div>DATA INICIAL: <span> 29/11/2023</span></div>
                <div>DATA FINAL <span> 01/02/2024 </span></div>
                 <div>GARANTIA: <span> 90 dias </span></div> 
         </section> 
          <hr/>
           <section class="dados">
                  <div>DESCRIÇÃO: <span> Televisão </span></div>
           </section>
           <hr/>
           <section class="dados">
                  <div>DEFEITO APRESENTADO: <span> Não liga </span></div>
           </section>
            <hr/>
           <section class="dados">
                  <div>OBSERVAÇÕES: <span> Tela riscada </span></div>
           </section>
            <hr/>
            <section class="dados">
                    <div>LAUDO TÉCNICO: </div>
                     <p> 27/11/2023 08:00: Reparo da placa fonte (R$ 100).</p>
                      <p> 27/11/2023 11:00: Orçamento aprovado via Telegram.</p>

                     <hr/>

                     <p>
                           Caso o cliente não buscar o equipamento após o período de trinta dias. será cobrada diária de R$ 2,50. Passado o período de sessenta dias, o equipamento pertencerá à assistência e poderá ser descartado para lixo eletrônico, sucateado ou vendido.
<br/>                          Não nos responsabilizamos por defeitos causados/apresentados pela reprovação de reparos ou testes por parte do cliente.
                          <br/>Em caso de reprovação, será cobrada taxa mínima de R$25, e orçamento acima de R$ 150 será cobrado 25% do valor do serviço.  
                     </p> 

           </section>
           
</div>

 

CSS:

body{
  font-family: "Open Sans",Helvetica,sans-serif;
}

div header{
  font-weight: bold;
}

.dados div{
   font-weight: bold;
   display: inline-block;
}

.dados span{
   font-weight: normal;
}

 

Este é só modelo exemplo de acordo com a imagem do post #03. Este é o relatório "final"  gerado.

Agora vem a sugestão, na parte da programação em PHP

 

Em cada elemento do relatório onde tem um texto preenchido, o valor virá de um campo na tabela de dados ... certo?

 

Exemplo:

 

<?php
        
       $ordemServico = $_POST["ordemServico"]; 
       include "conexao.php";

       $sql ="SELECT email_cliente, 
                                 celular_cliente, status, 
                                 data_inicial, 
                                data_final, garantia, 
                                descricao, defeito, 
                                obs, 
                                 laudoTecnico, 
                                 texto 
                    FROM laudoTecnico 
                    WHERE ordemServico = $ordemServico";

       $consulta = mysqli_query($conexao, $sql);

      $dados = mysqli_fetch_object($consulta);
 ?>
<div>
       <header>CLIENTE</header>
        <p>E-mail: <?php  echo $dados->email_cliente; ?></p>
        <p>Celular: <?php  echo $dados->celular_cliente; ?> </p>
         <hr/>
         <section class="dados">
               <div>STATUS OS: <span> <?php  echo $dados->status; ?> </span></div>
                <div>DATA INICIAL: <span> <?php  echo $dados->data_inicial; ?></span></div>
                <div>DATA FINAL <span> <?php  echo $dados->data_final; ?> </span></div>
                 <div>GARANTIA: <span> <?php  echo $dados->garantia; ?> </span></div> 
         </section> 
          <hr/>
           <section class="dados">
                  <div>DESCRIÇÃO: <span> <?php  echo $dados->descricao; ?> </span></div>
           </section>
           <hr/>
           <section class="dados">
                  <div>DEFEITO APRESENTADO: <span> <?php  echo $dados->defeito; ?> </span></div>
           </section>
            <hr/>
           <section class="dados">
                  <div>OBSERVAÇÕES: <span> <?php  echo $dados->obs; ?> </span></div>
           </section>
            <hr/>
            <section class="dados">
                    <div>LAUDO TÉCNICO: </div>
                         <?php
                              while ($laudo_tecnico = mysqli_fetch_object($consulta)):
                                     echo "<p> $laudo_tecnico->laudo; </p>";
                                   
                              endwhile;

                           ?> 

                     <hr/>

                     <p>
                           <?php  echo $laudo_tecnico->texto
                     </p> 

           </section>
           
</div>

 

Repare, que o elemento <p> filho do elemento section class dados, logo abaixo do elemento <p> que recebe o laudo técnico de um campo do banco de dados...

vai receber o valor de um novo campo, que eu defini como "texto"... no caso esse campo novo chamado texto, será do tipo MEDIUMTEXT assim como você fez.

 

Desta forma, o texto vai ser incluso ao gerar o relatório final, semp precisar colar, porque você já inseriu este texto diretamente no banco de dados.

O ideal até seria, mover este campo, para uma nova tabela...  além disso,  estruturar seu banco de dados separando as coisas para ficar normalizado e evitar inconsistências.

 

Por exemplo,

Os dados do cliente, pode ficar em uma tabela de cliente,  provavelmente terá uma tabela para o tipo de ordem de serviço, contendo o tipo de ordem, tabela para ordem de serviço em si, contendo as datas. o cliente, o tipo de ordem de serviço(é uma tabela N:N)  ,  uma tabela só para a garantia, uma tabela para o laudo técnico em si com os campos para  descrição, defeito,  observacao e o laudo e finalmente, uma tabela para conter o texto... pois futuramente, você pode querer criar um novo texto para outro tipo de ordem de serviço.

 

Enfim, Sugestão de estrutura de tabelas:

 

Cliente(ID INT auto increment,  nome VARCHAR, email VARCHAR , celular VARCHAR)

OS_tipo(ID INT auto increment,  OsTipo VARCHAR)

OS(ID INT auto increment , IDcliente INT FK , data_inicial DATE, data_final DATE, ID_OS_tipo INT FK, ID_garantia INT FK)

LaudoTecnico (ID INT auto increment, descricao VARCHAR , defeito VARCHAR , obs VARCHAR, laudoTecnico VARCHAR,  ID_texto INT FK)

Texto (ID INT auto increment, texto MEDIUMTEXT )

 

Notas sobre a estrurura:  a sigla  FK usada, é para referenciar a chave estrangeira, feita nos relacionamentos 1:N  e N:N entre as tabelas.

Desta forma, você  aplicará as normas formais 1NF e 2NF  pelo menos...  deixando seu banco de dados mais otimizado.

 

PS:  Caso faça desta forma, com as tabelas desmiuçadas,  será necessário usar a clausula INNER JOIN, ao fazer a consulta para atribuir os campos de chave estrangeira aos campos de chave primária das tabelas...   Caso, você queira saber mais sobre isso, eu posso te passar aqui um vídeo que uma vez a muito tempo atras eu gravei, ensinando a criar o banco de dados, fazer relacionamento entre tabelas pelo gráfico "designer" do phpmyadmin... e etc... só me pedir, que eu posto aqui.

 

O outro modo, de incluir o texto, sem usar o banco de dados é definir o texto em uma variável e exibir diretamente... por exemplo:

 

Pegar este bloco todo:

<p>
   Caso o cliente não buscar o equipamento após o período de trinta dias. será cobrada diária de R$ 2,50. Passado o período de sessenta dias, o equipamento pertencerá à assistência e poderá ser descartado para lixo eletrônico, sucateado ou vendido.
<br/>Não nos responsabilizamos por defeitos causados/apresentados pela reprovação de reparos ou testes por parte do cliente.
<br/>Em caso de reprovação, será cobrada taxa mínima de R$25, e orçamento acima de R$ 150 será cobrado 25% do valor do serviço.  
</p> 

 

E colocar assim no php:

 

<?php 
     
       $ordemServico = $_POST["ordemServico"]; 
       include "conexao.php";

       $sql ="SELECT email_cliente, 
                                 celular_cliente, status, 
                                 data_inicial, 
                                data_final, garantia, 
                                descricao, defeito, 
                                obs, 
                                 laudoTecnico, 
                                 texto 
                    FROM laudoTecnico 
                    WHERE ordemServico = $ordemServico";

       $consulta = mysqli_query($conexao, $sql);

      $dados = mysqli_fetch_object($consulta);

    $texto = "<p>
                  Caso o cliente não buscar o equipamento após o período de trinta dias. será cobrada diária de R$ 2,50. Passado o período de sessenta dias, o equipamento pertencerá à assistência e poderá ser descartado para lixo eletrônico, sucateado ou vendido.
<br/>Não nos responsabilizamos por defeitos causados/apresentados pela reprovação de reparos ou testes por parte do cliente.
<br/>Em caso de reprovação, será cobrada taxa mínima de R$25, e orçamento acima de R$ 150 será cobrado 25% do valor do serviço.  
</p> ";  

?>

.
.
.  restante do código html com php junto.....
.
.


<section class="dados">
                    <div>LAUDO TÉCNICO: </div>
                         <?php
                              while ($laudo_tecnico = mysqli_fetch_object($consulta)):
                                     echo "<p> $laudo_tecnico->laudo; </p>";
                                   
                              endwhile;

                           ?> 

                     <hr/>

                     <p>
                           <?php  echo $texto;
                     </p> 

           </section>

 

 

Ficou um pouco grande a resposta, mas acho que toquei nos principais pontos.  é você que está desenvolvendo a aplicação em php? visto que está usando o xampp em localhost. 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@DiF Obrigado pelas dicas. O texto está sujeito a mudanças no futuro.
 

Em 13/12/2023 às 02:43, DiF disse:

é você que está desenvolvendo a aplicação em php? visto que está usando o xampp em localhost. 

Não, é um sistema chamado Map-OS, que é código aberto. Link do GitHub.

Também estou deixando aqui em anexo o código-fonte do Map-OS mais recente até o momento dessa postagem, caso algum dia o link do GitHub fique quebrado.

mapos-master.zip

Em 13/12/2023 às 02:43, DiF disse:

visto que está usando o xampp em localhost. 

É porque segui um tutorial que ensinava a instalar o Map-OS dessa forma, não sei dizer se existe outra forma de instalá-lo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@Ferox Graxaim Eu dei uma olhada no github, é o sistema usa o PHP, porém, ele é desenvovido com um framwork, CodeIgniter.

 

Fica muito além do meu conhecimento para te dar dicas de alterações no código,  o pouco que eu sei sobre isso, você pode alterar o arquivo visualizarOS.php,  que fica dentro da pasta "views" 

https://github.com/RamonSilva20/mapos/blob/master/application/views/os/visualizarOs.php

 

Lá, você pode acrescentar o texto diretamente no código, seria a forma mais simples de fazer.   Se quiser fazer algo mais dinamico, aí teria que alterar  uma tabela do banco de dados, alterar o arquivo OS.php  dentro da pasta controllers, para recuperar o texto,  e voltar no arquivo visualizarOS.php para inserir o bloco PHP  de que exibe o texto.

Daí nesse caso, você vai precisar entender como funciona o modelo de Controller /View do sistema, com o codeIgniter.

 

A minha dica ali em cima, é aplicável, nisso.  só não vai ser bem igual, mas dá para fazer.. pois o meu exemplo só usa o php puro, sem o framework.

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!