Ir para conteúdo

POWERED BY:

Arquivado

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

SrTunes

[Resolvido] select ja com valor predefinido

Recommended Posts

Caros, estou com um dúvida que acredito eu seja boba, mas minhas experiências em php ainda não estão nada boas.

 

Bem, tenho um banco de dados de usuários, um dos campos se chama "situacao". O que quero fazer é que quando eu clicar no link editar, no formulario de edição ele busque o valor do campo situação e deixe ele selecionado no combo box.

 

Esse meu script não esta funcionando assim:

<td height="50" colspan="2"><p>   Situação:<br />
               	 
                   <select name="situacao" value="<?php echo $usuario["situacao"]; ?>" >
                   	<option>Inicial</option>
           			<option>Token entregue</option>
           			<option>Certificado solicitado</option>
           			<option>Certificado emitido</option>
           			<option>Certificado emitido e instalado</option>
                               <option>Certificado expirado</option>
           			<option>Usuário inativo</option>
         			</select>
                   </p>
                   </td>

 

Desde ja agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parceiro com esse codigo voce faz isso.

 

 

<?php
	  include "config.php";

         $sql = mysql_query("SELECT * FROM tabela WHERE id='$id'");
        $dados = mysql_fetch_assoc($sql);
?>
<select name="situacao" id="situacao">
   <option value="1" <?php if($dados['situacao'] == '1'){ echo 'selected="selected"';} ?>>Token entregue</option>
   <option value="2" <?php if($dados['situacao'] == '2'){ echo 'selected="selected"';} ?>>Certificado solicitado</option>

...

</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tira o seu echo do value e coloca ele em um option de preferencia do primeiro

 

Agora ele apareceu com o select certo, mas o que acontece agora é que eu tenho duas opções iguais. Tipo, se ele pegou do banco a situação "token entregue", lá no select vão ter dois campos com token entregue. Eu queria que a situação que ja esteja no banco não seja selecionavel novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem, bugo aqui deu double post..

 

Eita, os dados não vem de uma tabela, são fixos no select. não teria uma maneira de verificar qual existe na coluna situação e seleciona-lo no select?

Compartilhar este post


Link para o post
Compartilhar em outros sites


$array = array('Inicial', 'Token entregue', 'Certificado solicitado', 'Certificado emitido', 'Certificado emitido e instalado', 'Certificado expirado', 'Usuário inativo');
$option = "";
foreach($array as $arr){
   if($usuario['situacao'] == $arr){
	$option = '';
}
  $option .= "<option value='{$arr}'>{$arr}</option>";
}
$select "<select name='situacao'><option>{$usuario['situacao']}</option>{$option}</select>";
?>

<td height="50" colspan="2">
<p>Situação:<br />
       <?php echo $select ?>
</p>
</td>

 

bom a solução que encontrei é mais ou menos essa

Compartilhar este post


Link para o post
Compartilhar em outros sites


$array = array('Inicial', 'Token entregue', 'Certificado solicitado', 'Certificado emitido', 'Certificado emitido e instalado', 'Certificado expirado', 'Usuário inativo');
$option = "";
foreach($array as $arr){
   if($usuario['situacao'] == $arr){
	$option = '';
}
  $option .= "<option value='{$arr}'>{$arr}</option>";
}
$select "<select name='situacao'><option>{$usuario['situacao']}</option>{$option}</select>";
?>

<td height="50" colspan="2">
<p>Situação:<br />
       <?php echo $select ?>
</p>
</td>

 

bom a solução que encontrei é mais ou menos essa

 

Sua solução é bem interessante, não consegui compreender algumas linhas, para tentar modificar alguma coisa, pois ele não é exatamente o que quero. continua aparecendo a opção duplicada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

querido, voce ja tentou o que eu postei? deu algum erro?

 

seu problema ja tinha sido resolvido a muito tempo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parceiro com esse codigo voce faz isso.

 

 

<?php
	  include "config.php";

         $sql = mysql_query("SELECT * FROM tabela WHERE id='$id'");
        $dados = mysql_fetch_assoc($sql);
?>
<select name="situacao" id="situacao">
   <option value="1" <?php if($dados['situacao'] == '1'){ echo 'selected="selected"';} ?>>Token entregue</option>
   <option value="2" <?php if($dados['situacao'] == '2'){ echo 'selected="selected"';} ?>>Certificado solicitado</option>

...

</select>

 

Eu não estou entendendo muito bem o código. Desculpe, mas poderia me explicar?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao sei se entendi muito bem o que você quer, mas nao é algo parecido com isto?

 

<td height="50" colspan="2"><p>   Situação:<br />
                        
                   <select name="situacao">
                       <option <?php if($dados['situacao'] == '1') echo "selectec=selected"; ?>>Inicial</option>
                       <option <?php if($dados['situacao'] == '2') echo "selectec=selected"; ?>>Token entregue</option>
                       <option <?php if($dados['situacao'] == '3') echo "selectec=selected"; ?>>Certificado solicitado</option>
                       <option <?php if($dados['situacao'] == '4') echo "selectec=selected"; ?>>Certificado emitido</option>
                       <option <?php if($dados['situacao'] == '5') echo "selectec=selected"; ?>>Certificado emitido e instalado</option>
                       <option <?php if($dados['situacao'] == '6') echo "selectec=selected"; ?>>Certificado expirado</option>
                       <option <?php if($dados['situacao'] == '7') echo "selectec=selected"; ?>>Usuário inativo</option>
                   </select>
                   </p>
</td>

 

ou troque os valores de acordo como você guarda eles no banco de dados

 

 

<td height="50" colspan="2"><p>   Situação:<br />
                        
                   <select name="situacao">
                       <option <?php if($dados['situacao'] == 'Inicial') echo "selectec=selected"; ?>>Inicial</option>
                       <option <?php if($dados['situacao'] == 'Token entregue') echo "selectec=selected"; ?>>Token entregue</option>
                       <option <?php if($dados['situacao'] == 'Certificado solicitado') echo "selectec=selected"; ?>>Certificado solicitado</option>
                       <option <?php if($dados['situacao'] == 'Certificado emitido') echo "selectec=selected"; ?>>Certificado emitido</option>
                       <option <?php if($dados['situacao'] == 'Certificado emitido e instalado') echo "selectec=selected"; ?>>Certificado emitido e instalado</option>
                       <option <?php if($dados['situacao'] == 'Certificado expirado') echo "selectec=selected"; ?>>Certificado expirado</option>
                       <option <?php if($dados['situacao'] == 'Usuário inativo') echo "selectec=selected"; ?>>Usuário inativo</option>
                   </select>
                   </p>
</td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não estou entendendo muito bem o código. Desculpe, mas poderia me explicar?

 

Obrigado

 

o selected="selected" é um atributo do campo select para dizer qual option vai estar em evidencia quando se carregar a página.

 

se você olhar o código fonte, o option que estiver com o selected="selected" é o que vai estar aparecendo, ex:

 

<select name="situacao">

<option <?php if($dados['situacao'] == '1') echo "selectec=selected"; ?>>Inicial</option>

<option <?php if($dados['situacao'] == '2') echo "selectec=selected"; ?>>Token entregue</option>

<option <?php if($dados['situacao'] == '3') echo "selectec=selected"; ?>>Certificado solicitado</option>

<option <?php if($dados['situacao'] == '4') echo "selectec=selected"; ?>>Certificado emitido</option>

<option <?php if($dados['situacao'] == '5') echo "selectec=selected"; ?>>Certificado emitido e instalado</option>

<option <?php if($dados['situacao'] == '6') echo "selectec=selected"; ?>>Certificado expirado</option>

<option <?php if($dados['situacao'] == '7') echo "selectec=selected"; ?>>Usuário inativo</option>

</select>

 

 

 

Explicando o código:

<option value="1" <?php if($dados['situacao'] == '1'){ echo 'selected="selected"';} ?>>Inicial</option>
   // o if() compara o valor $dados['situacao'] com o que estiver entre '' no caso 1 se valor salvo no banco de dados for igual e ele vai escrever o selected="selected" dentro do option e este vai ficar em envidencia, se o valor for diferente ele pula para o próximo e faz a mesma condição até que se acabem todos.

 

 

Se você der echo do value e coloca ele em um option, ele vai duplicar..

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

o selected="selected" é um atributo do campo select para dizer qual option vai estar em evidencia quando se carregar a página.

 

se você olhar o código fonte, o option que estiver com o selected="selected" é o que vai estar aparecendo, ex:

 

<select name="situacao">

<option <?php if($dados['situacao'] == '1') echo "selectec=selected"; ?>>Inicial</option>

<option <?php if($dados['situacao'] == '2') echo "selectec=selected"; ?>>Token entregue</option>

<option <?php if($dados['situacao'] == '3') echo "selectec=selected"; ?>>Certificado solicitado</option>

<option <?php if($dados['situacao'] == '4') echo "selectec=selected"; ?>>Certificado emitido</option>

<option <?php if($dados['situacao'] == '5') echo "selectec=selected"; ?>>Certificado emitido e instalado</option>

<option <?php if($dados['situacao'] == '6') echo "selectec=selected"; ?>>Certificado expirado</option>

<option <?php if($dados['situacao'] == '7') echo "selectec=selected"; ?>>Usuário inativo</option>

</select>

 

 

 

Explicando o código:

<option value="1" <?php if($dados['situacao'] == '1'){ echo 'selected="selected"';} ?>>Inicial</option>
   // o if() compara o valor $dados['situacao'] com o que estiver entre '' no caso 1 se valor salvo no banco de dados for igual e ele vai escrever o selected="selected" dentro do option e este vai ficar em envidencia, se o valor for diferente ele pula para o próximo e faz a mesma condição até que se acabem todos.

 

 

Se você der echo do value e coloca ele em um option, ele vai duplicar..

 

Espero ter ajudado

 

Poutz!!! Bicho, não estava conseguindo entender o código muito bem por causa dos números e do config.php que voce havia colocado no include. Mas a sua explicação me salvou, e com a ajuda do nosso outro colega que postou aqui, deu certo. Realmente colocando o nome no lugar dos números resolveu e a minha variavel no caso era $usuario.

 

Fico meio um pouco confuso demais quando tenho que misturar codigo php com html.

 

Meu código ficou assim:

<select name="situacao">
                       <option <?php if($usuario["situacao"] == "Inicial") echo 'selected="selected"'; ?>>Inicial</option>
                       <option <?php if($usuario["situacao"] == "Token entregue") echo 'selected="selected"'; ?>>Token entregue</option>
                       <option <?php if($usuario["situacao"] == "Certificado solicitado") echo 'selected="selected"'; ?>>Certificado solicitado</option>
                       <option <?php if($usuario["situacao"] == "Certificado emitido") echo 'selected="selected"'; ?>>Certificado emitido</option>
                       <option <?php if($usuario["situacao"] == "Certificado emitido e instalado") echo 'selected="selected"'; ?>>Certificado emitido e instalado</option>
                       <option <?php if($usuario['situacao'] == "Certificado expirado") echo 'selected="selected"'; ?>>Certificado expirado</option>
                       <option <?php if($usuario['situacao'] == "Usuário inativo") echo 'selected="selected"'; ?>>Usuário inativo</option>
                   </select>

 

Como nosso colega Cyberoma descreveu a explicação: No option selected o if verifica se o que tem na variavel $usuario["situacao"] é igual a situação entre aspas, se sim ele seleciona.

 

É isso né? Muito obrigado a todos vocês.

 

Nao sei se entendi muito bem o que você quer, mas nao é algo parecido com isto?

 

<td height="50" colspan="2"><p>   Situação:<br />
                        
                   <select name="situacao">
                       <option <?php if($dados['situacao'] == '1') echo "selectec=selected"; ?>>Inicial</option>
                       <option <?php if($dados['situacao'] == '2') echo "selectec=selected"; ?>>Token entregue</option>
                       <option <?php if($dados['situacao'] == '3') echo "selectec=selected"; ?>>Certificado solicitado</option>
                       <option <?php if($dados['situacao'] == '4') echo "selectec=selected"; ?>>Certificado emitido</option>
                       <option <?php if($dados['situacao'] == '5') echo "selectec=selected"; ?>>Certificado emitido e instalado</option>
                       <option <?php if($dados['situacao'] == '6') echo "selectec=selected"; ?>>Certificado expirado</option>
                       <option <?php if($dados['situacao'] == '7') echo "selectec=selected"; ?>>Usuário inativo</option>
                   </select>
                   </p>
</td>

 

ou troque os valores de acordo como você guarda eles no banco de dados

 

 

<td height="50" colspan="2"><p>   Situação:<br />
                        
                   <select name="situacao">
                       <option <?php if($dados['situacao'] == 'Inicial') echo "selectec=selected"; ?>>Inicial</option>
                       <option <?php if($dados['situacao'] == 'Token entregue') echo "selectec=selected"; ?>>Token entregue</option>
                       <option <?php if($dados['situacao'] == 'Certificado solicitado') echo "selectec=selected"; ?>>Certificado solicitado</option>
                       <option <?php if($dados['situacao'] == 'Certificado emitido') echo "selectec=selected"; ?>>Certificado emitido</option>
                       <option <?php if($dados['situacao'] == 'Certificado emitido e instalado') echo "selectec=selected"; ?>>Certificado emitido e instalado</option>
                       <option <?php if($dados['situacao'] == 'Certificado expirado') echo "selectec=selected"; ?>>Certificado expirado</option>
                       <option <?php if($dados['situacao'] == 'Usuário inativo') echo "selectec=selected"; ?>>Usuário inativo</option>
                   </select>
                   </p>
</td>

 

Você e o Cyberoma me salvaram!

 

Muito obrigado!

 

Podem colocar o tópico como resolvido!

 

Só uma dúvida... Existe a posibilidade de fazer isso sem misturar php com html?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Só uma dúvida... Existe a posibilidade de fazer isso sem misturar php com html?

 

Você quer isso pra evitar que o código fique "bagunçado"?

 

 

 

Voce pode tentar fazer as comparações antes

 

 

if($dados['situacao'] == 'Inicial') {
$select1 = "selected=selected";
} else if($dados['situacao'] == 'Token entregue') {
$select2 = "selected=selected";
} else if [.........]

 

dai nos options você vai ter que por

<option <?php echo $select1; ?>>Inicial</option>
<option <?php echo $select2; ?>>Token entregue</option>

e assim vai...

 

Acho que é +- isso que você quer não é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer isso pra evitar que o código fique "bagunçado"?

 

 

 

Voce pode tentar fazer as comparações antes

 

 

if($dados['situacao'] == 'Inicial') {
$select1 = "selected=selected";
} else if($dados['situacao'] == 'Token entregue') {
$select2 = "selected=selected";
} else if [.........]

 

dai nos options você vai ter que por

<option <?php echo $select1; ?>>Inicial</option>
<option <?php echo $select2; ?>>Token entregue</option>

e assim vai...

 

Acho que é +- isso que você quer não é?

 

Exatamente. Meu código anda muito bagunçado, pois estou misturando demais o html com o php, ai tem até códigos repetidos. Estou querendo colocar todos os códigos php em arquivo separado e chamar tipo as funções que desejo. Mas to achando tão complicado.... É osso fazer isso quando se é um novato em php.

Bicho, me sinto um tapado quando não consigo visualizar assim. Esse código vai ajudar a limpar um pouco essa bagunça.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae... ta ficando melhorzinho...

 

Me baseando na resposta do Wingdings fiz uma função.

Não sei se fiz a melhor escolha, mas fiz assim:

 

Criei um arquivo chamado biblioteca.php com a função select($selected) abaixo:

 

function select($selected){
if($selected == 'Inicial' && $usuario["situacao"] == 'Inicial'){
	return 'selected="selected"';
}
if($selected == 'Token_entregue' && $usuario["situacao"] == 'Token entregue'){
		return 'selected="selected"';
}
if($selected == 'Certificado_solicitado' && $usuario["situacao"] == 'Certificado solicitado'){
		return 'selected="selected"';
}
if($selected == 'Certificado_emitido' && $usuario["situacao"] == 'Certificado emitido'){
		return 'selected="selected"';
}
if($selected == 'Certificado_emitido_e_instalado' && $usuario["situacao"] == 'Certificado emitido e instalado'){
		return 'selected="selected"';
}
if($selected == 'Certificado_expirado' && $usuario["situacao"] == 'Certificado expirado'){
		return 'selected="selected"';
}
if($selected == 'Usuario_inativo' && $usuario["situacao"] == 'Usuario inativo'){
		return 'selected="selected"';
}
}
?>

Essa função faz a comparação para selecionar o option correto.

 

e no formulario apenas coloquei para chamar a função. Assim:

 

<select name="situacao">
                       <option <?php echo select('Inicial'); ?>>Inicial</option>
                       <option <?php echo select('Token_entregue'); ?>>Token entregue</option>
                       <option <?php echo select('Certificado_solicitado'); ?>>Certificado solicitado</option>
                       <option <?php echo select('Certificado_emitido'); ?>>Certificado emitido</option>
                       <option <?php echo select('Certificado_emitido_e_instalado'); ?>>Certificado emitido e instalado</option>
                       <option <?php echo select('Certificado_expirado'); ?>>Certificado expirado</option>
                       <option <?php echo select('Usuario_inativo'); ?>>Usuário inativo</option>
                   </select>

 

Obrigado mais uma vez amigos pela ajuda! Se alguem tiver uma melhor solução poste ai para mim.

 

Valeu!

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.