Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
..
Rafael, obrigado pela ajuda..
Eu nao entendi esse $dado = [valor já salvo].. que valor é esse,e como vou pega-lo?
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?
>
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:
-login
-nivel_acesso
Esta errado? Precisa fazer a tabela nivel de acesso é?
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:
-login
-nivel_acesso
Esta errado? Precisa fazer a tabela nivel de acesso é?
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?
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?
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
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
: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..
Boa Tarde,
Acho que entendi o que você precisa.
um if basico no seu loop resolve o problema, ex:
Tenta implementar e nos diga se funcionou, até mais
>
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:
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:
Tenta implementar e nos diga se funcionou, até mais