Jump to content
novoAquiNoForum

Cadastro de Tags input no Mysql

Recommended Posts

Olá a todos, minha primeira vez aqui no fórum.

Seguinte, tenho uma dúvida:

Qual a forma correta de gravar tags no banco de dados MySql?

Pra esclarecer melhor, tenho um campo que o usuário cadastra palavras chaves separadas por vírgula como é realizado aqui no fórum.

Ex: boleto,cedente,banco

No PHP usando o explode transformo essas palavras em array, sendo que cada palavra será um registro no banco de dados com id e descricao.

Esta correto desta forma?

Share this post


Link to post
Share on other sites

Bom... você terá que linkar essas tags a um conteúdo, suponho (uma página, uma notícia).

Cadastre elas com um ID único, além da palavra, e um campo que ligue esta tag ao conteúdo em si.

Exemplo:

tbl_tags_content

tagId (INT 11 - index)

tagContent (Varchar 255)

contentId (INT 11)

Em contentID, grave o ID do campo que usa essa tag.

Não sei se isso é certo ou não, geralmente eu faço diferente... gravo as tags em um campo varchar mesmo, em um campo só e separadas por vírgula diretamente na tabela dos conteúdos.

Share this post


Link to post
Share on other sites

Basta simplificar, a opção do colega Maykel é uma boa. Porém, caso queira separar em tabela própria, você irá ter a seguinte estrutura:

idTag  |   idNoticia   |   tags
   
  1            5           teste,oi,noticia boa,ok

Basta você puxar agora cada registro de acordo com o ID da notícia. Não é necessário gravar tag por tag.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By manoaj
      Boa noite pessoal!
      Alguém ai entente dos checkouts do Mercado Pago pra me explicar como eu obtenho os dados da preferência criada através da url disponível na API
      https://api.mercadopago.com/checkout/preferences/:id?access_token=ACCESS_TOKEN_ENV  
    • By gersonab
      Bom dia, tenho um select onde gostaria de ordenar o mesmo pelo dia do campo date , segue o mesmo 
      $mesatual = date("m"); $consulta = $pdo->query("SELECT * FROM cli WHERE MONTH(datan) = '$mesatual' ORDER BY DAY(datan) ASC"); não esta ordenando o mesmo, teria de ser pelo dia, pois o mês vai ser sempre o atual e o ano varia conforme data de nascimento.
       
      exemplo de como esta aparecendo :
      18/07/2019
      14/07/2019
      preciso que seja assim :
      14/07/2019
      18/07/2019
    • By Igor Gabriel
      Boa Tarde, estou com uma dúvida.
       
      Estou criando um site para uma imobiliárias, fiz um sistema de cadastro todo bonitinho onde se encontra funcionando perfeitamente. Contudo fora do sistema, no site, quando clico para ver os imoveis, tenho a listagem de todos os imoveis já cadastrados. Quando entro na página para ver mais do Imóvel é trazido consigo todas as informações presentes no banco, ao invés de uma só. Como faço para trazer uma única informação específica do banco?
    • By leocouto
      Pegar um dado específico de uma tabela, caso tenha mais de um item cadastrado sempre vai pegar o último.
      <form name="editaFornecedor"<?php +1?> action="edit_forne.php" id="editaFornecedor" method="POST"> <!-- Pegando todos os fornecedores cadastrados... --> <table class="table table-striped"> <thead class="thead-dark"> <tr> <th scope="col">ID</th> <th scope="col">Nome</th> <th scope="col">Fone</th> <th scope="col">CNPJ</th> <th scope="col">Rua</th> <th scope="col">Número</th> <th scope="col">Bairro</th> <th scope="col">Estado</th> <th scope="col">Cidade</th> <th scope="col">CEP</th> <th scope="col">E-mail</th> <th scope="col">Observação</th> <th scope="col">Editar|Deletar</th> </tr> </thead> <?php @session_start(); include('conexao.php'); $fornecedor = mysqli_query($conexao, "SELECT * FROM fornecedor"); $linhas = mysqli_num_rows($fornecedor); while ($linhas = mysqli_fetch_array($fornecedor)) { ?> <tbody> <tr> <td><?php echo $linhas['id_fornecedor']; ?></td> <td><?php echo $linhas['nome']; ?></td> <td><?php echo $linhas['fone']; ?></td> <td><?php echo $linhas['cnpj']; ?></td> <td><?php echo $linhas['rua']; ?></td> <td><?php echo $linhas['numero']; ?></td> <td><?php echo $linhas['bairro']; ?></td> <td><?php echo $linhas['estado']; ?></td> <td><?php echo $linhas['cidade']; ?></td> <td><?php echo $linhas['cep']; ?></td> <td><?php echo $linhas['email']; ?></td> <td><?php echo $linhas['observacao']; ?></td> <td> <button type="submit" class="btn btn-secondary" style="height: 35px; width: 100px"><i class="material-icons">description</i>Editar</button><br> <button type="button" class="btn btn-danger" style="height: 35px; width: 100px"><i class="material-icons">delete</i>Deletar</button> </td> <td><input type="text" name="id_fornecedor" value="<?php echo $linhas['id_fornecedor'];?>"></td> </tr> </tbody> <?php } ?> </table> <!-- Fim da exibição de todos os fornecedores cadastrados.. --> </form>  
       
      ======================================================================================================================================================
      Aqui no MYSQL só pega o último item da tabela.. Não pega o que foi clicado no botão.
      <?php include('conexao.php'); session_start(); //$cnpj=$_POST['cnpj']; $id_fornecedor=$_POST['id_fornecedor']; echo $id_fornecedor; ?> =======================================================================================================================================================
      É desse modelo da imagem, mas na hora que clico em editar no mysql aparece o último id e não na linha que cliquei, se eu clicar no primeiro na outra página aparece o id 4, que é o ultimo, quem pode me dar essa força? Ficarei muito grato.

    • By Felipe_N22
      Pessoal, como que eu crio uma rotina no MySQL para efetuar delete de registros inseridos nos últimos 30 dias, e fazer com que esse procedimento rode todos os dias automaticamente em determinado horário?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.