Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Cadastro


carol

Pergunta

oi gente,

To fazendo um cadastro de veículos, ai fiz os campos: fabricante, cor, preço, ano, etc.

Cada um destes campos tem seu lugar na tabela do MySQL, ai fiz a campo Opcionais onde podem ser selecionados vários itens, que eu queria que fosse tudo para um único campo no MySQl, o Opcionais!

Mais fiquei cheio de duvidas na hora de fazer o formulário de alteração.

Se eu usar o Selectbox depois como vou fazer para que quando o formulário de Alteração seja aberto, já venha com estes itens cadastrados selecionados no selectbox?

Ai pensei em usar um campo no MySQL para cada itens opcional, mais mesmo assim não sei fazer com que na hora de alterar esses itens cadastrados já estejam selecionados no selectbox.

Ai pensei em fazer com o selectlist, ai sei que vou ter que usar um campo no MySQL para cada um dos opcionais. Mais mesmo assim não sei como fazer o formulário de alteração.

Pois num campo normal eu uso como valor isso: <? echo $txt_preco ; ?> mais no caso do selectbox ou selectlist o que usar?

Se alguém ai puder me ajudar...

obrigada!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Seguinte...

Eu não sei ao certo como fazer, mas na hora que o script PHP consulta no banco de dados, ele deve ler algo como... true ou false... ou também 1 ou 0...

Se for 1, true, ou como preferir chamar, deve ser impresso o código HTML com ele selecionado.

Caso contrário deve ficar sem seleção.

Se não me engano você põe selected ao fim da tag da caixa de opção no caso de estar selecionado.

Link para o comentário
Compartilhar em outros sites

  • 0

Se você tiver multiplas seleções, não apenas (0,1)(true,false), você poderia colocar num única campo do mysql separando os valores por ";", por exemplo.

E para selecionar as informações na edição do formulário, sendo este um componente do tipo "select" com a propriedade multiple, você deve conseguir fazendo algo assim:

<select name="opcoes[]" multiple>

<option value="bla">bla</option>

<option value="ble" selected>ble</option>

<option value="bli">bli</option>

<option value="blo" selected>blo</option>

<option value="blu">blu</option>

</select>

veja que você tem 2 opções com "selected" na propriedade "option"... Isso teoricamente é o que você necessita!

Enrolei!? :)

Link para o comentário
Compartilhar em outros sites

  • 0

Olha só gente,

cadastro está ok!

                    <td width="45%"><select name="txt_op[1][]" size="20" multiple id="txt_op[1][]"> 
                      <option value="Air bag motorista">Air bag motorista</option> 
                      <option value="Air bag motorista/passageiro">Air bag motorista/passageiro</option> 
                      <option value="Alarme">Alarme</option> 
                      <option value="Ar condicionado">Ar condicionado</option> 
                      <option value="Ar quente">Ar quente</option> 
                      <option value="Bancos em couro">Bancos em couro</option> 
                      <option value="Blindado">Blindado</option> 
                      <option value="C&acirc;mbio autom&aacute;tico">C&acirc;mbio 
                      autom&aacute;tico</option>
E o código que recebe ficou assim:
if(isset($txt_op)){ 
$opcional = "0"; 
while(list($chave,$valor)=each($txt_op[1])){ 
$opcional .= ",".$valor; 
} 
$opcional = substr($opcional,2,strlen($opcional)); 
}else{ 
$opcional = ""; 
} 

$tabela = "tb_veiculos"; 
$campos = "cod,para,tipo,marca,modelo,preço,ano,quilo,combu,cor,inform,foto,op"; 

$valores = "'".$txt_cod."'"; 
$valores .= ",'".$txt_para.",'"; 
$valores .= ",'".$txt_tipo."'"; 
$valores .= ",'".$txt_marca."'"; 
$valores .= ",'".$txt_modelo."'"; 
$valores .= ",'".$txt_preco."'"; 
$valores .= ",'".$txt_ano."'"; 
$valores .= ",'".$txt_quilo."'"; 
$valores .= ",'".$txt_combu."'"; 
$valores .= ",'".$txt_cor."'"; 
$valores .= ",'".$txt_inform."'"; 
$valores .= ",'".$txt_foto."'"; 
$valores .= ",'".$opcional."'"; 

$stgsql = "INSERT INTO ".$tabela." (".$campos.") values (".$valores.")";
Agora estou com problemas para fazer o form de alteração. No meu banco de dados estão gravados os opcionais em uma única célula. Assim: Tração 4X4, Air bag motorista, Vidros elétricos, etc... Como pode perceber está duto junto só sendo separado por um ",". Ai se uso meu código assim:
<option value="Vidros verdes"<? if($txt_op=="Vidros verdes"){echo $selec; }?>>Vidros verdes</option>

ele não fica selecionado no formulário.

Testei trocando == "..." por !="" ai ele entendeu que era diferente de nulo e deixou a opção selecionada no formulário, então o código está certo.

Estou entendendo que tenho que fazer um código que separe as opções pelas "," antes de verificar se é igual (==).

Mais não sei como fazer isso.

obrigada a todos que puderem me ajudar...

Link para o comentário
Compartilhar em outros sites

  • 0

Concordo ... não ficaria mais fácil você fazer uma tabela auxiliar para guardar esses acessórios cada um em um registro ?

Creio que ficará bem mais fácil para trabalhar com os acessórios em separado e, ainda por cima, a performance vai ser melhor porque tu não terás de fazer quebras, explodes e afins ...

Think about ;)

Link para o comentário
Compartilhar em outros sites

  • 0
Olha só gente,

cadastro está ok!

                    <td width="45%"><select name="txt_op[1][]" size="20" multiple id="txt_op[1][]"> 
                      <option value="Air bag motorista">Air bag motorista</option> 
                      <option value="Air bag motorista/passageiro">Air bag motorista/passageiro</option> 
                      <option value="Alarme">Alarme</option> 
                      <option value="Ar condicionado">Ar condicionado</option> 
                      <option value="Ar quente">Ar quente</option> 
                      <option value="Bancos em couro">Bancos em couro</option> 
                      <option value="Blindado">Blindado</option> 
                      <option value="C&acirc;mbio autom&aacute;tico">C&acirc;mbio 
                      autom&aacute;tico</option>
E o código que recebe ficou assim:
if(isset($txt_op)){ 
$opcional = "0"; 
while(list($chave,$valor)=each($txt_op[1])){ 
$opcional .= ",".$valor; 
} 
$opcional = substr($opcional,2,strlen($opcional)); 
}else{ 
$opcional = ""; 
} 

$tabela = "tb_veiculos"; 
$campos = "cod,para,tipo,marca,modelo,preço,ano,quilo,combu,cor,inform,foto,op"; 

$valores = "'".$txt_cod."'"; 
$valores .= ",'".$txt_para.",'"; 
$valores .= ",'".$txt_tipo."'"; 
$valores .= ",'".$txt_marca."'"; 
$valores .= ",'".$txt_modelo."'"; 
$valores .= ",'".$txt_preco."'"; 
$valores .= ",'".$txt_ano."'"; 
$valores .= ",'".$txt_quilo."'"; 
$valores .= ",'".$txt_combu."'"; 
$valores .= ",'".$txt_cor."'"; 
$valores .= ",'".$txt_inform."'"; 
$valores .= ",'".$txt_foto."'"; 
$valores .= ",'".$opcional."'"; 

$stgsql = "INSERT INTO ".$tabela." (".$campos.") values (".$valores.")";
Agora estou com problemas para fazer o form de alteração. No meu banco de dados estão gravados os opcionais em uma única célula. Assim: Tração 4X4, Air bag motorista, Vidros elétricos, etc... Como pode perceber está duto junto só sendo separado por um ",". Ai se uso meu código assim:
<option value="Vidros verdes"<? if($txt_op=="Vidros verdes"){echo $selec; }?>>Vidros verdes</option>

ele não fica selecionado no formulário.

Testei trocando == "..." por !="" ai ele entendeu que era diferente de nulo e deixou a opção selecionada no formulário, então o código está certo.

Estou entendendo que tenho que fazer um código que separe as opções pelas "," antes de verificar se é igual (==).

Mais não sei como fazer isso.

obrigada a todos que puderem me ajudar...

Se no campo está dessa forma:

Tração 4X4, Air bag motorista, Vidros elétricos,etc...

Você pode fazer assim:

$opcionais = explode(",",$campo_da_tabela);

Aí no <select> você faz assim:

<option value="Tração 4x4" <?php if(array_search($opcionais,"Tração 4x4")) echo "selected" ?>>Tração 4x4</option>

E assim por diante....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...