Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde amigos,
Estou com um probleminha que não estou conseguindo resolver.
Tenho um list box, que grava perfeitamente no BD as informações, mas quando retorno para alterar ele sempre lista o primeiro e não o que está gravado no BD.
Ele lista 3 bancos, e o valor no BD é 1 para o BRADESCO, 2 para o ITAÚ e 3 para o SANTANDER
Então queria quando eu fosse editar o cadastro, que no caso se tinha cadastrado o Itaú, volte o itaú. Mas no primeiro exemplo abaixo ele sempre volta o BRADESCO que é o primeiro, e no segundo exemplo ele retorna sempre o SANTANDER.
Já tentei dessa forma abaixo
Ele vonta sempre o primeiro resultado
<tr>
<td><div align="left" class="style2"><strong>BANCOS: </strong></div></td>
<td><div align="left" class="style2">
<label>
<select name="form_banco" id="form_banco" selected="selected">
<option value="1">1 - BRADESCO</option>
<option value="2">2 - ITAÚ</option>
<option value="3">3 - SANTANDER</option>
</select>
</label>
</div></td>
</tr>
E também dessa forma abaixo, que ele sempre retorna o terceiro resultado.
<tr>
<td><div align="left" class="style2"><strong>BANCOS: </strong></div></td>
<td><div align="left" class="style2">
<label>
<select name="form_banco" id="form_banco" selected="selected">
<option selected="selected" value="1">1 - BRADESCO</option>
<option selected="selected" value="2">2 - ITAÚ</option>
<option selected="selected" value="3">3 - SANTANDER</option>
</select>
</label>
</div></td>
</tr>
Como disse, ele grava perfeitamente no BD, e quando edito também, mas não retorna no list box o valor que está gravado no BD.
Quem puder me ajudar fico agradecido
Não entendi bem sua lógica, vc faz um select em uma tabela "bancos". Não existe essa tabela.
Existe uma tabela que é a clientes, e o campo banco está nessa tabela, aonde eu insiro os números referente aos bancos.
Nome como "marca" , não existe.
Ficou um pouco confuso o que vc postou, creio que vc não tenha entendido bem o que eu preciso.
Esse abaixo é um campo no qual se tem na mesma tabela clientes, gravo normalmente e retorna o resultado, porém é um campo simples text.
<tr>
<td width="110">NOME:</td>
<td width="190"><input name="form_nome" type="text" value="<?=@mysql_result($sql,0,nome)?>" size="60"></td>
</tr>
Mas no caso preciso nesse de um list box para essa parte dos bancos, já tentei por radio, porém mesmo marcando e gravando normalmente no banco de dados, quanto entro para visualizar ou alterar não se tem nada marcado, o resultado que está gravado no banco não retorna no radio. Igualmente acontecendo pelo list box
Outro fator também, nesse seu exemplo cadê as opções dos bancos?? Vc fez algo para trazer os resultados, mas no meu list box que postei, as opções ficam no código para serem inseridas no BD.
<select name="bancos">
<option value="1" <?php $v = 1; if($v == $resultado['banco']){echo "selected='selected'";}?>>Banco 01</option>
<option value="2" <?php $v = 2; if($v == $resultado['banco']){echo "selected='selected'";}?>>Banco 02</option>
<option value="3" <?php $v = 3; if($v == $resultado['banco']){echo "selected='selected'";}?>>Banco -3</option>
</select>Esse seu exemplo está fazendo o mesmo que o meu do primeiro post, ele grava no BD, porém quando vou visualizar ou editar ele está padrão que é o primeiro, no caso o 1, não retornando o resultado que está gravado no BD.
Essa parte é que está quebrando a cabeça.
Também tentei via radio como está abaixo. grava normalmente no BD, mas não traz o resulltado.
<td>BANCOS:</td>
<input type="radio" name="form_banco" id="form_banco" checked="checked" value="1" <?php if($dados['banco']=='1');?> />BARDESCO</td>
<input type="radio" name="form_banco" id="form_banco" checked="checked" value="2" <?php if($dados['banco']=='2');?> />ITAÚ</td>
<input type="radio" name="form_banco" id="form_banco" checked="checked" value="3" <?php if($dados['banco']=='3');?> />SANTANDER</td>
</tr>O que eu postei #4 funciona!
<select name="bancos">
<option value="1" <?php $v = 1; if($v == $resultado['banco']){echo "selected='selected'";}?>>Banco 01</option>
<option value="2" <?php $v = 2; if($v == $resultado['banco']){echo "selected='selected'";}?>>Banco 02</option>
<option value="3" <?php $v = 3; if($v == $resultado['banco']){echo "selected='selected'";}?>>Banco 03</option>
</select>
$v é o valor do id do banco, dai $resultado['banco'] é o id que vem no banco de dados...
Não Andrew, ele faz exatamente o que o meu já estava fazendo. Somente grava no BD, mas quando consulto ou vou em alterar o resultado dele está sempre o primeiro da lista. Mesmo que no banco esteja gravado o banco 2. ele me retorna o banco 1
Posta o teu código de editar...
O editar e cadastrar é o mesmo que postei acima
Cara não tem erro, isso funciona tranquilamente!
<select name="bancos">
<option value="1" <?php $v = 1; if($v == $resultado['banco']){echo "selected='selected'";}?>>Bradesco</option>
<option value="2" <?php $v = 2; if($v == $resultado['banco']){echo "selected='selected'";}?>>Itaú</option>
<option value="3" <?php $v = 3; if($v == $resultado['banco']){echo "selected='selected'";}?>>Santander</option>
</select>
A $resultado['banco'] é a sua query que busca o resultado do dado que você está alterando, só trocar o nome do campo e da variavel conforme o seu...
Já usei isso várias vezes e funciona sem erro! :)
O seu faz o mesmo que o meu, apenas grava mas não retona o resultado, assim o meu código fica muito mais simples.
A minha query é justamente banco. Retornar o que está gravado no banco é que não faz.
Quem puder dar uma luz nesse sentido do list box ou mesmo no Radio me ajuda
Bom pessoal, realmente não consegui trazer nem o list box nem o radio marcado, mesmo eles sendo gravados corretamente no BD, porém quando retorno ao cadastro o list box está em primeiro ou no neutro, e o radio retorna vazio. O radio seria para fazer uma simples escolha de sexo por exemplo sendo o MASCULINO e FEMININO, mas vou deixar isso no type=text que se retorna tranquilamente.
Procurei em inúmeros fóruns e vi que muita gente não consegue, e mesmo depois de inúmeras explicações ficam sem soluções. Muita gente confunde o gravar no banco e trazer o resultado em outro campo. Na verdade é trazer novamente o radio marcado quando se consulta. Bom, como meu problema era com os bancos eu dei uma solução, funcional para quem precisa com urgência e sendo bem prática.
No caso na minha tabela "clientes" tinha o campo banco, no qual ali iria se guardar o nº do banco. Nos exemplos meus eram:
1 = BRADESCO
2 = ITAÚ
3 = SANTANDER
nessa linha alterei o campo "banco" para "id_banco" na tabela "clientes"
Criei a tabela bancos
CREATE TABLE IF NOT EXISTS `bancos` (
`id_banco` int(10) NOT NULL AUTO_INCREMENT,
`banco` varchar(30) NOT NULL,
PRIMARY KEY (`id_banco`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Extraindo dados da tabela bancos
--
INSERT INTO bancos (id_banco, banco) VALUES
(1, 'BRADESCO'),
(2, 'ITAÚ'),
(3, 'SANTANDER');
E no arquivo de cadastro e edição abaixo
<select name="form_id_banco">
<option value="form_id_banco">SELECIONE UM BANCO</option>
<? $sql_banco = mysql_query("SELECT * FROM bancos ORDER BY banco");
while($coluna = mysql_fetch_array($sql_banco)) { ?><option value="<?=$coluna[id_banco]?>"<? if(@mysql_result($sql,0,id_banco) == $coluna[id_banco]) echo " selected"; ?>><?=$coluna[banco]?></option>
<? } ?></select>
Nesse caso eu já puxo direto da tabela "bancos" a ID referente ao banco e já gravo no tabela "clientes" a ID do banco no campo id_banco. Na consulta e edição o mesmo já fica gravado;
Pelo que vi pelo fóruns é algo que muitos ficam sem solução, então fica uma dica aqui para situações em que não se esteja conseguindo resolver.
Como disse isso é uma solução, não é para se criar uma tabela sexo por exemplo, nesse caso por radio ainda não encontrei uma solução.
O tópico pode ser fechado ou o deixar em aberto ainda para alguma solução para o radio.no qual ainda preciso.
Abraços.
Acho que resolve! ;)