Ir para conteúdo

POWERED BY:

Arquivado

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

manolegal

[Resolvido] Alterar dados do BD com checkbox

Recommended Posts

Olá amigos do Forum.

 

Tenho um cadastro de veículos. Uso banco de dados Postgre. Tenho 03 tabelas:

 

Tabela "veiculos" - Cadastro do veiculos

id_veiculo - chave primaria e autoincremento

veiculo - varchar

 

Tabela "veiculos_tipo_combustivel" - Tipos de combustiveis (gasolina, alcool, etc)

id_tipo_combustivel - chave primaria e autoincremento

tipo_combustivel - varchar

 

Tabela "veiculos_veiculo_combustiveis" - Relaciono Veiculo x Tipos de Combustivel utilizados (Veiculo pode utilizar mais de 01 tipo de combustivel)

id_sequencial - chave primaria e autoincremento

veiculo_id - chave estrangeira e integer (id do veículo)

combustivel_id - chave estrangeira e integer (id do tipo de combustivel)

 

Tenho dúvida quando da alteraçao dos dados de um veículo. Como faço para mostrar os tipos de combustiveis (todos os tipos de combustíveis existentes) e os tipos de combustível do veículo que está sendo alterado virem "checkados".

Tendo por exemplo a seguinte situaçao:

 

Tabela "veiculos_tipo_combustivel" (id_tipo_combustivel - tipo_combustivel)

1 - Alcool

2 - Oleo Diesel

3 - Gasolina

 

Tabela "veiculos_veiculo_combustiveis" (id_sequencial - veiculo_id - combustivel_id)

1 - 1 - 1

2 - 1 - 3

 

Gostaria que no campo "check" do "tipo de combustivel", viessem todos os tipos de combustivel (1 - Alcool, 2 - Oleo Diesel, 3 - Gasolina) e que estivessem "checkados" os tipos 1 - Alcool e 2 - Gasolina".

Tenho até o momento somente o seguinte código:

 

<tr>
<td><div align="right"><font face="Courier New, Courier">Combustivel:</font></div></td>
<td><div align="left"><font color="#FF0000" size="2">* (Multipla Escolha)</font></div></td>
<?php
   $Sql = "SELECT * FROM veiculos_tipo_combustivel ORDER BY tipo_combustivel";
$Resultado = executa($Sql);
$colunas = 1;
$i = 0;
while($linha =pg_fetch_array($Resultado)){
   $id_tipo_combustivel = $linha["id_tipo_combustivel"];
   $combustivel = $linha["tipo_combustivel"];
?>
<tr><td> </td><td width="54%"><input type="checkbox" name="combustivel_tipo[]" id="combustivel_tipo" value="<?php echo "$id_tipo_combustivel"; ?>"><?php echo "$combustivel"; ?>
<?php
$i++;
if($i == $colunas)
   echo "<br>";
if($i >= $colunas)
   $i = 0;  }
   ?>
</tr>

 

Neste caso, lista os tipos de combustivel existentes, mas não mostra os tipos de combustivel do veiculo que está sendo alterado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

falta a consulta do veiculo a ser alterado. ai você verifica se o combustivel do carro é igual ao da tabela de combustivel.

 

tbm coloque

checked="checked"

no checkbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo porque não cria um arquivo para exibir os veículos contendo um botão para editar e outro para excluir. Assim você esta vendo os dados do registro, não resolve teu problema?

 

Ações              | Veiculo |  Combustível
[Editar] [Excluir] | Fusca   |  Alcool

Compartilhar este post


Link para o post
Compartilhar em outros sites

shini

 

Como e onde eu faria/colocaria a consulta do veiculo que esta sendo alterado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A consulta do veículo que está sendo alterado eu faço no início do formulário:

 

$id_veiculo = $_GET["id_veiculo"]; // Variavel passada via hidden do formulario anterior

   $Sql = "SELECT * FROM veiculos, ..... WHERE ..... AND id_veiculo = $id_veiculo";
   $Resultado = executa($Sql);
while ($linha = pg_fetch_array($Resultado)){
$id_veiculo_bd = $linha["id_veiculo"];
$veiculo = $linha["veiculo"];

 

Como faria o comparativo para verificar o(s) tipos(s) de combustivel do veiculo e colocá-los como checkado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom pra <options> faço assim

<option <?php echo $id_gasolina == $id_carro_combustivel ? 'SELECTED' : '' ?>>

 

pra checkbox acho q quase a msm coisa =X

 

echo 'checked="checked"'.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Luis Paullo

Obrigado pelo retorno, mas nao tenho ainda idéia de como fazer, ainda mais que o veículo pode ter mais que 01 tipo de combustíivel, e ai preciso salvar os tipos de combustivel em array.

A consulta do veículo q está sendo alterado:

 

   $Sql = "SELECT * FROM veiculos, veiculos_veiculo_combustiveis, secretarias
WHERE veiculos.id_veiculo = veiculos_veiculo_combustiveis.veiculo_id
AND veiculos.secretaria_veiculo_id = secretarias.id_secretaria
AND id_veiculo = $id_veiculo";
   $Resultado = executa($Sql);
while ($linha = pg_fetch_array($Resultado)){
$id_veiculo = $linha["id_veiculo"];
$veiculo = $linha["veiculo"];
$combustivel_id_bd[] = $linha["combustivel_id"];

 

Na espera de auxilio. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei da seguinte forma mas ainda não está ok:

 

$id_veiculo = $_GET["id_veiculo"];

   $Sql = "SELECT * FROM veiculos, secretarias
WHERE veiculos.secretaria_veiculo_id = secretarias.id_secretaria
AND id_veiculo = $id_veiculo";
   $Resultado = executa($Sql); 
while ($linha = pg_fetch_array($Resultado)){ 
$id_veiculo = $linha["id_veiculo"]; 
$veiculo = $linha["veiculo"]; 

<tr>
<td><div align="right"><font face="Courier New, Courier">Combustível:</font></div></td>
<td><div align="left"><font color="#FF0000" size="2">* (Múltipla Escolha)</font></div></td>
<?php
   $Sql = "SELECT * FROM veiculos_tipo_combustivel ORDER BY tipo_combustivel";
   $Resultado = executa($Sql);
$colunas = 1;
$i = 0;
while($linha =pg_fetch_array($Resultado)){
   $id_tipo_combustivel = $linha["id_tipo_combustivel"];
   $combustivel = $linha["tipo_combustivel"];

   $Sql_2 = "SELECT * FROM veiculos_veiculo_combustiveis
WHERE veiculos_veiculo_combustiveis.veiculo_id = $id_veiculo";
   $Resultado_2 = executa($Sql_2);
while($linha_2 =pg_fetch_array($Resultado_2)){
   $combustivel_bd = $linha_2["combustivel_id"];
}

?>
<tr><td> </td>
<td width="54%"><input type="checkbox" name="combustivel_tipo[]" id="combustivel_tipo" value="<?php echo "$id_tipo_combustivel"; ?>"><?php echo "$combustivel"; ?>
<?php
$i++;
if($i == $colunas)
   echo "<br>";
if($i >= $colunas)
   $i = 0;  }
   ?>
</tr>

 

Imagino q estou no caminho certo, e a grande dúvida é mostrar o(s) tipo(s) de combustível cadastrado(s) para o veículo que está sendo alterado.

Estou há muito tempo tentando resolver este problema. Se alguém puder me ajudar, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei um pouco o código, mas ainda estou com dificuldades para comparar os tipos de combustivel existentes com o tipo de combustivel do veiculo que está sendo alterado:

 

$id_veiculo = $_GET["id_veiculo"];

   $Sql = "SELECT * FROM veiculos, secretarias
WHERE veiculos.secretaria_veiculo_id = secretarias.id_secretaria
AND id_veiculo = $id_veiculo";
   $Resultado = executa($Sql); 
while ($linha = pg_fetch_array($Resultado)){ 
$id_veiculo = $linha["id_veiculo"]; 
$veiculo = $linha["veiculo"]; 

<tr>
<td><div align="right"><font face="Courier New, Courier">Combustível:</font></div></td>
<td><div align="left"><font color="#FF0000" size="2">* (Múltipla Escolha)</font></div></td>
<?php
   $Sql_tipos = "SELECT * FROM veiculos_tipo_combustivel ORDER BY tipo_combustivel"; // Seleciona tipos de combustiveis existentes
   $Resultado_tipos = executa($Sql_tipos);
while($linha_tipos =pg_fetch_array($Resultado_tipos)){
   $id_tipo_combustivel2 = $linha_tipos["id_tipo_combustivel"];
   $combustivel2 = $linha_tipos["tipo_combustivel"];

   $Sql_selecionados = "SELECT * FROM veiculos_veiculo_combustiveis
WHERE veiculos_veiculo_combustiveis.veiculo_id = $id_veiculo"; // Seleciona tipos de combustiveis do veiculo que está sendo alterado
   $Resultado_2 = executa($Sql_selecionados);
while($linha_2 =pg_fetch_array($Resultado_2)){
   $combustivel_bd2 = $linha_2["combustivel_id"];
}

?>
<tr><td> </td>
<td width="54%"><input type="checkbox" name="combustivel_tipo2[]" id="combustivel_tipo2" value="<?php echo "$id_tipo_combustivel2"; ?>"><?php echo "$combustivel2"; ?>

<?php
  }
?>
</tr>

 

Espero que alguém possa me ajudar, é muito importante para mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia mandar a estrutura do seu banco(campos).

E pra que 3 tabelas, me explique melhor sobre qual a função de cada uma delas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Hiago, obrigado pela força.

 

Uso banco de dados Postgre. Tenho 03 tabelas:

 

Tabela "veiculos" - Cadastro dos veiculos

id_veiculo - chave primaria e autoincremento

veiculo - varchar

 

Tabela "veiculos_tipo_combustivel" - Tipos de combustiveis utilizados nos veículos (gasolina, alcool, etc)

id_tipo_combustivel - chave primaria e autoincremento

tipo_combustivel - varchar

 

Tabela "veiculos_veiculo_combustiveis" - Relaciono Veiculo x Tipos de Combustivel utilizados (Veiculo pode utilizar mais de 01 tipo de combustivel)

id_sequencial - chave primaria e autoincremento

veiculo_id - chave estrangeira e integer (id do veículo)

combustivel_id - chave estrangeira e integer (id do tipo de combustivel)

 

Tenho então a tabela onde cadastro os veículos, outra tabela que cadastro os tipos de combustíveis utilizados pelos veículos e uma terceira tabela onde relaciono veículos x tipo_combustível.

A minha grande dificuldade é na hora de editar, mostrar os tipos_combustível que estão cadastrados para o veículo que está sendo alterado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa tentar entender, você quer por 1 veiculo em 1 tabela e em outra colocar o id do veiculo e os combustiveis compativel

 

exemplo:

 

id_sequencial =1

veiculo_id = 1

combustivel_id = 1

 

id_sequencial =1

veiculo_id = 1

combustivel_id = 2

 

 

e na hora do formulario, exibir os combustiveis que tem no carro de id 1

certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente isso. O problema está só na hora de mostrar os tipos de combustível compatíveis com o veículo (mostrar check marcado).

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce quer que assim que se clica em modificar informações do veiculo, ele vai no banco de dados reconheça o combustivel que é compativel com o carro e mostre em botton com o check marcado o combustivel que o carro aceita?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato. No formulário de edição do veículo mostrar selecionados os tipos de compativeis que estão cadastrados para o veículo em questão.

 

No código a seguir listo os tipos de combustíveis existentes na tabela de tipos de combustíveis:

   $Sql_tipos = "SELECT * FROM veiculos_tipo_combustivel ORDER BY tipo_combustivel"; // Seleciona tipos de combustiveis existentes
   $Resultado_tipos = executa($Sql_tipos);
while($linha_tipos =pg_fetch_array($Resultado_tipos)){
   $id_tipo_combustivel2 = $linha_tipos["id_tipo_combustivel"];
   $combustivel2 = $linha_tipos["tipo_combustivel"];

 

E neste código mostro os tipos de combustíveis cadastrados para o veículo que está sendo alterado

   $Sql_selecionados = "SELECT * FROM veiculos_veiculo_combustiveis
WHERE veiculos_veiculo_combustiveis.veiculo_id = $id_veiculo"; // Seleciona tipos de combustiveis do veiculo que está sendo alterado
   $Resultado_2 = executa($Sql_selecionados);
while($linha_2 =pg_fetch_array($Resultado_2)){
   $combustivel_bd2 = $linha_2["combustivel_id"];
}

 

A dificuldade é mostrar os tipos de combustível cadastrados para o veículo (check marcado).

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiramente você tem que abrir multiplas tabelas, no caso a tabela de veiculos de tipos de combustiveis e dos combustiveis do carro

 

e ligando elas com ON tipo veiculos.id = combustiveisdocarro.id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido:

 

<tr>
<td><div align="right"><font face="Courier New, Courier">Combustível:</font></div></td>
<td><div align="left"><font color="#FF0000" size="2">* (Múltipla Escolha)</font></div></td>
<?php
$i=0;
   $Sql = "SELECT * FROM veiculos_tipo_combustivel ORDER BY tipo_combustivel";
   $Resultado = executa($Sql);
while($linha =pg_fetch_assoc($Resultado)){
   $id_tipo_combustivel_bd = $linha["id_tipo_combustivel"];
   $combustivel_bd = $linha["tipo_combustivel"];
?>
<tr><td> </td><td width="54%">
<?php
$ok = 0;
for($i=0; $i<count($combustivel_tipo); $i++) {
   if ($combustivel_tipo[$i] == $id_tipo_combustivel_bd) {
       $ok=1;
       echo '<input type="checkbox" name="combustivel_tipo[]" id="combustivel_tipo" checked value="'.$id_tipo_combustivel_bd.'">' . $combustivel_bd . '<br />';
   }
}
if ($ok == 0) {
   echo '<input type="checkbox" name="combustivel_tipo[]" id="combustivel_tipo" value="'.$id_tipo_combustivel_bd.'">' . $combustivel_bd . '<br />';
}
$i++;
}
?>
</td>
</tr>

 

Obrigado a todos.

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.