Ir para conteúdo

POWERED BY:

Arquivado

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

cmdmss

Cadastrar um checkbox no mysql pelo PHP

Recommended Posts

Prezados colegas.

 

Tenho uma página em HTML que tem alguns checkboxes, e gostaria de gravar sua marcação no mysql pelo PHP. Já cheguei a fazer a estrutura inicial, mas o mesmo só indica erro ao executar a ação, será q vcs podem dar uma olhada no codigo para me falarem oq está errado!?

 

Obrigado

 

HTML

<HTML><HEAD> <TITLE>Equipamentos e software</TITLE></HEAD><BODY><table border=0>	   <form method="POST" action="inclui.php">		  <input type="hidden" name="operacao" value="incluiequip">		  <tr>			  <td><input type=checkbox name="equip[]" value=0>2130 &nbspSerial:<input type=text name="serial2130"></td>		  </tr>		  <tr>			  <td><input type=checkbox name="equip[]" value=0>9210 &nbspSerial:<input type=text name="serial9210"></td>		  </tr>		  <tr>			  <td><input type=checkbox name="equip[]" value=0>9800 &nbspSerial:<input type=text name="serial9800"></td>		  </tr>		  <tr>			  <td><input type=checkbox name="equip[]" value=0>SonicScan &nbspSerial:<input type=text name="serialSonicScan"></td>		  </tr>		  <tr>			  <td><input type=checkbox name="equip[]" value=0>4500 &nbspSerial:<input type=text name="serial4500"></td>		  </tr>		  <tr>			  <td><input type=checkbox name="equip[]" value=0>5200 &nbspSerial:<input type=text name="serial5200"></td>		  </tr>		  <tr>			  <td><input type=checkbox name="equip[]" value=0>8130 &nbspSerial:<input type=text name="serial8130"></td>		  </tr>		  <input type="submit" name="submit" value="Vai!">	   </form></table></BODY></HTML>

PHP

else if ($operacao=="incluiequip")  {	if (isset($_POST['equip[]']))	{	 $value = '';	 foreach($_POST['equip[]'] as $value);	 $sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$value')");	 $linha = mysql_affected_rows();	}   if ($linha==1)   {	echo "Cadastrado com sucesso <br>";   }   else   {	echo "Problema!";   }  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao chega a aparecer nenhum erro! Somente o "Problema!" como mostra na inclui.php

 

Conforme solicitado

 

<HTML><HEAD> <TITLE>Documento PHP</TITLE></HEAD><BODY><?error_reporting(E_ALL ^ E_NOTICE);//força sistema a mostrar o erro// Conecta ao banco de dados  $operacao = $_POST["operacao"];  $conexao = mysql_connect("localhost","root","");  mysql_select_db("clientesvitek", $conexao);  if ($operacao=="incluir")  {// Recebe os valores do formulário HTML	$empresa = $_POST["empresa"];	$Uni = $_POST["uni"];	$End = $_POST["end"];	$Cid = $_POST["cid"];	$CNPJ = $_POST["cnpj"];	$CEP = $_POST["cep"];	$IE = $_POST["ie"];	$Contato = $_POST["nome"];	$aa = $_POST["atu"];	$telefone = $_POST["tel"];	$rama = $_POST["ramal"];	$email = $_POST["email"];	$celular = $_POST["celular"];	$dep = $_POST["dep"];// Insere os valores no banco de dados (Ação MySQL)	$sql = "INSERT INTO contatos (Empresa, Unidade, Endereco, Cidade, CNPJ, CEP, InscEst, NomeContato, AreaAtuacao, TelComercial, Ramal, EMail, CelularPes, Departamento) VALUES ('$empresa','$Uni','$End','$Cid','$CNPJ','$CEP','$IE','$Contato', '$aa','$telefone', '$rama', '$email', '$celular', '$dep')";	$resultado = mysql_query ($sql) or die (mysql_error());	echo "Cadastro efetuado com sucesso!";  }// Exclui valores do banco de dados  else if ($operacao=="excluir")  {	$Empresa = $_POST["empresa"];	$sql = "DELETE FROM contatos WHERE Empresa = '$empresa'";	$resultado = mysql_query ($sql, $conexao) or die (mysql_error());	$linha = mysql_affected_rows();	if ($linha==1)	{	 echo "Empresa excluído com sucesso!";	}	else	{	 echo "Empresa não encontrado";	}  }// Inclui equipamentos ao banco de dados  else if ($operacao=="incluiequip")  {	if (isset($_POST['incluiequip']))	{	 $value = '';	 foreach($_POST['incluiequip'] as $value);	 $sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$value')");	 $linha = mysql_affected_rows();	}   if ($linha==1)   {	echo "Cadastrado com sucesso <br>";   }   else   {	echo "Problema!";   }  }?></BODY></HTML>

O array que você vai utilizar é $_POST['equip'] e não $_POST['equip[]']. ;)

Ja cheguei a fazer este teste, mas o erro persiste! Obrigado pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o teste que você fez foi com o arquivo que você postou, não seria $_POST['equip'] no lugar de $_POST['incluiequip']? :huh:

 

Não tem porque estar errado usando assim.

 

Dê um print_r($_POST) antes de tudo e confira as variáveis corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.. eu coloquei o incluiequip agora para testar, antes estava como equip.

 

Vou tentar aqui oq você falou!

 

Abraço

 

Se o teste que você fez foi com o arquivo que você postou, não seria $_POST['equip'] no lugar de $_POST['incluiequip']? :huh:

 

Não tem porque estar errado usando assim.

 

Dê um print_r($_POST) antes de tudo e confira as variáveis corretamente.

Desculpe... mas só nao entendi o print_r($_POST)... como devo aplicá-lo?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, mesmo se os valores estiverem passando pelas variáveis, não irá i nserir nada no DB por causa disso:$sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$value')");porque só está definido um valor para a inserção, tudo bem que nessa variável estão todos os valores digitados, mais dessa forma o mysql irá interpretar com se foce um valor para um campo.Estou verificando como arrumar isso, assim que eu descobrir já posto o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, você fez esse mesmo post eu outro fórum, porém o cara já explicou tudo...

 

 

http://forum.codigofonte.net/index.php?sho...amp;#entry31804

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eis o que apareceu:Array ( [operacao] => incluiequip [equip] => Array ( [0] => 0 [1] => 0 ) [serial2130] => [serial9210] => [serial9800] => [serialSonicScan] => [serial4500] => [serial5200] => [serial8130] => [submit] => Vai! ) Sera que podem me explicar o que isso significa?!Nao sei porque, mas estou lendo coisas do tipo serial4500, serial5200, etc... e estes campos nao tem nada a ver com o que estou pedindo! Pois o php está direcionado para o checkbox... e nao para os text... :wacko:

Amigo, você fez esse mesmo post eu outro fórum, porém o cara já explicou tudo...http://forum.codigofonte.net/index.php?sho...amp;#entry31804

Mais ou menos... eu fiz oq eles falaram pra fazer... mas mesmo assim nao deu certo... e chegou a um ponto no qual eles queriam que eu fizesse algo diferente do que está nos planos aqui... por isso parei de responde-los! você pode ver no codigo que está igual a o que eles pediram pra fazer... e mesmo assim nao está dando certo... http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

A estrutura de um array é:

Array( [chave] => valor )
Ou seja, serialXXX é o name dos seus campos de texto ao lado dos checkbox, todos estão vazios.

 

Agora, somente os primeiro e segundo checkbox estão marcados cujo seus valores é zero, repare a dupla chave=>valor. ;)

 

Aconselho não colocar o atributo value nos checkboxes não, assim o padrão será 1 e nada para desmarcado que você pode definir como 0.

 

Bom, até aqui está tudo correto, dê uma olhada no que o The Cod te falou sobre a query que o erro de não estar inserindo com certeza está ai. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, seguinte.

 

Estpu fazendo aqui de outra forma... mas ainda sim está dando problemas! Estou muito desconfiado do tipo de dado que está setado no mysql...

 

+-----------------+------------+------+-----+---------+----------------+| Field		   | Type	   | Null | Key | Default | Extra		  |+-----------------+------------+------+-----+---------+----------------+| codigo		  | tinyint(4) | NO   | PRI | NULL	| auto_increment || vinteumtrinta   | bit(1)	 | YES  |	 | NULL	|				|| noventaedoisdez | bit(1)	 | YES  |	 | NULL	|				|| softwaremhm	 | bit(1)	 | YES  |	 | NULL	|				|| termografia	 | bit(1)	 | YES  |	 | NULL	|				|| sonicscan	   | bit(1)	 | YES  |	 | NULL	|				|| online		  | bit(1)	 | YES  |	 | NULL	|				|| trivector	   | bit(1)	 | YES  |	 | NULL	|				|| ultraspec	   | bit(1)	 | YES  |	 | NULL	|				|| 2130serial	  | int(11)	| YES  |	 | NULL	|				|| 9210serial	  | int(11)	| YES  |	 | NULL	|				|| mhmserial	   | int(11)	| YES  |	 | NULL	|				|| 9800serial	  | int(11)	| YES  |	 | NULL	|				|| sonicscanserial | int(11)	| YES  |	 | NULL	|				|| 4500serial	  | int(11)	| YES  |	 | NULL	|				|| 5200serial	  | int(11)	| YES  |	 | NULL	|				|| 8130serial	  | int(11)	| YES  |	 | NULL	|				|| obs			 | longtext   | YES  |	 | NULL	|				|+-----------------+------------+------+-----+---------+----------------+

Fico meio estranho a tabela... mas acho que dá para entender.

 

Fiz o PHP da seguinte forma

 

$vinteumtrinta = $_POST["2130"];	  $noventaedoisdez = $_POST["9210"];	  $termografia = $_POST["9800"];	  $ss = $_POST["ss"];	  $online = $_POST["4500"];	  $triv = $_POST["5200"];	  $ultra = $_POST["8130"];	  if ($vinteumtrinta == "on")	  {	   $vinteumtrinta = "1";	  }	  else	  {	   $vinteumtrinta = "0";	  }	  if ($noventaedoisdez == "on")	  {	   $noventaedoisdez = "1";	  }	  else	  {	   $noventaedoisdez = "0";	  }	  if ($termografia == "on")	  {	   $termografia = "1";	  }	  else	  {	   $termografia = "0";	  }	  if ($ss == "on")	  {	   $ss = "1";	  }	  else	  {	   $ss = "0";	  }	  if ($online == "on")	  {	   $online = "1";	  }	  else	  {	   $online = "0";	  }	  if ($triv == "on")	  {	   $triv = "1";	  }	  else	  {	   $triv = "0";	  }	  if ($ultra == "on")	  {	   $ultra = "1";	  }	  else	  {	   $ultra = "0";	  }	  $sql = mysql_query("INSERT INTO equipamentos (viteumtrinta,noventaedoisdez,termografia,sonicscan,online,trivector,ultraspe) VALUES ('$vinteumtrinta','$noventaedoisdez','$termografia','$ss','$online','$triv','$ultra')");	  $linha = mysql_affected_rows();	if ($linha==1)	{	 echo "Cadastrado com sucesso <br>";	}	else	{	 echo "Problema!";	 print_r($vinteumtrinta);	}  }

Acho que assim é pra dar certo... nao?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais estranho, é que quando coloco 0 ou 1 no lugar da variável após o VALUES no mysql, ele cadastra sem maiores problemas! Peço para ele mostrar o valor que está sendo entregue e variável e está mostrando 0 ou 1 de acordo com o que o usuário clica, mas quando coloco a variável após o VALUES no mysql, dá erro... :wacko:Agora q eu nao sei mesmo o que pode estar acontecendo... será q algum cientista aí do PHP pode me explicar o porque deste problema?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... tenho uma novidade.....ao entar entrar com o dado, mostra isso...."Data too long for column 'vinteumtrinta' at row 1"Alguem pode me dizer o que significa?! Pois se coloco o valor em vez da variável... funciona perfeitamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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