Ir para conteúdo

POWERED BY:

Arquivado

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

Alexandro Zaleski

[Resolvido] Salvar vários ítens de uma tabela no banco de dados

Recommended Posts

Boa tarde pessoal.

Eu to com um problema.. e não sei como resolver..

Eu estou fazendo um site para uma loja de veiculos e eu criei uma tabela com os opcionais do veículo.

Nessa tabela meu cliente vai cadastrar os opcionais que um carro pode ter..

Quando ele for cadastrar um novo carro vai ter uma lista com estes opcionais com um checkbox cada e o cliente vai marcar quais opcionais o carro tem.

Só que eu não tenho nem idéia de como salvar isso no campo opcionais da tabela veiculos.

e nem como mostrar os os opcionais na hora que uma pessoa for ver os detalhes do carro.

 

Alguém já fez ou sabe como fazer isso?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso você tem q ter 4 tabelas

 

tabela de clientes

tabela de veiculos

tabela de opcionais

tabela veiculos_opcionais_clientes que relaciona as tres anteriores

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos usar a pesquisa do fórum?

 

http://forum.imaster...abela-do-mysql/

 

 

Leia o tópico depois volte para cá...

Você leu que os valores serão inseridos separados por vírgulas, o que facilitará sua consulta. Agora, se quiser mostrar os opcionais em forma de lista, deve separar os valores entre as vírgulas, usando a função explode():

 

$opcionais=explode(',', $select_opcionais);

$select_opcionais: variável que recebe os valores COM vírgula do campo

$opcionais: variável que fará a "quebra" desses valores que estão entre a vírgula, inserida dentro das aspas simples

 

Falou, cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa..

Eu peço desculpas mas eu não tinha achado esse tópico que você me mostrou..

mas o que eu fiz:

eu criei um loop dos resultados da tabela opcionais e coloquei assim o checkbox:

<input type="checkbx" name="opcionais" value="<? echo $id; ?>;"> <? echo $nome ?>

 

só que quando eu pego o valor lá no arquivo que salva no banco, ele me salva a quantidade de checkbox selecionados e não os valores..

E eu não to sabendo fazer essa parte.. pq pelo que eu vi no outro post tem que fazer um if para cada chek. e imagina se eu tiver 100 checkbox? como eu farei isso?

 

Se eu não me expliquei direito me pergute as duvidas..

 

Grato..

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa.. obrigado pela dica.. agora funcionou.. valeu mesmo..

 

Só me diz uma coisa..

Existe a possibilidade de quando eu for alterar um veículo, mostrar todos os opcionais cadastrados e os que estão salvos no veículo já virem checked?

Por exemplo:

Opcionais cadastrados: Alarme, DH, AC

Opcionais do carro: DH.

 

Dai quando for alterar o veículo, aparecer todos os cadastrados e a DH estar checked.

 

Porque eu não tenho idéia de como poderia fazer isso..

 

grato pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei como você gravou os opcionais cadastrados no banco, mas se for por id, isso serve

 

//extrai opcionais já cadastrados do veículo
while ($line = mysql_fetch_array($sql)){
	vetor[]=$line['id_opcional'];
}

na hora de montar os checkbox

 

//extrai opcionais da tabela de opcionais
while ($line = mysql_fetch_array($sql)){		
    //varre o vetor e verifica se está no array
    $check = (array_search($line['id'], $vetor)) ? "checked=checked" : ""; 
	echo "<input type=checkbox name='nome_do_checkbox[]' value=".$line['id']." ".$check.">".$line['nome'];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Pessoal..

Passei o final de semana todo tentando fazer funcionar.. e não teve jeito.. como eu estou usando o smarty.. eu não consegui implementar da forma que vocês me passaram..

O meu problema é só marcar os ítens que estão salvos no veículo..

Eu fiz o select dos dados do veículo e fiz o select dos opcionais..

está tudo funcionando direitinho.. só essa parte de verificar os opcionais que estão salvos no veículo e marca-los na lista dos opcionais..

Alguém pode me ajudar nessa parte?

Se precisar eu coloco o código para vocês verem..

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.. to colocando as 2 tabelas aqui pra você ver..

 

Estrutura da tabela `veiculos`
--

CREATE TABLE `veiculos` (
  `idveiculos` int(10) unsigned NOT NULL auto_increment,
  `vei_codigo` varchar(50) NOT NULL,
  `vei_marca` char(1) NOT NULL,
  `vei_modelo` varchar(50) NOT NULL,
  `vei_anofab` char(4) NOT NULL,
  `vei_anomod` char(4) NOT NULL,
  `vei_combustivel` char(15) NOT NULL,
  `vei_descricao` text NOT NULL,
  `vei_portas` char(1) NOT NULL,
  `vei_cor` varchar(20) NOT NULL,
  `vei_foto` varchar(255) NOT NULL,
  `vei_valor` float NOT NULL,
  `vei_placa` char(8) NOT NULL,
  `vei_financiado` char(3) NOT NULL default 'nao',
  `vei_opcionais` text NOT NULL,
  `vei_loja` char(1) NOT NULL default '1',
  `vei_destaque` char(3) NOT NULL default 'nao',
  PRIMARY KEY  (`idveiculos`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

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

Estrutura da tabela `opcionais`
--

CREATE TABLE `opcionais` (
  `idopcionais` int(10) unsigned NOT NULL auto_increment,
  `opc_nome` varchar(50) NOT NULL,
  PRIMARY KEY  (`idopcionais`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Extraindo dados da tabela `opcionais`
--

INSERT INTO `opcionais` (`idopcionais`, `opc_nome`) VALUES
(1, 'Ar Condicionado'),
(2, 'Direção Hidráulica'),
(4, 'Alarme'),
(5, 'Vidros Elétricos'),
(6, 'Trava Elétrica');

Eu salvo os opcionais no campo vei_opcionais..

 

Se precisar de mais alguma coisa me avisa que posto pra você..

Valeu pela ajuda..

Ah.. antes que eu esqueça.. eu salvo o ID do opcional, separado por ; ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

não testei, mas vê ai

 

 

<?php
//colque aqui sua conexão com o banco

//coloquei idveiculos = 5 apenas para demosntração
$sql = mysql_query("select * from veiculos where idveiculos = 5");
//extrai opcionais do veículo selecionado
$line = mysql_fetch_array($sql)
		//separa os itens e joga em posições diferentes do array considerando que o separador seja a virgula "," 
       $opcionais = explode(",", $line['vei_opcionais']);
//seleciona todos as linhas da tabela de opcionais
$sql = mysql_query("select * from opcionais");
echo "<form>";//inicia o formulário
while ($line = mysql_fetch_array($sql)){                    
	//verifica quais itens da tabela devem ser marcados   
	$check = (array_search($line['opc_nome'], $opcionais)) ? "checked=checked" : "";         
	echo "<input type=checkbox name='nome_do_checkbox[]' value=".$line['opc_nome']." ".$check.">".$line['opc_nome'];
}
echo "</form>";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha.. o meu problema é que eu separei o código php do HTML.. (estou usando SMARTY)

não existe uma forma de fazer essa verificação em php e depois montar lá no template o resultado? pq já ta dando um nó na minha cabeça rsrsrs..

Mas mesmo assim vou tentar eu mesmo.. mas se tiver uma opção com smarty.. agradeço..

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

de alguma forma você vai ter q usar o php, a verificação é no banco, mesmo se você salvar em uma variável ou dá um include de alguma forma vai ter q usar

 

adapta ae!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.. consegui fazer.. com a ajuda de um colega.. segue a solução caso alguém precise usar com smarty..

$idc = $_REQUEST['id'];
$sql = mysql_query("select * from veiculos where idveiculos = '$idc'");
//extrai opcionais do veículo selecionado
$line = mysql_fetch_array($sql)
//separa os itens e joga em posições diferentes do array considerando que o separador seja a virgula ";" 
$opc_array = explode(";", $line['vei_opcionais']);


$montaropc = "<table width='460' align='center' cellpadding='0' cellspacing='2'>";
    $count = 2;
    
    $sql = mysql_query("select * from opcionais");

         while ($linha = mysql_fetch_array($sql)){
            if($cont == 0){$montaropc .= "<tr>";}
            
            $check = (array_search($linha['idopcionais'], $opc_array)) ? 'checked="checked"' : "";         
            
            
            $montaropc .= "<td width='90' align='left' class='formulario'>
            
                           <input type='checkbox' name='opcionais[]' value=';". $linha['idopcionais']. "' '".$check."'/> " . $linha['opc_nome'] . "</td>";
			if($cont == 2){
				$montaropc .= "</tr>";
			    $cont = 0;
			} else{
			    $cont++;
			}            
        }
        $montaropc .= "</table>";
	}
    
    $smarty -> assign('opcgerado', $montaropc);

é isso ai.. obrigado a todos pela ajuda..

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.