Ir para conteúdo

POWERED BY:

Arquivado

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

biza

[Resolvido] Inserir dados em tabela e relacionar pelo ID

Recommended Posts

preciso de um form fazer um INSERT em duas tabelas e relacionar as duas pelo campo id .

Será que me pode dar um exemplo é que estou fritando esse ovo ja algum tempo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, você quer algo que pode ser feito de varias maneiras, uma delas é:

 

1-Crie uma terceira tabela com três campos, id_tabela, id_tabela1, id_tabela2.

 

2-Crie o form, crie a página que processa-rá o form, na página de processamento,

 

crie dois insert, assim:

 

$a = valor do form

 

$b = insert tabela1 valor $a,

 

$c = insert tabela2 valor $a,

 

Á lógica é éssa...

 

Quando for consultar peça para trazer os registros cujo

 

id_tabela de ambas forem iguais, use a Cláusula WHERE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo...

 

<form method="post" action="/seu_action.php">
    <input type="text" name="cliente_nome" />
    <input type="text" name="venda_data" />
    <input type="submit" name="cmd" value="Ok" />
</form>

Agora la no seu seu_action.php...

 

Em exemplo usando PDO (recomendo)

//conectar no mysql
$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

//Preparar insert
$stmt = $pdo->prepare("INSERT INTO clientes(nome) VALUES (:nome)");
$stmt->bindParam(':nome', $_POST['cliente_nome']);

//Executar insert
$stmt->execute();

//Pegar o id que foi inserido (já que o campo id é autoincrement e nós não passamos nada)
$clienteId = $pdo->lastInsertId();

//Preparar insert da outra query
$stmt = $pdo->prepare("INSERT INTO venda(data, cliente_id) VALUES (:data,:cliente_id)");
$stmt->bindParam(':data', $_POST['venda_data']);
$stmt->bindParam(':cliente_id', $clienteId);

//Executar insert
$stmt->execute();

Agora se você acha que tem sorte, e quiser fazer usando mysql_query, mysql_connect e etc... o código equivalente ao $pdo->lastInsertId() é o mysql_insert_id. Isso se você estiver usando o MySQL. Com o PDO você pode usar outros bancos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é que tenho um form com campos combobox e text file , nesse quero fazer um primeiro insert , o segundo é composto com checkbox, e ai eu quero que exista relacionamento da primeira tabela que alberga os dados id, nome, morada , cidade, pais, id_estado; com a segunda tabela que alberga os dados , id_check, solteiro, mas_fem, data, etc...

Quando meter os dados da primeira tabela queria que a outra fica-se relacionada com a primeira. De modo a eu saber que aqueles dados lhe pertencem

Compartilhar este post


Link para o post
Compartilhar em outros sites

AI VAi...

<form method="post" enctype="multipart/form-data" name="" action="">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
						<table width="915" border="0" cellspacing="6" cellpadding="0">
  <tr>
    <td width="102">Categorias:</td>
    <td width="86">
	<?
	
	$result = mysql_query("SELECT t_id, cat FROM categorias");
	echo'<select name="cat">
	<option value="0" size="35">Seleccione a Categoria</option>';	
	while( $row = mysql_fetch_array($result)){
			echo'<option value="'.$row[0].'" size="35">'.$row[1].'</option>	';
		}
		mysql_free_result( $result );	
		echo'</select>';
		?>
        </td>
    <td width="99">Marca:</td>
    <td width="112">
    <?
	
	$result = mysql_query("SELECT m_id, marca FROM marcas");
	echo'<select name="marc">
	<option value="0" size="35">Seleccione a Marca</option>';	
	while( $row = mysql_fetch_array($result)){
			echo'<option value="'.$row[0].'" size="35">'.$row[1].'</option>	';
		}
		mysql_free_result( $result );	
		echo'</select>';
		?>
    </td>
    <td width="117">Modelo:</td>
    <td width="112"><input name="modelo" type="text" class="area" id="modelo" value="" size="10" /></td>
    <td width="116">Preco:</td>
    <td width="117"><input name="preco" type="text" class="area" id="preco" value="" size="10" /></td>
  </tr>
  <tr>
    <td>Quilometros:</td>
    <td><input name="quilometros" type="text" class="area" id="quilometros" value="" size="10" /></td>
    <td>Combustivel:</td>
    <td>    <?
	
	$result = mysql_query("SELECT c_id, combustivel FROM combustivel");
	echo'<select name="comb">
	<option value="0" size="35">Seleccione o Combustível</option>';
	while( $row = mysql_fetch_array($result)){
			echo'<option value="'.$row[0].'" size="35">'.$row[1].'</option>	';
		}
		mysql_free_result( $result );	
		echo'</select>';
		?></td>
    <td>Velocidades</td>
    <td><input name="velocidades" type="text" class="area" id="velocidades" value="" size="10" /></td>
    <td>Cilindrada:</td>
    <td><input name="cilindrada" type="text" class="area" id="cilindrada" value="" size="10" /></td>
  </tr>
  <tr>
    <td>Cor Carroçaria:</td>
    <td><input name="cor_car" type="text" class="area" id="cor_car" value="" size="10" /></td>
    <td>Cor de interiores:</td>
    <td><input name="cor_int" type="text" class="area" id="cor_int" value="" size="10" /></td>
  </tr>
  <tr>
    <td>Ano:</td>
    <td><input name="ano" type="text" class="area" id="ano" value="" size="10" /></td>
    <td>Portas:</td>
    <td><input name="portas" type="text" class="area" id="portas" value="" size="10" /></td>
    <td>Potencia:</td>
    <td><input name="potencia" type="text" class="area" id="potencia" value="" size="10" /></td>
  </tr>
  <tr>
    <td>Imagem 1:</td>
    <td><input name="foto1" type="file" class="area" id="foto1" value="" size="10" /></td>
    <td>Imagem 2:</td>
    <td><input name="foto2" type="file" class="area" id="foto2" value="" size="10" /></td>
    <td>Imagem 3:</td>
    <td><input name="foto3" type="file" class="area" id="foto3" value="" size="10" /></td>
  </tr>
  <tr>
    <td>Imagem 4:</td>
    <td><input name="foto4" type="file" class="area" id="foto4" value="" size="10" /></td>
    <td>Imagem 5:</td>
    <td><input name="foto5" type="file" class="area" id="foto5" value="" size="10" /></td>
    <td>Imagem 6:</td>
    <td><input name="foto6" type="file" class="area" id="foto6" value="" size="10" /></td>
  </tr>
  <tr>
    <td>Imagem 7:</td>
    <td><input name="foto7" type="file" class="area" id="foto7" value="" size="10" /></td>
    <td>Imagem 8:</td>
    <td><input name="foto8" type="file" class="area" id="foto8" value="" size="10" /></td>
    <td> Imagem 9:</td>
    <td><input name="foto9" type="file" class="area" id="foto9" value="" size="10" /></td>
  </tr>
  <tr>
    <td colspan="8"><label>Observações</label>
			<textarea class="text-input textarea wysiwyg" id="observacoes" name="observacoes" cols="79" rows="15"></textarea></td>
    </tr>
  <tr>
    <td colspan="8"><table width="100%" border="0" cellspacing="6" cellpadding="0">
    <tr>
        <td colspan="8" class="font_verde">Equipamento</td>
        </tr>
      <tr>
        <td width="3%"> </td>
        <td width="23%" class="items">Som Multimédia e Navegação </td>
        <td width="3%"> </td>
        <td width="20%" class="items">Segurança e Performance</td>
        <td width="3%"> </td>
        <td width="21%" class="items">Interior e Conforto</td>
        <td width="1%"> </td>
        <td class="items">Exterior e Ambiente</td>
        </tr>
      <tr>
        <td><input type="checkbox" name="checkbox" id="checkbox" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox5" id="checkbox5" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox9" id="checkbox9" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox13" id="checkbox13" /></td>
        <td> </td>
        </tr>
      <tr>
        <td><input type="checkbox" name="checkbox2" id="checkbox2" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox6" id="checkbox6" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox10" id="checkbox10" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox14" id="checkbox14" /></td>
        <td> </td>
        </tr>
      <tr>
        <td><input type="checkbox" name="checkbox3" id="checkbox3" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox7" id="checkbox7" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox11" id="checkbox11" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox15" id="checkbox15" /></td>
        <td> </td>
        </tr>
      <tr>
        <td><input type="checkbox" name="checkbox4" id="checkbox4" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox8" id="checkbox8" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox12" id="checkbox12" /></td>
        <td> </td>
        <td><input type="checkbox" name="checkbox16" id="checkbox16" /></td>
        <td> </td>
        </tr>
    </table></td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td colspan="2"><input name="submit" type="submit" class="button" id="submit" value="Guardar Veiculo" /></td>
  </tr>
                        </table>
			</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... me parece simples então... você deve simplesmente ter colunas na tabela de carros que guardem o id das outras tabelas que você quer relacionar.

 

percebi alguns campo na sua tabela como:

 

# CARROS #

==================

modelo

preco

quilometros

velocidades

cilindradas

etc...

 

tudo que você tem que fazer é adicionar as colunas com os id relacionados...

 

# CARROS #

==================

categoria_id -> se relaciona com a tabela categorias

marca_id -> se relaciona com a tabela marcas

modelo

preco

quilometros

velocidades

cilindradas

combustivel_id -> se relaciona com a tabela combustiveis

 

 

 

ai nada hora de buscar os dados:

 

SELECT
    categorias.descricao AS categoria,
    marcas.descricao AS marca,
    carros.modelo,
    carros.preco

FROM
    carros

INNER JOIN
    categorias
ON
    categorias.id = carros.categoria_id

INNER JOIN
    marcas
ON
    marcas.id = carros.marca_id

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu caro essa parte esta feita a dificuldade estão naquelas checkbox no fim do form, ao fazer o envio eu queria enviar os campos que ficam acima da text field para uma tabela , e enviar a checkbox para outra tabela.

Tenho 4 tabelas , (categorias, marcas, veículos, combustível), quero criar mais uma que é para inserir o equipamento dos carros.

A tabela veículos é a que se relaciona com as outras , na hora de fazer o insert, através das combobox passo os valores das outras tabelas para a relação com a tabela principal, mas gostava de ao fazer o insert as checbox que estivessem com visto, ele submeter , esses campos para outra tabela , mas relacionando a inserção dos dados daquele veiculo, daquela marca, com aquele equipamento e categoria.

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi... vanos la...

 

<td><input type="checkbox" name="equipamentos[]" id="rodas" value="1" /><label for="rodas">Rodas</label></td>

<td><input type="checkbox" name="equipamentos[]" id="vidros" value="2" /><label for="vidros">Vidros</label></td>

<td><input type="checkbox" name="equipamentos[]" id="travas" value="3" /><label for="travas">Travas</label></td>

<td><input type="checkbox" name="equipamentos[]" id="direcao" value="4" /><label for="direcao">Direção</label></td>

 

se eu marcar Vidros e Direção, então o post no seu php vai chegar mais ou menos assim:

 

Array
(
    [equipamentos] => Array
        (
            [0] => 2
            [1] => 4
        )

)

 

então você criar mais duas tabelas

 

 

# EQUIPAMENTOS #

==================

equipamento_id

descricao

blablabla

 

 

# CARRO_EQUIPAMENTOS #

======================

carro_id -> se relaciona com a tabela carros

equipamento_id -> se relaciona com a tabela equipamentos

 

 

se tiver dúvidas de como inserir, poste aqui... ou procure sobre relacionamento muitos pra muitos, que é o que eu acho que você está tentando fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

peço desculpa mas é mesmo com essa duvida que estou. Não consigo perceber como relaciono uma tabela com a outra aquando da inserção

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro você insere o carro normalmente...

 

INSERT INTO carros (campo1, campo2, campo3) VALUES ('valor1','valor2','valor3');

 

Sem se preocupar com os equipamentos... apenas com os dados do carro mesmo, e com os ralacionamentos da marca, categoria, e os relacionamentos 1..n

 

 

Agora o n..n:

pegue o id do carro com $carroId = mysql_insert_id();

 

e então insira na tabela CARRO_EQUIPAMENTOS todos os equipamentos que vieram marcados no form:

foreach($_POST['equipamentos'] as $equipamentoId){
    mysql_query("INSERT INTO carro_acessorio (carro_id, acessorio_id) VALUES ($carroID, $acessorioID)")
}

Só não esquece de tratar os sql injections...

 

Eu recomendo você usar PDO. Se tiver um tempinho ai estude essa classe... não é tão difícil. pesquise no Google e php.net...

 

 

resumindo...

 

 

-----------------------
CARROS
-----------------------
id | descricao | valor
---|-----------|-------
1  | Fusca     | 1.000
2  | Brasília  | 1.000
3  | Gol       | 1.000
4  | Golf      | 1.000



-----------------------
EQUIPAMENTOS
-----------------------
id | descrica
---|-------------------
1  | vidro elétrico
2  | travas elétricas
3  | direção hidraulica
4  | bancos de couro



--------------------------
CARROS_EQUIPAMENTOS
--------------------------
carro_id | equipamento_id
---------|----------------
3        | 1                # essa linha diz que carro 3 tem equipamento 1.... ou seja, gol tem vidro elétrico
4        | 1                # essa linha diz que carro 4 tem equipamento 1.... ou seja, golf tem vidro elétrico
4        | 2                # essa linha diz que carro 4 tem equipamento 2.... ou seja, golf também tem travas elétricas
4        | 3                # essa linha diz que carro 4 tem equipamento 3.... ou seja, golf também tem direção hidraulica
4        | 4                # essa linha diz que carro 4 tem equipamento 4.... ou seja, golf também tem vidro bancos de couro

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.