SrTunes 1 Denunciar post Postado Abril 17, 2012 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
Cyberoma 5 Denunciar post Postado Abril 17, 2012 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
Vinicius Rangel 208 Denunciar post Postado Abril 17, 2012 tira o seu echo do value e coloca ele em um option de preferencia do primeiro Compartilhar este post Link para o post Compartilhar em outros sites
SrTunes 1 Denunciar post Postado Abril 17, 2012 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
Vinicius Rangel 208 Denunciar post Postado Abril 17, 2012 isso acontece por que você esta recuperando os dados do select manualmente. tente fazer igual ao exemplo do nosso amigo Cyberoma Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Abril 17, 2012 Desculpem, bugo aqui deu double post.. Compartilhar este post Link para o post Compartilhar em outros sites
SrTunes 1 Denunciar post Postado Abril 17, 2012 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
Vinicius Rangel 208 Denunciar post Postado Abril 17, 2012 $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
SrTunes 1 Denunciar post Postado Abril 17, 2012 $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
Cyberoma 5 Denunciar post Postado Abril 17, 2012 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
SrTunes 1 Denunciar post Postado Abril 17, 2012 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
Wingdings 20 Denunciar post Postado Abril 17, 2012 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
Cyberoma 5 Denunciar post Postado Abril 17, 2012 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
SrTunes 1 Denunciar post Postado Abril 17, 2012 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
Wingdings 20 Denunciar post Postado Abril 17, 2012 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
SrTunes 1 Denunciar post Postado Abril 18, 2012 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
SrTunes 1 Denunciar post Postado Abril 18, 2012 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
SrTunes 1 Denunciar post Postado Abril 25, 2012 Podem fechar o topico como resolvido! Obrigado amigos. Compartilhar este post Link para o post Compartilhar em outros sites