Cyberoma 5 Denunciar post Postado Abril 9, 2012 Pessoal eu queria saber como buscar dados no banco e jogar em um select o valor atual de um registro.. vou explicar melhor.. Quando eu for precisar editar um cadastro eu faço a busca no banco. Porem se tiver uma campo que seja select (por exemplo ESTADO), não sei como fazer para que o select receba o valor (ex: BA) que estar no banco e os outros valores do select sejam diferentes obviamente (SP, RJ, etc).. Entenderam? Uso esse codigo para buscar os dados no banco e jogar no select. <?php include "config.php"; $sql = mysql_query("SELECT * FROM tabela ORDER BY id"); ?> <select name="campo" id="campo"> <option>Selecione...</option> <?php while($linha = mysql_fetch_array($sql)) { ?> <option value="<?php echo $linha['id'] ?>"> <?php echo $linha['nome'] ?></option> <?php } ?> </select> Alguem poderia me ajudar? Desde ja agradeço pela atenção. alguem tem alguma dica? Galera fiz assim. <?php include "config.php"; $sql1 = mysql_query("SELECT * FROM funcionarios WHERE id='$id'"); ?> <select name="nivel_acesso" id="nivel_acesso"> <?php while($linha = mysql_fetch_array($sql1)) { ?> <option value="<?php echo $linha['id'] ?>"> <?php echo $linha['nivel_acesso'] ?></option> <?php } $sql2 = mysql_query("SELECT * FROM funcionarios"); while($linha = mysql_fetch_array($sql2)) { ?> <option value="<?php echo $linha['id'] ?>"> <?php echo $linha['nivel_acesso'] ?></option> <?php } ?> </select> Ele coloca o valor atual,porem ele repete o valor depois. Putz, ninguem pode me ajudar? ou não entenderam o meu problema? .. Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Impacto 15 Denunciar post Postado Abril 10, 2012 Boa Tarde, Acho que entendi o que você precisa. um if basico no seu loop resolve o problema, ex: Como seus dados já estão salvos no banco, presumo que você chamou esses dados antes de popular o select, basta comparar o valor que já está salvo como o valor atual da consulta. <?php include "config.php"; $sql = mysql_query("SELECT * FROM tabela ORDER BY id"); ?> <select name="campo" id="campo"> <option>Selecione...</option> <?php $dado = [valor já salvo] while($linha = mysql_fetch_array($sql)) { if($linha['id'] == $dados){ $select = ' selected="selected"'; }else{ $select = ''; } ?> <option value="<?php echo $linha['id'] ?>"<?php echo $select; ?>> <?php echo $linha['nome'] ?></option> <?php } ?> </select> Tenta implementar e nos diga se funcionou, até mais Pessoal eu queria saber como buscar dados no banco e jogar em um select o valor atual de um registro.. vou explicar melhor.. Quando eu for precisar editar um cadastro eu faço a busca no banco. Porem se tiver uma campo que seja select (por exemplo ESTADO), não sei como fazer para que o select receba o valor (ex: BA) que estar no banco e os outros valores do select sejam diferentes obviamente (SP, RJ, etc).. Entenderam? Uso esse codigo para buscar os dados no banco e jogar no select. <?php include "config.php"; $sql = mysql_query("SELECT * FROM tabela ORDER BY id"); ?> <select name="campo" id="campo"> <option>Selecione...</option> <?php while($linha = mysql_fetch_array($sql)) { ?> <option value="<?php echo $linha['id'] ?>"> <?php echo $linha['nome'] ?></option> <?php } ?> </select> Alguem poderia me ajudar? Desde ja agradeço pela atenção. Ops, foi um 's' a mais na hora de comparar, lembre de corrigir na hora de testar. Até... Boa Tarde, Acho que entendi o que você precisa. um if basico no seu loop resolve o problema, ex: Como seus dados já estão salvos no banco, presumo que você chamou esses dados antes de popular o select, basta comparar o valor que já está salvo como o valor atual da consulta. <?php include "config.php"; $sql = mysql_query("SELECT * FROM tabela ORDER BY id"); ?> <select name="campo" id="campo"> <option>Selecione...</option> <?php $dado = [valor já salvo] while($linha = mysql_fetch_array($sql)) { if($linha['id'] == $dados){ $select = ' selected="selected"'; }else{ $select = ''; } ?> <option value="<?php echo $linha['id'] ?>"<?php echo $select; ?>> <?php echo $linha['nome'] ?></option> <?php } ?> </select> Tenta implementar e nos diga se funcionou, até mais Ops, foi um 's' a mais na hora de comparar, lembre de corrigir na hora de testar. Até... Boa Tarde, Acho que entendi o que você precisa. um if basico no seu loop resolve o problema, ex: Como seus dados já estão salvos no banco, presumo que você chamou esses dados antes de popular o select, basta comparar o valor que já está salvo como o valor atual da consulta. <?php include "config.php"; $sql = mysql_query("SELECT * FROM tabela ORDER BY id"); ?> <select name="campo" id="campo"> <option>Selecione...</option> <?php $dado = [valor já salvo] while($linha = mysql_fetch_array($sql)) { if($linha['id'] == $dados){ $select = ' selected="selected"'; }else{ $select = ''; } ?> <option value="<?php echo $linha['id'] ?>"<?php echo $select; ?>> <?php echo $linha['nome'] ?></option> <?php } ?> </select> Tenta implementar e nos diga se funcionou, até mais Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 10, 2012 Rafael, obrigado pela ajuda.. Eu nao entendi esse $dado = [valor já salvo].. que valor é esse,e como vou pega-lo? Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Impacto 15 Denunciar post Postado Abril 10, 2012 Pelo o que você mostrou seria o valor que você salvou no campo nível de acesso. Você quer popular o select com os níveis de acesso que estão em outra tabela certo? Se for isso, você está fazendo errado utilizando dois selects na mesma tabela. Cola aqui o conteúdo das duas tabelas (funcionários e nivel), daí faço o exemplo com seus campos reais. Até mais Rafael, obrigado pela ajuda.. Eu nao entendi esse $dado = [valor já salvo].. que valor é esse,e como vou pega-lo? Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 10, 2012 Pelo o que você mostrou seria o valor que você salvou no campo nível de acesso. Você quer popular o select com os níveis de acesso que estão em outra tabela certo? Se for isso, você está fazendo errado utilizando dois selects na mesma tabela. Cola aqui o conteúdo das duas tabelas (funcionários e nivel), daí faço o exemplo com seus campos reais. Até mais Na verdade estou usando somente uma tabela > funcionarios com os campos: - id - nome - email -login - senha -nivel_acesso Esta errado? Precisa fazer a tabela nivel de acesso é? Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Impacto 15 Denunciar post Postado Abril 10, 2012 Varia de caso em caso, geralmente uso duas tabelas para trabalhar com ids ao invés de nomes, assim se evita erro de charset e da mais velocidade as consultas. Mais enfim, se você tem somente uma tabela fica muito mais fácil, você não vai precisar da segunda consulta para pegar o select do nível. <?php include "config.php"; $sql = mysql_query("SELECT * FROM funcionarios WHERE id='$id'"); $dados = mysql_fetch_assoc($sql); ?> <select name="nivel_acesso" id="nivel_acesso"> <option value="admin" <?php if($dados['nivel_acesso'] == 'admin'){ echo 'selected="selected"';} ?>>Administrador</option> <option value="gerente" <?php if($dados['nivel_acesso'] == 'gerente'){ echo 'selected="selected"';} ?>>Gerente</option> <option value="operador" <?php if($dados['nivel_acesso'] == 'operador'){ echo 'selected="selected"';} ?>>Operador</option> </select> Você só precisa trocar os valores do select pelos seus níveis de acesso. Se não for isso, vamos conversando por aqui. até mais Na verdade estou usando somente uma tabela > funcionarios com os campos: - id - nome - email -login - senha -nivel_acesso Esta errado? Precisa fazer a tabela nivel de acesso é? Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 10, 2012 Rafael, olha só ele fez o select com os 3 niveis.. Mas o que eu quero é o seguinte. Tenho uma usuario cadastrado: nome = teste / login= n2 / nivel_acesso = 2 Agora eu vou na tela de editar cadastro. Ai eu seleciono o usuario "teste". e vai ser listado pra mim. O campo(textfield) nome: ja com com o registro dentro do campo > "teste" O campo(textfield) login: ja com com o registro dentro do campo > "n2" O campo (select) nivel_acesso: QUE DEVERIA JA ESTAR COM O NIVEL '2' SETADO. E AS OUTRAS OPÇÕES SER 1 E 3 (Ao inves de numeros ser "administrador, usuario...") Ai eu edito os campo se eu quizer e clico em atualizar. Uploaded with ImageShack.us Entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Impacto 15 Denunciar post Postado Abril 10, 2012 Os valores do input são números? se for o caso basta trocar nas informações que te enviei a pouco. <?php include "config.php"; $sql = mysql_query("SELECT * FROM funcionarios WHERE id='$id'"); $dados = mysql_fetch_assoc($sql); ?> <select name="nivel_acesso" id="nivel_acesso"> <option value="1" <?php if($dados['nivel_acesso'] == '1'){ echo 'selected="selected"';} ?>>Administrador</option> <option value="2" <?php if($dados['nivel_acesso'] == '2'){ echo 'selected="selected"';} ?>>Gerente</option> <option value="3" <?php if($dados['nivel_acesso'] == '3'){ echo 'selected="selected"';} ?>>Operador</option> </select> Se quiser posta os arquivos em algum lugar ou me manda por email para eu dar uma olhada melhor - rafael@impactocreative.com.br até mais Rafael, olha só ele fez o select com os 3 niveis.. Mas o que eu quero é o seguinte. Tenho uma usuario cadastrado: nome = teste / login= n2 / nivel_acesso = 2 Agora eu vou na tela de editar cadastro. Ai eu seleciono o usuario "teste". e vai ser listado pra mim. O campo(textfield) nome: ja com com o registro dentro do campo > "teste" O campo(textfield) login: ja com com o registro dentro do campo > "n2" O campo (select) nivel_acesso: QUE DEVERIA JA ESTAR COM O NIVEL '2' SETADO. E AS OUTRAS OPÇÕES SER 1 E 3 (Ao inves de numeros ser "administrador, usuario...") Ai eu edito os campo se eu quizer e clico em atualizar. Uploaded with ImageShack.us Entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 10, 2012 Aeee FUNCIONOU Rafael, era isso mesmoo nuss.. haha Parceiro agora me explica o que é isso 'selected="selected"' ??? Outra coisa, se ao inves de ser nivel_acesso ser ESTADO. <option value="BA" <?php if($dados['estado'] == '1'){ echo 'selected="selected"';} ?>>Bahia</option> <option value="SP" <?php if($dados['estado'] == '2'){ echo 'selected="selected"';} ?>>São Paulo</option> ... FAzer isso com todos os ESTADOS??? Por que nivel de acesso são 3, mas estados são mais de 20.. É isso mesmo? Cara muito obrigado pela ajuda,, estava precisando muito disso.. abração Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Impacto 15 Denunciar post Postado Abril 10, 2012 Beleza que bom que deu certo. 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="nivel"> <option value="1">Administrador</option> <option value="2" selected="selected">Cliente</option> // neste caso o cliente vai estar em evidencia. <option value="3">Usuário</option> </select> No caso dos estados é o mesmo. Para editar o estado você faz o mesmo procedimento, faz a consulta e em seguida faz o if para verificar qual o valor é correspondente ao select. <select name="estado"> <option value="AC" <?php if($dados['estado'] == 'AC'){ echo 'selected="selected"';} ?>>AC</option> <option value="AL" <?php if($dados['estado'] == 'AL'){ echo 'selected="selected"';} ?>>AL</option> <option value="AM" <?php if($dados['estado'] == 'AM'){ echo 'selected="selected"';} ?>>AM</option> <option value="AP" <?php if($dados['estado'] == 'AP'){ echo 'selected="selected"';} ?>>AP</option> <option value="BA" <?php if($dados['estado'] == 'BA'){ echo 'selected="selected"';} ?>>BA</option> <option value="CE" <?php if($dados['estado'] == 'CE'){ echo 'selected="selected"';} ?>>CE</option> <option value="DF" <?php if($dados['estado'] == 'DF'){ echo 'selected="selected"';} ?>>DF</option> <option value="ES" <?php if($dados['estado'] == 'ES'){ echo 'selected="selected"';} ?>>ES</option> <option value="GO" <?php if($dados['estado'] == 'GO'){ echo 'selected="selected"';} ?>>GO</option> <option value="MA" <?php if($dados['estado'] == 'MA'){ echo 'selected="selected"';} ?>>MA</option> <option value="MG" <?php if($dados['estado'] == 'MG'){ echo 'selected="selected"';} ?>>MG</option> <option value="MS" <?php if($dados['estado'] == 'MS'){ echo 'selected="selected"';} ?>>MS</option> <option value="MT" <?php if($dados['estado'] == 'MT'){ echo 'selected="selected"';} ?>>MT</option> <option value="PA" <?php if($dados['estado'] == 'PA'){ echo 'selected="selected"';} ?>>PA</option> <option value="PB" <?php if($dados['estado'] == 'PB'){ echo 'selected="selected"';} ?>>PB</option> <option value="PE" <?php if($dados['estado'] == 'PE'){ echo 'selected="selected"';} ?>>PE</option> <option value="PI" <?php if($dados['estado'] == 'PI'){ echo 'selected="selected"';} ?>>PI</option> <option value="PR" <?php if($dados['estado'] == 'PR'){ echo 'selected="selected"';} ?>>PR</option> <option value="RJ" <?php if($dados['estado'] == 'RJ'){ echo 'selected="selected"';} ?>>RJ</option> <option value="RN" <?php if($dados['estado'] == 'RN'){ echo 'selected="selected"';} ?>>RN</option> <option value="RO" <?php if($dados['estado'] == 'RO'){ echo 'selected="selected"';} ?>>RO</option> <option value="RR" <?php if($dados['estado'] == 'RR'){ echo 'selected="selected"';} ?>>RR</option> <option value="RS" <?php if($dados['estado'] == 'RS'){ echo 'selected="selected"';} ?>>RS</option> <option value="SC" <?php if($dados['estado'] == 'SC'){ echo 'selected="selected"';} ?>>SC</option> <option value="SE" <?php if($dados['estado'] == 'SE'){ echo 'selected="selected"';} ?>>SE</option> <option value="SP" <?php if($dados['estado'] == 'SP'){ echo 'selected="selected"';} ?>>SP</option> <option value="TO" <?php if($dados['estado'] == 'TO'){ echo 'selected="selected"';} ?>>TO</option> </select> Explicando o código: <option value="TO" <?php if($dados['estado'] == 'TO'){ echo 'selected="selected"';} ?>>TO</option> // o if() compara o valor $dados['estado'] com o que estiver entre '' no caso TO 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. Você questionou a quantidade e isso é normal mais você pode utilizar outras tabelas no banco para facilitar esse trabalho e utilizar um loop, por exemplo se você tiver uma tabela no mysql com os estados cadastrados ficaria assim: <select name="estado"> <option value="">Selecione</option> <?php $sqlEstados = "SELECT * FROM estado ORDER BY estado ASC"; while($qrEstados = mysql_fetch_assoc($sqlEstados)){ if($dados['estado'] == $qrEstados['estado']){ //neste trecho $dados['estado'] é o valor que você salvou no banco e conseguiu fazendo um primeiro select com o id da tabela que você quer atualizar. $select = 'selected="selected"'; }else{ $select = ''; } echo '<option value="$qrEstados['estado']" '.$select.'>'.$qrEstados['estado'].'</option>'; } ?> </select> Neste exemplo ficam bem menos linhas e de mais fácil manutenção. Espero ter ajudado, duvidas poste ai. Até mais Aeee FUNCIONOU Rafael, era isso mesmoo nuss.. haha Parceiro agora me explica o que é isso 'selected="selected"' ??? Outra coisa, se ao inves de ser nivel_acesso ser ESTADO. <option value="BA" <?php if($dados['estado'] == '1'){ echo 'selected="selected"';} ?>>Bahia</option> <option value="SP" <?php if($dados['estado'] == '2'){ echo 'selected="selected"';} ?>>São Paulo</option> ... FAzer isso com todos os ESTADOS??? Por que nivel de acesso são 3, mas estados são mais de 20.. É isso mesmo? Cara muito obrigado pela ajuda,, estava precisando muito disso.. abração Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 10, 2012 :o Tuh é o cara, ta muito bem explicado.. Realmente vou usar uma tabela somente para os estados.. Pow cara OBRIGADO, você ajudou e muito. Abraçãoo \o/ Topico Resolvido.. Compartilhar este post Link para o post Compartilhar em outros sites