Ir para conteúdo

POWERED BY:

Arquivado

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

jonathan_bn

checkbox dinâmico

Recommended Posts

Olá pessoal, estou com uma dúvida aqui, vou tentar passar para vocês.

 

tenho um sistema de cadastro, com categoria, subcategoria e marca, o problema esta em dizer as marcas disponiveis do produto, primeiro fiz um cadastro com checkbox, beleza, cadastrou certinho mas fiz o cadastro em apenas um campo da tabela tipo ficou no campo marcas: samsumg, apple, LG depois não consegui recuperar estes dados separadamente para numa possível alteração eu poder alteralos com o próprio checkbox, então resolvi mudar minha lógica e criar outra tabela chamada produto_marca pois as marcas estão em outra tabela e também podem ser alteradas, escluidas e inseridas novas. na tabela produto_marca fiz uma ligação com a tabela marcas, com id do produto e id da marca, o problema agora está no momento de cadastrar os checkbox selecionados serem cadastrados em colunas diferentes, para depois eu poder editar de forma mais prática, alguem poderia me ajudar?

 

A tabela marcas está assim

 

id - id_produto - id_marca

 

Queria que ao cadastrar ficasse assim

 

id - id_produto - id_marca

1 - 10 - 3

2 - 10 - 4

3 - 10 - 7

4 - 10 - 1

5 - 10 - 9

 

Alguém poderia me ajudar? desde já agradeço! abraço.

 

 

Só para complementar segue meu SQL

 

 

	// Insere o produto
	$sql_insere_produto = mysql_query ("INSERT INTO produto (nome, texto, categoria, subcategoria) VALUES ('$nome','$texto','$categoria','$subcategoria')");
	
	//busca a ultima id cadastrada para inserir na tabela produto_marca
	$sql_pega_produto = mysql_query("SELECT * FROM produto ORDER BY id DESC LIMIT 1");
	while($linha = mysql_fetch_array($sql_pega_produto)){
		$id_produto = $linha['id'];
	}
	//aqui está o problema como insiro os dados em colunas diferentes
	$sql_insere_marca  = mysql_query("INSERT INTO produto_marca (id_produto) VALUES ('$id_produto')");

 

Como pego as marcas

 

 

<?php
            
            include "config.php";
        
            $sql_marca    =    mysql_query("SELECT * FROM marca");
            while($array = mysql_fetch_array($sql_marca)){
                $id = $array['id'];
                $marca = $array['marca'];

        ?>
        <label class="marcas">
        <input type="checkbox" name="marca[]" value="<?php echo $marca;?>" />
        <label for="<?php echo $marca;?>"><?php echo $marca;?></label>
        </label>
        <?php
        }
 ?>   

sei que talvez não necessite pegar a id...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom ficou meio confuso e um pouco complicado para entender.

Resolvi montar um exemplo com os mesmos dados que você colocou, porém agora adicionado todas as categorias que o usuário selecionar, veja:

 

<?php

include "config.php";

if(isset($_POST['enviar'])){

    $nome = $_POST['nome'];
    $texto = $_POST['texto'];
    $categoria = $_POST['categoria'];
    $subcategoria = $_POST['subcategoria'];
    $categorias = $_POST['categorias']; # Aqui é um array
    
    /* Cadastra o produto */
    $sql_insere_produto = mysql_query ("INSERT INTO produto (nome, texto, categoria, subcategoria) VALUES ('$nome','$texto','$categoria','$subcategoria')");
    
    //busca a ultima id cadastrada para inserir na tabela produto_marca
    $sql_pega_produto = mysql_query("SELECT * FROM produto ORDER BY id DESC LIMIT 1");
    $linha = mysql_fetch_assoc($sql_pega_produto); /* Não precisa while, é apenas um registro ^ */
    $id_produto = $linha['id'];

    /* Percorrendo as categorias desse cadastro */
    foreach ($categorias as $key => $categoria) {
         $sql_insere_marca  = mysql_query("INSERT INTO produto_marca (id_produto, id_marca) VALUES ('".$id_produto."', '".$categoria."')");
    }      

}    

?>
 
<html>
<head>
</head>
<body>
<form action="" method="POST">
    Nome: <br />
    <input type="text" name="nome" /><br />
    Texto: <br />
    <input type="text" name="nome" /><br />
    Categoria: <br />
    <input type="text" name="nome" /><br />
    Sub-categoria: <br />
    <input type="text" name="nome" /><br /><br /><br />

    <?php  
    
        /* Selecionando as marcas */
        $sql_marca = mysql_query("SELECT * FROM marca");
        
        while($array = mysql_fetch_array($sql_marca)){
            $id = $array['id'];
            $marca = $array['marca'];
    ?>
        <input type="checkbox" name="categorias[]" value="<?php echo $id; ?>" /> <?php echo $marca; ?> <br />

    <?php } ?>
    <br /><br />

    <input type="submit" name="enviar" value="enviar" />
</form>
</body>
</html>

 

Respondendo a sua pergunta, é preciso sim o ID da marca, pois você vai armazenar o ID da marca na tabela e não o nome (texto).

No momento de mostrar você traz a descrição, mais para montar os relacionamentos use apenas o ID.

 

É apenas um exemplo, e espero que tenha ajudado.

Qualquer erro, ou dúvida, posta ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @jonathan_bn!

 

Isso, o foreach é um loop como o for, porém ele foi desenvolvido exclusivamente para percorrer arrays.

 

Mais informações: php.net

 

Um abraço, até mais!

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.