Ir para conteúdo

POWERED BY:

Arquivado

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

cristianomg

Gravar value do Checkbox no banco de dados separado por vírgula

Recommended Posts

E ae galera.

 

Seguinte estou tentando gravar as seleções de checkbox de um formulário na base onde se eu selecionar tipo Três checkbox estes values dos mesmos sejam gravados na tabela separados por virgula.

Mas esbarrei na inserção, pois minha inserção esta gravando "0" (zero) no banco.

 

Segue:

 

Seleção dos checkbox->

<form action="validar_checkbox.php" method="post">
<table width="28%" border="1" align="center">
	<TR>
          <TD>Opcionais</TD>
          <TD>
	    <INPUT type='checkbox' name='opcionais[]' value='1'>Ar Quente
            <INPUT type='checkbox' name='opcionais[]' value='2'>Ar Condicionado
            <INPUT type='checkbox' name='opcionais[]' value='3'>Direção Hidráulica
            <INPUT type='checkbox' name='opcionais[]' value='4'>Vidros Elétricos
            <INPUT type='checkbox' name='opcionais[]' value='5'>Trava<BR />
            <INPUT type='checkbox' name='opcionais[]' value='6'>Desembaçador Traseiro
            <INPUT type='checkbox' name='opcionais[]' value='7'>Alarme
            <INPUT type='checkbox' name='opcionais[]' value='8'>CD Player
	</TR>
  <tr>
    <td> </td>
    <td><input type="submit" name="enviar" id="button" value="Enviar" /></td>
  </tr>
</table>
</form>

Agora gravando, eu queria que tipo ficasse gravado na seleção ex: 3,4,6,7

 

fiz assim:

<?php

	include "include/conn.php";
		if($_POST['enviar']) {
			foreach($_POST['opcionais'] AS $valor) {
			echo $valor."<br>";
			$id=19;
			$sql=mysql_query("INSERT INTO interesse (idusuario, id_interesse) VALUES ('$id','$valor')") or die (mysql_error());
			}
		}
	?>
	

aqui no '$valor'

Acredito que eu deva tratar isso com um array ou algo parecido mas alguém tem ideia de como, nas minhas pesquisas todos fazer assim, mas não encontrei o que preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer salvar tudo separado por vírgula:

 

<?php
include "include/conn.php";


if($_POST['enviar']) {
    $opcionais = implode(',', $_POST['opcionais']);
$id=19;
$sql=mysql_query("INSERT INTO interesse (idusuario, id_interesse) VALUES ('$id','$opcionais')") or die (mysql_error());
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu caso $_POST['opcionais'] já um array. Basta um implode e terá uma string pra salvar no banco.

 

Mas essa é uma modelagem errada. O correto é criar uma tabela separada. Evite campos multivalorados. Veja: http://rberaldo.com.br/usando-campos-multivalorados/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo bem interessante.

 

Ok, mas então quando eu for salvar na base, eu vou ter de verificar se o checkbox ex:

 

<INPUT type='checkbox' name='opcionais[]' value='1'>Ar Quente

 

Se ele esta checked ai recebe o valor "S" senao recebe "N". ..isso para cada checkbox? armazenando em variaveis e depois repassando para o banco as variaveis com o valor da seelção?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cristiano

 

Se for o que entendi do teu problema eu trataria sim a várivael $valor, só que a gravação na tabela tem que ser fora do foreach(). Você executa o foreach(), e junta numa variavel, dentro do foreach() todos os código por exemplo:

$v_valor=$v_valor.','.$valor; - quando encerrar o foreach() a sua variavel $v_valor estará com o seguinte conteudo: 1,2,4,5.

Você finaliza fora do foeach() gravando o registro.

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.