Ir para conteúdo

POWERED BY:

Arquivado

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

Eder Cuer

Inserir vários dados checkbox no banco

Recommended Posts

Olá pessoal aqui estou de novo procurei muito e não resolvi...

Deixa eu explicar, eu tenho 2 tabelas que se relacionam, mrh(microrregião) e transportadora, nessa relação foi gerada uma outra tabela mrh_transportadora, na qual eu tenho (cod_mrh, cod_transp).

 

No meu formulário estou fazendo um while para mostrar a microrregião de certo estado, e todas em checkbox.

 

<?php
  		include ("connect.php");
       $consul=mysql_query("SELECT cod_mrh,nome FROM mrh WHERE cod_estado = 4");

       while ($dado = mysql_fetch_array($consul)) {
       	echo "<input type='checkbox' name='mrh[]' id='".htmlentities($dado['nome'])."' value='".htmlentities($dado['cod_mrh'])."' />" .htmlentities($dado['nome'])." " ;
	}
?>

 

O problema seria o seguinte, o usuário ta cadastrando uma transportadora, ai nos checkbox ele vai escolher quais microrregiões a sua transportadora atende.

 

Como faço pra pegar os valores e inserir na minha tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal aqui estou de novo procurei muito e não resolvi...

Deixa eu explicar, eu tenho 2 tabelas que se relacionam, mrh(microrregião) e transportadora, nessa relação foi gerada uma outra tabela mrh_transportadora, na qual eu tenho (cod_mrh, cod_transp).

 

No meu formulário estou fazendo um while para mostrar a microrregião de certo estado, e todas em checkbox.

 

<?php
  		include ("connect.php");
       $consul=mysql_query("SELECT cod_mrh,nome FROM mrh WHERE cod_estado = 4");

       while ($dado = mysql_fetch_array($consul)) {
       	echo "<input type='checkbox' name='mrh[]' id='".htmlentities($dado['nome'])."' value='".htmlentities($dado['cod_mrh'])."' />" .htmlentities($dado['nome'])." " ;
	}
?>

 

O problema seria o seguinte, o usuário ta cadastrando uma transportadora, ai nos checkbox ele vai escolher quais microrregiões a sua transportadora atende.

 

Como faço pra pegar os valores e inserir na minha tabela?

 

Para pegar os valores você usa

 

$x = $_POST['nome do input'];

ou

$x = $_GET['nome do input'];

De uma pesquisada nas diferenças deles para saber qual lhe atende mais adequadamente.

A julgar pelo que você descreveu você vai precisar gerar estas variaveis dinamicamente, assim como obteve mrh[] no seu código.

 

Para gravar estes dados use as funções como no código abaixo:

 

function update($iug,$nome){
require 'config.php';

//$conexao = mysql_connect($mysqlhost,$mysqluser,$mysqlkey);
$conexao = conect_mysql();
//$banco = mysql_select_db($mysqldb,$conexao);
$query = "INSERT INTO `updates` (`iug` , `nome` ,`data` , `hora`) VALUES('$iug' , '$nome' , '$data' , '$hora')";

$runn = mysql_query($query,$conexao);

if($runn){return true;}
else{echo ("Update erro query: ".mysql_error());
	return false;}

}

function conect_mysql(){
require 'config.php';

$conexao = mysql_connect($mysqlhost,$mysqluser,$mysqlkey);
$banco = mysql_select_db($mysqldb,$conexao);

	if (!$conexao){
		die ("Erro de conexao com: $host ,<BR>O seguinte erro ocorreu : ".mysql_error());
		return false;
		}

	else{
		if (!$banco){
		die ("Erro de conexao com banco de dados: $database <BR>O seguinte erro ocorreu : ".mysql_error());
		return false;
		}
else
	return $conexao;
}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal aqui estou de novo procurei muito e não resolvi...

Deixa eu explicar, eu tenho 2 tabelas que se relacionam, mrh(microrregião) e transportadora, nessa relação foi gerada uma outra tabela mrh_transportadora, na qual eu tenho (cod_mrh, cod_transp).

 

No meu formulário estou fazendo um while para mostrar a microrregião de certo estado, e todas em checkbox.

 

<?php
  		include ("connect.php");
       $consul=mysql_query("SELECT cod_mrh,nome FROM mrh WHERE cod_estado = 4");

       while ($dado = mysql_fetch_array($consul)) {
       	echo "<input type='checkbox' name='mrh[]' id='".htmlentities($dado['nome'])."' value='".htmlentities($dado['cod_mrh'])."' />" .htmlentities($dado['nome'])." " ;
	}
?>

 

O problema seria o seguinte, o usuário ta cadastrando uma transportadora, ai nos checkbox ele vai escolher quais microrregiões a sua transportadora atende.

 

Como faço pra pegar os valores e inserir na minha tabela?

 

Para pegar os valores você usa

 

$x = $_POST['nome do input'];

ou

$x = $_GET['nome do input'];

De uma pesquisada nas diferenças deles para saber qual lhe atende mais adequadamente.

A julgar pelo que você descreveu você vai precisar gerar estas variaveis dinamicamente, assim como obteve mrh[] no seu código.

 

Para gravar estes dados use as funções como no código abaixo:

 

function update($iug,$nome){
require 'config.php';

//$conexao = mysql_connect($mysqlhost,$mysqluser,$mysqlkey);
$conexao = conect_mysql();
//$banco = mysql_select_db($mysqldb,$conexao);
$query = "INSERT INTO `updates` (`iug` , `nome` ,`data` , `hora`) VALUES('$iug' , '$nome' , '$data' , '$hora')";

$runn = mysql_query($query,$conexao);

if($runn){return true;}
else{echo ("Update erro query: ".mysql_error());
	return false;}

}

function conect_mysql(){
require 'config.php';

$conexao = mysql_connect($mysqlhost,$mysqluser,$mysqlkey);
$banco = mysql_select_db($mysqldb,$conexao);

	if (!$conexao){
		die ("Erro de conexao com: $host ,<BR>O seguinte erro ocorreu : ".mysql_error());
		return false;
		}

	else{
		if (!$banco){
		die ("Erro de conexao com banco de dados: $database <BR>O seguinte erro ocorreu : ".mysql_error());
		return false;
		}
else
	return $conexao;
}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eae Rafael, acho que você não entendeu, como pegar uma variavel via post ou get eu sei.

O problema está em inserir varios dados no banco de dados ao mesmo tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu entender melhor o relacionamento entre as suas tabelas.

você tem 01 tabela com as Microrregiões, 01 tabela com as Transprtadoras e uma terceira tabela que você relaciona as 02 primeiras tabelas?

você faz o cadastro de determinada Transportadora e seleciona as Microrregiões (checkbox) que esta transportadora atende. Seria essa a idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo manolegal, ai na pagina de cadastro das transportadoras eu tenho varios checkbox com as microrregiões onde a pessoa escolhe qual a transportadora atende.

 

Eu fiz o seguinte:

 

	$sql2 = "SELECT cod_transp FROM transportadora WHERE cnpj='$cnpj'";
	$res = mysql_query($sql2);


	$dados = mysql_fetch_array($res);

	$id = $dados['cod_transp'];

	foreach($_POST['mrh'] as $value){
       	echo $value;
       	$insert = mysql_query("INSERT INTO mrh_transportadora VALUES ('$id', '$value')");                
	}

 

Mas não está inserindo os vários registros, registra só 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eder

Nesta situação eu faria o seguinte: criaria um formulário para o cadastro das microrregiões e outro formulário para o cadastro das transportadoras e a "associação" das regiões atendidas pela transportadora. Neste segundo formulário, faria a inserção dos dados nas 02 tabelas: "transportadora" e "mrh_transportadora".

No seu caso pelo que vi, você cadastra primeiro as transportadoras e em um terceiro formulário faz a associação transportadora/regiões. Seria isso? Gostaria de entender bem a situação. Se possível, poste mais códigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase isso Manolegal, na verdade o cadastro de microrregiões é feita pelo adm do site, ai quando uma pessoa vai cadastrar uma transportadora vai ta la já a microrregião.

 

Mas ai no caso uso um formulario unico, ai coleto as informações de quais microrregiões a transportadora atende, pego o codigo da transportadora e insiro na tabela gerada pelo relacionamento. O que ta acontecendo é que fiz um foreach mas ta inserindo só um registro.

 

Meu codigo ta bem grande, mas vou tentar postar as partes mais importantes.

 

cadastrotr.php (aqui é meu formulario, e estou chamando a pagina que monta os check vindo do banco):

 

<tr>
                       <td colspan="2">Microregiões (escolha as microregiões que sua transportadora atende)</td>
                     </tr>
                     <tr>
                       <td> </td>
                       <td> </td>
                     </tr>
                     <tr>
                       <td>
						<?php include("include/mrh.php"); ?>                        </td>
                       <td> </td>
                     </tr>

 

 

Agora é a pagina que chamei via include mrh.php:

 

<div id="box-toggle">

   Microrregião do Acre
   <div class="tgl">
  <?php
  		include ("connect.php");
       $consul=mysql_query("SELECT cod_mrh,nome FROM mrh WHERE cod_estado = 4");

       while ($dado = mysql_fetch_array($consul)) {
       	echo "<input type='checkbox' name='mrh[]' id='".htmlentities($dado['nome'])."' value='".htmlentities($dado['cod_mrh'])."' />" .htmlentities($dado['nome'])." " ;
	}
?>
   </div>
</div>

 

e agora a pagina que eu tento inserir os dados (completo) cadastratr.php:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Freta Brasil</title>
</head>

<?php

include("include/connect.php");
include("include/validacnpj.php");

$nome       = mysql_escape_string(trim($_POST['nome']));
$razao      = mysql_escape_string(trim($_POST['razao']));
$cnpj       = mysql_escape_string(trim($_POST['cnpj']));
$natureza   = mysql_escape_string(trim($_POST['natureza']));
$inscr      = mysql_escape_string(trim($_POST['inscr']));
$cep        = mysql_escape_string(trim($_POST['cep']));
$endereco   = mysql_escape_string(trim($_POST['endereco']));
$bairro     = mysql_escape_string(trim($_POST['bairro']));
$cod_cid    = mysql_escape_string(trim($_POST['cidade']));
$telefone   = mysql_escape_string(trim($_POST['telefone']));
$celular    = mysql_escape_string(trim($_POST['celular']));
$fax        = mysql_escape_string(trim($_POST['fax']));
$contato    = mysql_escape_string(trim($_POST['contato']));
$contato2   = mysql_escape_string(trim($_POST['contato2']));
$email      = mysql_escape_string(trim($_POST['email']));
$conf_email = mysql_escape_string(trim($_POST['conf_email']));
$login      = mysql_escape_string(trim($_POST['login']));
$senha      = md5(mysql_escape_string(trim($_POST['senha'])));
$conf_senha = md5(mysql_escape_string(trim($_POST['conf_senha'])));
$respeso    = mysql_escape_string(trim($_POST['respeso']));
$rescomp    = mysql_escape_string(trim($_POST['rescomp']));
$resalt     = mysql_escape_string(trim($_POST['resalt']));
$resliq     = mysql_escape_string(trim($_POST['resliq']));
$resgranel  = mysql_escape_string(trim($_POST['resgranel']));
$resviva    = mysql_escape_string(trim($_POST['resviva']));
$resdanger  = mysql_escape_string(trim($_POST['resdanger']));
$resoutra   = mysql_escape_string(trim($_POST['resoutra']));
$politica   = mysql_escape_string(trim($_POST['politica']));
$term       = mysql_escape_string(trim($_POST['term']));



	$vercnpj   = "SELECT * FROM transportadora WHERE cnpj = '$cnpj'";
	$verlogin  = "SELECT * FROM usuario WHERE login = '$login'";

	$v        = mysql_query($vercnpj);
	$l        = mysql_query($verlogin);

if(mysql_num_rows($v)>0){
	echo "CNPJ ja cadastrado em nossa base de dados!";
}elseif(mysql_num_rows($l)>0){
	echo "Este login ja esta sendo usado!";
}elseif(empty($nome) || empty($razao) || empty($cnpj) || empty($endereco) || empty($telefone) || empty($email) || empty($conf_email) || empty($natureza) || empty($inscr) || empty($bairro) || empty($cep) || empty($login) || empty($senha) || empty($conf_senha) || empty($respeso) || empty($rescomp) || empty($resalt) || empty($resliq) || empty($resgranel) || empty($resviva) || empty($resdanger) || empty($cod_cid) || empty($politica) || empty($term)){

	echo 'Por favor, digite todos os campos obrigatrios!</br>
		<a href="cadastro.php">Voltar</a>
	';

}elseif(isCNPJ($cnpj)){

	$sql = "INSERT INTO transportadora
			(razao_social, nome, natureza, cep, bairro, endereco, cnpj, insc_est, telefone, fax, contato1, contato2, celular, email, login, senha, rest_peso, rest_comp, rest_altura, rest_granel, rest_liquido, rest_viva, rest_perigosa, rest_outras, cod_cid)		                VALUES('$razao', '$nome', '$natureza', '$cep', '$bairro', '$endereco', '$cnpj', '$inscr', '$telefone', '$fax', '$contato', '$contato2', '$celular', '$email', '$login', '$senha', '$respeso', '$rescomp', '$resalt', '$resgranel', '$resliq', '$resviva', '$resdanger', '$resoutra', $cod_cid);";



	mysql_query($sql,$con);
	echo mysql_error();

	$sql2 = "SELECT cod_transp FROM transportadora WHERE cnpj='$cnpj'";
	$res = mysql_query($sql2);


	$dados = mysql_fetch_array($res);

	$id = $dados['cod_transp'];

	foreach($_POST['mrh'] as $value){
       	echo $value;
       	$insert = mysql_query("INSERT INTO mrh_transportadora VALUES ('$id', '$value')");                
	}

}else{
	echo "CNPJ inválido!";
}

?>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eder

 

A idéia é mais ou menos a seguinte:

 

cadastratr.php

$mrh = $_POST ["mrh"]; // Recebe os dados "check" das regiões marcadas pelo usuário (01 região ou mais)
$nome = mysql_escape_string(trim($_POST['nome'])); // Recebe nome transportadora, etc
$razao = mysql_escape_string(trim($_POST['razao']));
............


$id = $dados['cod_transp']; // Pelo que entendi, seria o id da transportadora em questão

// Cria laço para inserir os dados na tabela "mrh_transportadora", podendo inserir várias linhas
for($i=0; $i<count($mrh); $i++) {
$insert = mysql_query("INSERT INTO mrh_transportadora (id_transportadora, id_regiao)
VALUES ('$id', '$mrh[$i]')");                
}
// Considerei "id_transportadora" e "id_regiao" os nomes das colunas da sua tabela "mrh_transportadora"

 

Testa aí e posta o resultado. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Manolegal valeu pela força cara :thumbsup:

Achei o que estava ocorrendo no meu código, vou explicar

 

Minha tabela é assim:

 

mrh_transportadora

  • cod_mrh
  • cod_transp

 

E na hora de inserir eu tava invertendo os codigos e também não estava colocando os campos:

               foreach($_POST['mrh'] as $value){
               echo $value;
               $insert = mysql_query("INSERT INTO mrh_transportadora VALUES ('$id', '$value')");                
               }

 

 

Ai eu só coloquei os campos da tabela e inverti $id com o $value:

 

	foreach($_POST['mrh'] as $value){
       	echo $value;
       	$insert = mysql_query("INSERT INTO mrh_transportadora(cod_mrh, cod_transp) VALUES ('$value', '$id')");                
	}

 

 

E ta funcionado agora :clap:

 

Nossa cara brigadão mesmo por ajudar

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.