Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Antoliv

Como Gravar ID de checkbox que vem de tabelas em outra tabela?

Recommended Posts

O valor digitado no input não é enviado para o banco.

 

esquece a parte de enviar para o banco

pra vc enviar pro banco primeiro tem que ter os dados

entao se preocupe em recuperar corretamente os dados que o form envia

 

os dados dos campos devem estar num array

$check_prod = $_POST["txt_preco"];

 

na imagem que vc postou tem um '2' da onde vem ele?

nos campos, todos estao com a palavra 'array' vc colocou?

 

vc tem que investigar pra ver que parte esta errado

vai testando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Não coloquei os arrays...... fiz uma correção..

a questão é que não sei mais onde investigar por tanto ter investigado...

a cabeça já não pensa bem...rs

 

Estou utilizando este codigo, agora:

 

<?php require_once("config/config.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PRODUTO PARA LISTA</title>
</head>
<body>
<p>
<?php
?>
<form id="form1" name="form1" method="post" action="add_produtos_carrinho.php?funcao=gravarProdutosAddCarrinho3">
<p>
<label>
<input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />
</label>
</p>
<table width="997" border="1" align="center" cellpadding="10" cellspacing="0">
<tr>
<td width="3" bgcolor="#BFCDDB"> </td>
<td width="53" bgcolor="#BFCDDB"><strong>COD</strong></td>
<td width="139" bgcolor="#BFCDDB"><strong>NOME PROD</strong></td>
<td width="206" bgcolor="#BFCDDB"><strong>DESCRICAO</strong></td>
<td width="90" bgcolor="#BFCDDB"><strong>PRECO</strong></td>
<td width="30" bgcolor="#BFCDDB"><strong>uf</strong></td>
<td width="20" bgcolor="#BFCDDB"> </td>
</tr>
<?php
$sql_exibir = "SELECT DISTINCT p.id_produtos, p.fk_cate3, c3.nome_cate3, p.desc_produto, p.preco_produto, p.fk_usuario_sessao, e.uf FROM tb_produtos p INNER JOIN tb_categoria3 c3 ON p.fk_cate3 = c3.id_cate3 INNER JOIN tb_endereco e INNER JOIN tb_clientes cli on e.id_endereco = cli.fk_endereco ORDER BY p.preco_produto";
$query_exibir = mysql_query($sql_exibir);
if (isset($_GET['funcao'])){
// AÇÃO - ADICIONA PRODUTOS
if ($_GET['funcao'] == "gravarProdutosAddCarrinho3"){
$check_prod = $_POST["txt_preco"][3];
foreach($_POST['produto'] as $value){
echo $value;
$insert = mysql_query("INSERT INTO tb_car_teste(nome_produto, desc_produto, fk_produtos, preco)VALUES('$value[0]', '', '$value[1]$value[2]', '$check_prod')");
echo "Produto Cadastrado com Sucesso. Redirecionando...";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='1;URL=add_produtos_carrinho.php'>";
echo $value . '<br/>';
}}}
while ($sql_exibir = mysql_fetch_array($query_exibir)) {
$cod_produto = $sql_exibir["id_produtos"];
$nome_fk_prod = $sql_exibir["fk_cate3"];
$nome_produto = $sql_exibir["nome_cate3"];
$descricao_prod = $sql_exibir["desc_produto"];
$preco_prod = $sql_exibir["preco_produto"];
?>
<tr>
<td><?php echo $cod_produto; ?></td>
<td><?php echo $nome_fk_prod ?> </td>
<td><?php echo $nome_produto; ?> </td>
<td><?php echo $descricao_prod; ?> </td>
<td><label for="txt_preco"></label>
<input name="txt_preco[3]" type="text" id="txt_preco[]" value="<?php echo $check_prod; ?>" size="15" /></td>
<td> </td>
<td><input type="checkbox" name="produto[]" id="produto[]" value="<?php echo $nome_fk_prod; ?><?php echo $cod_produto; ?><?php echo $check_prod[3]; ?>"/>
<label for="produto[]"></label></td>
</tr>
<?php
}
?>
<tr>
<td></td>
<td height="2"></td>
</tr>
</table>
</form>
<p> </p>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz um teste com seu código aqui e uma tabela minha, funcionou, recebe os campos marcados e os preços.

mas tem muita coisa estranha.

sua assinatura diz que você é desenvolvedor, você deve manjar,

então eu queria entender o que aquele redirecionamento faz dentro do loop?

ja que se ele for redirecionado ele só executa uma vez.

 

ja disse isso antes, no checkbox você pois

<?php echo $check_prod[3]; ?>

ele é definida por $_POST["txt_preco"];

ou seja, quando você abrir a pagina por link ou diretamente ele fica sem valor, e vc não fez nada pra contornar isso

 

se eu fosse você, não faria tudo no mesmo arquivo, acho que fica muito misturado e confuso, submete pra outro arquivo, onde você recebe os dados e grava e redireciona de volta pra formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, no código original, são dois arquivos. Um é o html e outro recebe os dados.

Acredito que o problema esteja aqui:

 

<td><input type="checkbox" name="produto[]" id="produto[]" value="<?php echo $nome_fk_prod; ?><?php echo $cod_produto; ?><?php echo $check_prod; ?>"/>

 

Já enviei via POST o campo:

<input name="txt_preco[]" type="text" id="txt_preco[]" value="" size="15" /></td>

na página inserir.php.

 

Você disse que executou o teste e funcionou.

Você tem esse teu código para postar? Talvez, possa me ajudar na elucidação.

 

Separemo-los:

 

INDEX.PHP

 

<?php require_once("config/config.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PRODUTO PARA LISTA</title>
</head>
<body>
<p>
<form id="form1" name="form1" method="post" action="inserir.php?funcao=gravarProdutosAddCarrinho3">
<p>
<label>
<input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />
</label>
</p>
<table width="997" border="1" align="center" cellpadding="10" cellspacing="0">
<tr>
<td width="3" bgcolor="#BFCDDB"> </td>
<td width="53" bgcolor="#BFCDDB"><strong>COD</strong></td>
<td width="139" bgcolor="#BFCDDB"><strong>NOME PROD</strong></td>
<td width="206" bgcolor="#BFCDDB"><strong>DESCRICAO</strong></td>
<td width="90" bgcolor="#BFCDDB"><strong>PRECO</strong></td>
<td width="30" bgcolor="#BFCDDB"><strong>uf</strong></td>
<td width="20" bgcolor="#BFCDDB"> </td>
</tr>
<?php
$sql_exibir = "SELECT DISTINCT p.id_produtos, p.fk_cate3, c3.nome_cate3, p.desc_produto, p.preco_produto, p.fk_usuario_sessao, e.uf FROM tb_produtos p INNER JOIN tb_categoria3 c3 ON p.fk_cate3 = c3.id_cate3 INNER JOIN tb_endereco e INNER JOIN tb_clientes cli on e.id_endereco = cli.fk_endereco ORDER BY p.preco_produto";
$query_exibir = mysql_query($sql_exibir);
while ($sql_exibir = mysql_fetch_array($query_exibir)) {
$cod_produto = $sql_exibir["id_produtos"];
$nome_fk_prod = $sql_exibir["fk_cate3"];
$nome_produto = $sql_exibir["nome_cate3"];
$descricao_prod = $sql_exibir["desc_produto"];
$preco_prod = $sql_exibir["preco_produto"];
$check_prod = $_POST["txt_preco"];
?>
<tr>
<td><?php echo $cod_produto; ?></td>
<td><?php echo $nome_fk_prod ?> </td>
<td><?php echo $nome_produto; ?> </td>
<td><?php echo $descricao_prod; ?> </td>
<td><label for="txt_preco"></label>
<input name="txt_preco[]" type="text" id="txt_preco[]" value="" size="15" /></td>
<td> </td>
<td><input type="checkbox" name="produto[]" id="produto[]" value="<?php echo $nome_fk_prod; ?><?php echo $cod_produto; ?><?php echo $check_prod; ?>"/>
<label for="produto[]"></label></td>
</tr>
<?php
}
?>
<tr>
<td></td>
<td height="2"></td>
</tr>
</table>
</form>
<p> </p>
</body>
</html>
INSERIR.PHP
<?php
$conexao = mysql_connect("localhost", "root", "vertrigo");
mysql_select_db("banco");
if (isset($_GET['funcao'])){
// AÇÃO - ADICIONA PRODUTOS
if ($_GET['funcao'] == "gravarProdutosAddCarrinho3"){
foreach($_POST['produto'] as $value) {
echo $value;
$insert = mysql_query("INSERT INTO tb_car_teste(nome_produto, fk_produtos, preco)VALUES('$value[0]', '$value[1]$value[2]', '$value[3]')");
}}}
echo "Produto Cadastrado com Sucesso. Redirecionando...";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='1;URL=add_produtos_carrinho.php'>";
echo $value . '<br/>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, existe várias maneira de fazer isso

fiz de um jeito que tento manter a forma que você vinha fazendo, também não cuidei de segurança e outros detalhes, fiz só o mínimo pra você continuar daqui e lógico, não copie e cole porque não vai funcionar, tem que editar os dados da conexão, tabelas, índices

 

index.php

<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>
            <form id="form1" name="form1" method="post" action="inserir.php">
                <input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />
                <table width="997" border="1" align="center" cellpadding="10" cellspacing="0">
                    <tr bgcolor="#BFCDDB">
                        <td width="3"> </td>
                        <td width="53"><strong>COD</strong></td>
                        <td width="139"><strong>NOME PROD</strong></td>
                        <td width="206"><strong>DESCRICAO</strong></td>
                        <td width="90"><strong>PRECO</strong></td>
                        <td width="30"><strong>CHECK</strong></td>
                    </tr>
                    <?php
                    $link = mysqli_connect('localhost', 'root', '', 'umbanco');
                    $sql_exibir = "SELECT * from umatabela";
                    $query_exibir = mysqli_query($link, $sql_exibir);

                    while ($sql_exibir = mysqli_fetch_array($query_exibir)) {

                        //aqui você coloca conforme sua tabela

                        $cod_produto = $sql_exibir[2];
                        $nome_fk_prod = $sql_exibir[0];
                        $nome_produto = $sql_exibir[2];
                        $descricao_prod = $sql_exibir[1];
                        $preco_prod = $sql_exibir[2];
                        ?>

                        <tr>
                            <td><?php echo $cod_produto; ?></td>
                            <td><?php echo $nome_fk_prod ?></td>
                            <td><?php echo $nome_produto; ?></td>
                            <td><?php echo $descricao_prod; ?></td>
                            <td>
                                <input name="txt_preco[]" type="text" id="txt_preco" size="15"/>
                            </td>
                            <td>
                                <input type="checkbox" name="produto[]" id="produto" value="<?php echo "$nome_fk_prod|$cod_produto|$nome_produto|$descricao_prod"; ?>"/>
                            </td>
                        </tr>
                        <?php
                    }
                    ?>

                </table>
            </form>

        </div>
    </body>
</html>

inserir.php

<?php

//retira os elementos vazios e reordena os indices
$_POST['txt_preco'] = array_values(array_filter($_POST['txt_preco']));

//var_dump($_POST);
$check_prod = $_POST["txt_preco"];

//auxilar para acessar indices de $_POST['produto'] e $check_prod
$i = 0;
foreach ($_POST['produto'] as $value) {

    //separamos a string contidado no checkbox
    list ($fk_produtos, $cod_produto, $nome_produto, $descricao_prod) = explode('|', $value);

    echo("INSERT INTO tb_car_teste(nome_produto, desc_produto, fk_produtos, preco)VALUES('$nome_produto', '$descricao_prod', '$fk_produtos', '" . $check_prod[$i] . "')<br>");
    echo '<br/>';
    $i++;
}

//agora que já gravou, redireciona de volta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eletronic, não consegui.

Desde já te agradeço pela força e companheirismo em solucionar o problema, brother.

 

Reduzi o código e retirei apenas dois campos. Não consigo inserir no banco. A tua lógica ficou bem bacana. O código ficou fácil de compreender. Contudo, meu camarada, parece que não estou conseguindo inserir os dados.

 

Segue o CÓDIGO:

 

 

INDEX.PHP

 

<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<form id="form1" name="form1" method="post" action="inserir2.php">
<input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />
<table width="997" border="1" align="center" cellpadding="10" cellspacing="0">
<tr bgcolor="#BFCDDB">
<td width="53"><strong>COD</strong></td>
<td width="139"><strong>NOME PROD</strong></td>
<td width="90"><strong>PRECO</strong></td>
<td width="30"><strong>CHECK</strong></td>
</tr>
<?php
$link = mysqli_connect('localhost', 'root', 'vertrigo', 'db_obragenio');
$sql_exibir = "SELECT DISTINCT p.id_produtos, p.fk_cate3, c3.nome_cate3, p.desc_produto, p.preco_produto, p.fk_usuario_sessao, e.uf FROM tb_produtos p INNER JOIN tb_categoria3 c3 ON p.fk_cate3 = c3.id_cate3 INNER JOIN tb_endereco e INNER JOIN tb_clientes cli on e.id_endereco = cli.fk_endereco ORDER BY p.preco_produto";
$query_exibir = mysqli_query($link, $sql_exibir);
while ($sql_exibir = mysqli_fetch_array($query_exibir)) {
$nome_fk_prod = $sql_exibir[1];
$nome_produto = $sql_exibir[0];
?>
<tr>
<td><?php echo $nome_fk_prod ?></td>
<td><?php echo $nome_produto; ?></td>
<td>
<input name="txt_preco[]" type="text" id="txt_preco" size="15"/>
</td>
<td>
<input type="checkbox" name="produto[]" id="produto" value="<?php echo "$nome_fk_prod|$nome_produto"; ?>"/>
</td>
</tr>
<?php
}
?>
</table>
</form>
</div>
</body>
</html>
INSERIR.PHP
<?php
$conexao = mysql_connect("localhost", "root", "senha");
mysql_select_db("banco");
//retira os elementos vazios e reordena os indices
$_POST['txt_preco'] = array_values(array_filter($_POST['txt_preco']));
//var_dump($_POST);
$check_prod = $_POST["txt_preco"];
//auxilar para acessar indices de $_POST['produto'] e $check_prod
$i = 0;
foreach ($_POST['produto'] as $value) {
//separamos a string contidado no checkbox
list ($nome_fk_prod, $nome_produto) = explode('|', $value);
$sql = ("INSERT INTO tb_car_teste(nome_produto, fk_produtos, preco)VALUES('$nome_fk_prod', '$nome_produto', '" . $check_prod[$i] . "')<br>") or die ("Não eh possivel inserir no banco de dados");
$gravar = mysql_query($sql);
echo '<br/>';
$i++;
}//agora que já gravou, redireciona de volta
?>
Acredito que seja apenas um detalhe que não estou vendo.
Vi teu post assim que vc postou, e logo parti para executar os códigos.
abç..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Opa! Vamos laá..
($conexao = mysql_connect("localhost", "root", "vertrigo"));
mysql_select_db("db_obragenio");
echo mysql_errno($link) . ": " . mysql_error($link). "\n";
-------------------------------------------------------------------------------------------
ulizando o mysql_error, é exibida tela em branco;
mysql_errno é exibido o resultado "0"(zero) como resultado na tela.
Quanto tento debugar com o Netbeans, são exibidas as seguintes mensagens::
Warning: array_filter() [function.array-filter]: The first argument should be an array in C:\Program Files\VertrigoServ\www\obraGenio2\inserir2.php on line 10
Esta é a linha 10:
$_POST['txt_preco'] = array_values(array_filter($_POST['txt_preco']));

Warning: array_values() [function.array-values]: The argument should be an array in C:\Program Files\VertrigoServ\www\obraGenio2\inserir2.php on line 10
Esta é a linha 10:
$_POST['txt_preco'] = array_values(array_filter($_POST['txt_preco']));

Warning: Invalid argument supplied for foreach() in C:\Program Files\VertrigoServ\www\obraGenio2\inserir2.php on line 17
Esta é a linha 17:
foreach ($_POST['produto'] as $value) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que vc copiou e colou o exemplo do php.net sem mudar o nome da variável

mysql_error($link) recebe a variável da sua conexão (sua conexao e $conexao e nao $link).

outra coisa, mysql_error mostra mensagem de erro da operação anterior, então coloque ele depois do insert e nao só da conexão.

 

Sobre os erros

cara analisa um pouco

essa pagina foi feita pra trabalhar com dados enviados pelo formulário, se você abre ele diretamente no navegador, vai aparecer esse erros, pois ela não vai ter os dados, e as funções vão dar pau, pois não tem nenhuma verificação antes, fiz ela mai simples possível.

teste ela clicando no botão enviar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

(quanto simples, melhor.)

Perdão, brother.
Na verdade, copiei e sim; só que ao postar pra vc de forma mais completa, acabei copiando do site a função. Na verdade,

No meu codigo está:

 

$conexao = mysql_connect("localhost", "root", "senha");
mysql_select_db("banco");
echo mysql_errno($conexao) . ": " . mysql_error($conexao). "\n";;

 

Outra, os testes dos quais executei, que foram vários, todos eles a partir da pagina INDEX, através do botão Enviar.

 

 

 

-------------------------------------------------------------------------------------------------------------

-- phpMyAdmin SQL Dump
-- version 2.11.11
--
-- Servidor: localhost
-- Tempo de Geração: Jan 04, 2015 as 09:57 PM
-- Versão do Servidor: 5.0.91
-- Versão do PHP: 5.2.14
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Banco de Dados: `banco`
--
-- --------------------------------------------------------
--
-- Estrutura da tabela `tb_car_teste`
--
CREATE TABLE IF NOT EXISTS `tb_car_teste` (
`id_car` int(11) NOT NULL auto_increment,
`nome_produto` varchar(20) default NULL,
`fk_produtos` varchar(20) default NULL,
`preco` varchar(20) default NULL,
PRIMARY KEY (`id_car`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2009 ;
--
-- Extraindo dados da tabela `tb_car_teste`
--
INSERT INTO `tb_car_teste` (`id_car`, `nome_produto`, `fk_produtos`, `preco`) VALUES
(2000, '', '34', ''),
(2001, '', '37', ''),
(2002, '', '12', ''),
(2003, '', '11', ''),
(2004, '', '35', ''),
(2005, '', '35', ''),
(2006, '', '11', '33'),
(2007, '', '31', '333'),
(2008, '', '34', '11'),
(1997, '', '12', ''),
(1983, '', '39/5', ''),
(1998, '', '11', ''),
(1999, '', '31', ''),
(1926, '6', '', '345.000');
esta é a tabela que recebe do "checkbox", digamos assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhando aqui, vi que vc não tirou o <br> onde está o insert, pode ser um dos problemas

quanto ao colocar o mysql_error depois do insert o que deu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Echo:

 

echo("INSERT INTO tb_car_teste(nome_produto, fk_produtos, preco)VALUES('$nome_fk_prod', '$nome_produtos', '". $check_prod[$i] ."'))<br>") ;

 

Exibe

INSERT INTO tb_car_teste(nome_produto, fk_produtos, preco)VALUES('5', '11', '123'));

 

Só não sei porque não consigo inserir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Modifiquei, mas mas ao clicar no botão enviar, nada aparece na tela; tela em branco.

 

<?php
$conexao = mysql_connect("localhost", "root", "senha");
mysql_select_db("banco");
//echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
//retira os elementos vazios e reordena os indices
$_POST['txt_preco'] = array_values(array_filter($_POST['txt_preco']));
//var_dump($_POST);
$check_prod = $_POST["txt_preco"];
//auxilar para acessar indices de $_POST['produto'] e $check_prod
$i = 0;
foreach ($_POST['produto'] as $value) {
//separamos a string contidado no checkbox
list ($nome_fk_prod, $nome_produtos) = explode('|', $value);
$gravar = ("INSERT INTO tb_car_teste(nome_produto, fk_produtos, preco)mysql_query(VALUES('$nome_fk_prod', '$nome_produtos', '". $check_prod[$i] ."'))") ;
echo mysql_error($conexao);
echo '<br/>';
$i++;
}//agora que já gravou, redireciona de volta
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

descomenta a linha //var_dump($_POST);

cara voce tem que ir testando seu codigo com echo ou var_dump() pra vc saber se as variavel estão estão como se espera, se estivar errado eu não ter valor, você tem que voltar onde ela foi definida, e ver se tem algo errado lá, assim você sabe onde esta o erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eletronic, funfou!!!

 

Antes eu tinha removido o campo desc_produto da tabela.

No caso, tornei a acrescentar o campo "desc_produto". Vale ressaltar também que removi a tag < br>, que fica no final do INSERT, veja:

 

mysql_query("INSERT INTO tb_car_teste(nome_produto, desc_produto, fk_produtos, preco)VALUES('$nome_produto', '$descricao_prod', '$fk_produtos', '" . $check_prod[$i] . "')");

 

Cara, não sei como te agradecer. Você dedicou atenção e tempo, coisas preciosas pra nós que busca estudar, não é verdade?

 

Brother, todo crédito desta solução é tua. Pesquisei por bastante e tempo, e, posso afirmar sem medo de errar, este é POST mais completo de:

 

- inserção múltipla de dados;

- inserir id de uma tabela em outra tabela por checkbox;

- checkbox dinâmico;

- CHECKBOX COM DADOS DE UMA TABELA, GRAVAR EM OUTRA;

 

Em fim, todas essas perguntas se resumem na solução deste post.

 

A única diferença do meu codigo para o codigo, teu, Eletronic é apenas a tag < br> que fora removida...aquela no final do INSERT.

 

Vou compartilhar a solução, que fora colocado pelo Eletronic no post acima com os companheiros

 

 

INDEX.PHP

 

 

<!DOCTYPE html>
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<form id="form1" name="form1" method="post" action="inserir.php">
<input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />
<table width="997" border="1" align="center" cellpadding="10" cellspacing="0">
<tr bgcolor="#BFCDDB">
<td width="3"> </td>
<td width="53"><strong>COD</strong></td>
<td width="139"><strong>NOME PROD</strong></td>
<td width="206"><strong>DESCRICAO</strong></td>
<td width="90"><strong>PRECO</strong></td>
<td width="30"><strong>CHECK</strong></td>
</tr>
<?php
$link = mysqli_connect('localhost', 'root', 'vertrigo', 'db_obragenio');
$sql_exibir = "SELECT DISTINCT p.id_produtos, p.fk_cate3, c3.nome_cate3, p.desc_produto, p.preco_produto, p.fk_usuario_sessao, e.uf FROM tb_produtos p INNER JOIN tb_categoria3 c3 ON p.fk_cate3 = c3.id_cate3 INNER JOIN tb_endereco e INNER JOIN tb_clientes cli on e.id_endereco = cli.fk_endereco ORDER BY p.preco_produto";
$query_exibir = mysqli_query($link, $sql_exibir);
while ($sql_exibir = mysqli_fetch_array($query_exibir)) {
//aqui você coloca conforme sua tabela
$cod_produto = $sql_exibir[2];
$nome_fk_prod = $sql_exibir[0];
$nome_produto = $sql_exibir[2];
$descricao_prod = $sql_exibir[1];
$preco_prod = $sql_exibir[2];
?>
<tr>
<td><?php echo $cod_produto; ?></td>
<td><?php echo $nome_fk_prod ?></td>
<td><?php echo $nome_produto; ?></td>
<td><?php echo $descricao_prod; ?></td>
<td>
<input name="txt_preco[]" type="text" id="txt_preco" size="15"/>
</td>
<td>
<input type="checkbox" name="produto[]" id="produto" value="<?php echo "$nome_fk_prod|$cod_produto|$nome_produto|$descricao_prod"; ?>"/>
</td>
</tr>
<?php
}
?>
</table>
</form>
</div>
</body>
</html>
INSERIR.PHP
<?php
$conexao = mysql_connect("localhost", "root", "vertrigo");
mysql_select_db("banco_de_dados");
//retira os elementos vazios e reordena os indices
$_POST['txt_preco'] = array_values(array_filter($_POST['txt_preco']));
//var_dump($_POST);
$check_prod = $_POST["txt_preco"];
//auxilar para acessar indices de $_POST['produto'] e $check_prod
$i = 0;
foreach ($_POST['produto'] as $value) {
//separamos a string contidado no checkbox
list ($fk_produtos, $cod_produto, $nome_produto, $descricao_prod) = explode('|', $value);
mysql_query("INSERT INTO tb_car_teste(nome_produto, desc_produto, fk_produtos, preco)VALUES('$nome_produto', '$descricao_prod', '$fk_produtos', '" . $check_prod[$i] . "')");
echo '<br/>';
$i++;
}
//agora que já gravou, redireciona de volta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom cara

mas eu ainda te avisei duas vezes

 

http://forum.imasters.com.br/topic/531010-como-gravar-id-de-checkbox-que-vem-de-tabelas-em-outra-tabela/?p=2118369

http://forum.imasters.com.br/topic/531010-como-gravar-id-de-checkbox-que-vem-de-tabelas-em-outra-tabela/?p=2118371

 

tinha o <br> pq antes era uma string que estava num echo, só pra você ver como estava sendo feito insert

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.