Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

egbmix

Gravando tags no banco de dados

Recommended Posts

Vou tentar ser o mais breve possível,

Tenho um formulário de cadastro que tem um campo para o cadastro de tags, sendo está tudo certo o formulário funcionando perfeitamente grava tudo certinho no banco de dados, só as tags que não gravadas no banco.

 

Abaixo o script da tags que não grava no banco:

 

 

// script que recebe os dados do formulário

 <script language="javascript">
	    $(document).ready(function(){
	$(".btn-s1").click(function(){
		  var nomeA  = $("#nomeA").val();
		  var nomeB  = $("#nomeB").val();
		  var tagss    = $("#tagss").val();
		  var desc    = $("#descs").val();
		  $(".retorno-s1").html('<img src="arquivo loader" alt="" />');
	   $.ajax({  
		  type: "POST",  
		  url: "arquivo php que recebe os dados e grava no banco",  
		  data: "nomeA="+ nomeA + "&nomeB="+ nomeB  + "&tagss="+ tagss  + "&desc="+ desc,  
		  success: function(html){
			  $(".retorno-s1").html(html);
		  }
	  });
	  return false;
	});
  });

      
      </script>

// arquivo php que recebe os dados do formulário

<?php
$nomeA=strtolower(strip_tags(trim($_POST['nomeA'])));
$nomeB=strtolower(strip_tags(trim($_POST['nomeB'])));
$tagss=strtolower(strip_tags(trim($_POST['tagss'])));
$desc=strip_tags(trim($_POST['desc']));


$cadastra = mysql_query("INSERT INTO banco que grava os dados (cod_u, name_a, name_b, description) VALUES ('$cod','$nomeA','$nomeB','$desc')") or die("Erro ao consultar!");


$cadastra=mysql_query("INSERT INTO  banco que grava as tags (cod_fk, tag_01) VALUES ('$cod','$tagss')");



?> 

//Formulário somente a parte das tags

 <div class="new-tag">
    <div class="tags"  >
          <input type="text" placeholder="Adicionar tags..." name="tagss" id="tagss" class="new-tag-input">
        </div>
  
    </div> 

figura.jpg

 

Esta e a parte do fomulário que ficam as tags as tags ficam dentro de uma div chamada new-tags

 

Atenção fiz questão de frisar somente a parte que tenho a dúvida que são as partes das tags

Desde já agradeço a colaboração de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como ta rolando sua requisição POST ajax do NetWork?

Ta passando os parâmetros?

 

Se você utilizar o Google Chrome, abre o modo desenvolvedor (F12) e depois abre a aba NetWork.

JzZhdLw.png?1

Simula o Click no seu botão (No caso o '.btn-s1')

Da uma olhada no resultado e veja se consegue resolver por conta, caso contrario da um grito.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

as 'tagss' são varias neh?

 

Tem varias possibilidades de resolver:

 

Um caminho é criar varios campos na tela de acordo com a necessidade e passar via serialize do Javascript:

http://www.sanwebe.com/2013/03/addremove-input-fields-dynamically-with-jquery

 

Outro é pedir para o usuário separar via 'virgula' e após isto usar o explode http://php.net/manual/en/function.explode.php

Vai gerar um array e você insere cada um.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi,

Sendo que o usuário digita a tag e aperta o enter e a tag digitada, no caso a variável vai para cima do campo do formulário, eu quero pegar a variável digitada que vai para cima do input do formulário, quando as variáveis do formulário vão para o arquivo php todas são gravadas no banco mysql só as do campo tags que não.

 

no caso as tags ficam dentro da div new-tag.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show, nesse caso é utilizando JavasScript mesmo.

 

* Você vai precisar monitorar o 'Enter' para criar o campo ao invés do click como está no exemplo que te passei acima.

* Tratar dentro do laço e inserir uma a uma.

 

 

Tenta ai qualquer coisa da um grito.

 

A saida HTML vai precisar ficar assim de maneira dinâmica:

<div id="new-tag">
	<input type="text" name="mytag[]"/>
	<br />
	<input type="text" name="mytag[]"/>
	<br />
	<input type="text" name="mytag[]"/>
	<br />
</div>

No JavaScript na parte do ajax vai precisar utilizar o serialize:

,data: $('#tagss *').serialize()

e no php você trata:

<?php

foreach($_POST['mytag'] as $tag){
  "INSERT INTO .... VALUE ($tag)"
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Gabriel,

Vou testar seu exemplo só pra vc entender que este sistema é igual ao sistema de cadastro novos tópicos daqui do fórum na para de cadastro de tags.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que exatamente não funcionou? JS? Php? PHP

 

Lembrando que só passei um exemplo.

 

Caso tenha muita dificuldade de fazer dinamicamente com o JavaScript

Uma alternativa é por , (virgula) como já citei.

 

você vai dar o explode() e dentro do loop armazenar individualmente.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel,

Fiz de uma maneira diferente aqui, ao invés de colocar input=text coloquei chekbox com a name="new-tag"

agora preciso enviar essa chekbox pelo jquery para o php, fiz aqui de uma jeito mas não to conseguindo seja como eu to enviando o chekbox

<script language="javascript">
	    $(document).ready(function(){
	$(".btn-s1").click(function(){
		  var nomeA  = $("#nomeA").val();
		  var nomeB  = $("#nomeB").val();
		  var desc    = $("#desc").val();
		  var cod    = "<?php echo $_SESSION['cod_m'];?>";
		   var tags    = new Array();
		  $("input[name='new-tag']:checked").each(function ()
		 {
  
   checkeds.push(parseInt($(this).val()));
});
		  $(".retorno-s1").html('<img src="loader.gif" alt="" />');
	   $.ajax({  
		  type: "POST",  
		  url: "arquivo php",  
		  data: "nomeA="+ nomeA + "&nomeB="+ nomeB  + "&tags="+ tags + "&desc="+ desc   + "&cod="+ cod,  
		  success: function(html){
			  $(".retorno-s1").html(html);
		  }
	  });
	  return false;
	});
  });

  
      </script>

Quando envio o formulário ele fica no loading continuo e não envia queria saber se está certo essa requisição chekbox nunca fiz uma através do jquery e como eu recebo essas variáveis no php ? Com o laço foreach criado anteriormente ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!
tentei seguir seu código assim não sai da sua linha de raciocínio.

 

Esse seria o 'index.php'

<!DOCTYPE HTML>
<html lang="pt-br">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
	<script type="text/javascript">
		$(document).ready(function(){
			$(".btn-s1").click(function(){
					var nomeA  = $("#nomeA").val();
					var tags    = new Array();
					$("input[name='new-tag']:checked").each(function (){
						tags[tags.length] = $(this).val();
					});
					
					$.ajax({  
						type: "POST"
						,url: "recebe.php"  
						,data: {
							 nomeA
							,tags
						}
						,success: function(html){
							$(".retorno-s1").html(html);
						}
					});
					
				return false;
			});
		});
	</script>
	
	<div >
		<input type="hidden" id="nomeA" value="Nome"/>
		<label>
			<input type="checkbox" name="new-tag" id="tag_l" value="life" checked="true"/> Life
		</label>
		<br />
		<label>
			<input type="checkbox" name="new-tag" id="tag_d" value="death" checked="true"/> Death
		</label>
		
		<hr />
		<button class="btn-s1">Disparo</button>
	</div>
	
	
</body>
</html>

E dentro do 'recebe.php' você tem acesso as informções e as tags :

<?php
print_r($_POST);

foreach($_POST['tags'] as $tag){
	echo $tag . '<br />';
}

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você receber as informações do POST basta dar um

$tags = implode(',', $_POST['tagss']);

ficando assim:

$nomeA=strtolower(strip_tags(trim($_POST['nomeA'])));
$nomeB=strtolower(strip_tags(trim($_POST['nomeB'])));
//editado
$tags = implode(',', $_POST['tagss']);

$desc=strip_tags(trim($_POST['desc']));


$cadastra = mysql_query("INSERT INTO banco que grava os dados (cod_u, name_a, name_b, description) VALUES ('$cod','$nomeA','$nomeB','$desc')") or die("Erro ao consultar!");


$cadastra=mysql_query("INSERT INTO  banco que grava as tags (cod_fk, tag_01) VALUES ('$cod','$tags')");

Aí sim vai funcionar e gravar no banco de dados.. lembrando que o campo do banco tem que ser em

varchar ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá é simples

 

http://www.jqueryscript.net/demo/Simple-Animated-jQuery-Tags-Input-Plugin-Lovely-Tag/

 

 

Eu peguei este script e implementei em meu próprio formulário.

 

Viu agora eu to conseguindo e enviar as tags para o php, entendeu agora ?

mesmo fazendo do seu jeito acima não funcionou.

 

o problema e no js que não quer enviar a requisição pro php.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<div class="new-tag">
<div class="tags" >
<input type="text" placeholder="Adicionar tags..." name="tagss[]" id="tagss" class="new-tag-input">
</div>

</div> 

Falta o [] teste aí

Compartilhar este post


Link para o post
Compartilhar em outros sites

O banco está até gravando tudo, somente o campo das tags e que não grava nada, fica em branco só a coluna das tags.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Sapinn
      Fala galera! Tenho um site que possui alguns icones que são puxados da biblioteca flaticon , o problema é que de uma hora pra outra esses icones pararam de aparecer. No meu ambiente local funciona, mas no ambiente de produção eles não aparecem e eu recebo o seguinte erro no console: Failed to load resource: the server responded with a status of 404 () 
       
      Alguém saberia como resolver isso?
    • Por Tardelli
      Pessoal, no meu blogger, algumas metas tags estão diferentes de outros sites. Olhei em vários sites grandes e estão diferentes mesmo, será que tem diferença em ambas?
      Exemplo 1:
      No meu blog, esta tag está assim: <meta expr:content='data:blog.canonicalUrl' property='og:url'/>
       
      Em outros sites, está assim: <meta content="https://www.XXXXX.com.br/" property="og:url"/>
       
      Exemplo 2:
      No meu blog, esta tag está assim: <meta expr:content='data:blog.pageName' property='og:title'/>
       
      Em outros sites está assim: <meta content="Uol, Conteúdo com responsabilidade" property="og:title"/>
       
      Minha pergunta é: Deixo como está ou devo mudar?
    • Por Vitor Dias
      Fatal error: Multiple access type modifiers are not allowed in C:\xampp\xamp\htdocs\Trabalhodocurso\prodis.php on line 6
       
      A LINHA
      public public function_construct($dbname, $host, $user, $senha)
       Não faço ideia por que e o que é esse erro. 
    • Por PedroFarias
      Bom dia:

      Estou construindo uma aplicação JSP no eclipse photon. Criei três classes uma para acessar (conexão) um banco de dados outras duas [jsp] a primeira um menu para abrir uma outra (segunda), nesta foram criadas: uma tag JavaScript com uma função, uma com a tags <form linhas de comandos /form> essas funcion sem problemas, a ultima que inicia com a tag <% e finaliza com %> não é reconhecida, simplesmente exibe o que é editado inclusive <% %>. Segue classe:
      <!-- <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>-->
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      <title>Consultar</title>
      </head>
      <body>
      <%
      out.println("Ola Mundo");
      %>
      </body>
      </html>

      O resultado no meu caso é exibido <%
      out.println("Ola Mundo");
      %>

      e não simplesmente a frase
      Ola Mundo (Como deveria ser)

      Informo que estou usando eclipse Photon, Apache Tomcat 9.0 (funcionando normalmente). O projeto foi adicionado ao servidor Apache. Java 1.8

      Por gentileza . Como devo proceder para que a fase seja exibida sem problemas?
    • Por marcelocardoso
      Galera.
      Num editor de noticias por exemplo, usar qualquer editor WYSIWYG para inserir noticias copiadas de outros sites para banco de dados, pergunto:
      Qual a maneira correta de limpar todas as TAGS HTML, deixando somente o TEXTO antes de gravar, e TRATAR somente oque quer deixar no TEXTO, tipo: deixar passar somente, <B> <EM> <STRONG>, etc....

      Tem alguma função no repositorio que faça isso.
      Fica a pergunta e a solicitação de conhecimento...

      Até....
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.