Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal.
Eu tô com um projeto php e de repente surgiu um problema.
Eu tenho um formulário em uma página onde tem um "select menu" com as várias opções. Além disso tem os outros campos para serem preenchidos. O caso é o seguinte: se o usuário não preenche algum campo de forma correta eu coloquei uma mensagem de erro, na mesma página. O problema é que toda vez que a página é recarregada, o select menu volta na opção inicial. Gostaria de saber algum método pra evitar que isso aconteça, ou seja, que a página sofra o refresh mas o menu continue com a opção que o usuário escolheu.
Desde ja agradeço a todos.
bom filho,
A solução eh um pouco complexa.
Depende de como voce está listando os dados do select.
Se o select é montado pelo PHP é bem mais facil. Basta colocar uma condição (if) para verificar se aquele item que ele está listando, tem o mesmo valor (value) do é recebido do formulário. Daí coloca-se o "echo selected" na opção em questão.
se os dados sao fixos a solução seria fazer como o WDuarte disse e inserir uma função javascript para forçar a seleção quando a página fosse carregada no cliente.
Dá uma olhada nesse script em funcionamento, acho que te serve como uma luva:
http://www.wbruno.com.br/scripts/combo-preenche-input.php
pagina.html
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select[name='nome']").change(function(){
$("input[name='endereco']").val('Carregando...');
$("input[name='telefone']").val('Carregando...');
$.getJSON(
'function.php',
{idCliente: $(this).val()},
function(data){
$.each(data, function(i, obj){
$("input[name='endereco']").val(obj.endereco);
$("input[name='telefone']").val(obj.telefone);
})
});
});
});
</script>
</head>
<body>
<form action="" method="post">
<label>Nome: <select name="nome">
<option value="">--</option>
<?php
include('function.php');
echo montaSelect();
?>
</select></label>
<label>Endereço: <input type="text" name="endereco" value="" /></label>
<label>Telefone: <input type="text" name="telefone" value="" /></label>
</form>
</body>
</html>function.php
<?php
$con = mysql_connect('localhost', 'root', '123');
mysql_select_db('ajax', $con);
/**
* função que retorna o select
*/
function montaSelect()
{
$sql = "SELECT `idCliente`, `nome` FROM `cliente` ";
$query = mysql_query( $sql );
if( mysql_num_rows( $query ) > 0 )
{
while( $dados = mysql_fetch_assoc( $query ) )
{
$opt .= '<option value="'.$dados['idCliente'].'">'.$dados['nome'].'</option>';
}
}
else
$opt = '<option value="0">Nenhum cliente cadastrado</option>';
return $opt;
}
/**
* função que devolve em formato JSON os dados do cliente
*/
function retorna( $id=null )
{
$id = (int)$id;
$sql = "SELECT * FROM `cliente` ";
if( $id != null )
$sql .= "WHERE `idCliente` = {$id} ";
$query = mysql_query( $sql );
//$json = 'var dados = ';
$json .= ' [';
if( mysql_num_rows( $query ) > 0 )
{
while( $dados = mysql_fetch_assoc( $query ) )
{
$json .= "{endereco: '{$dados['endereco']}', telefone: '{$dados['telefone']}'}";;
}
}
else
$json = 'endereco: não encontrado';
$json .= ']';
//$jston .= ';';
return $json;
}
/ só se for enviado o parâmetro, que devolve o combo /
if( isset($_GET['idCliente']) )
{
echo retorna( $_GET['idCliente'] );
}
?>Fonte: [http://www.wbruno.com.br/blog/?p=12](http://www.wbruno.com.br/blog/?p=12)
>
Olá pessoal.
Eu tô com um projeto php e de repente surgiu um problema.
Eu tenho um formulário em uma página onde tem um "select menu" com as várias opções. Além disso tem os outros campos para serem preenchidos. O caso é o seguinte: se o usuário não preenche algum campo de forma correta eu coloquei uma mensagem de erro, na mesma página. O problema é que toda vez que a página é recarregada, o select menu volta na opção inicial. Gostaria de saber algum método pra evitar que isso aconteça, ou seja, que a página sofra o refresh mas o menu continue com a opção que o usuário escolheu.
Desde ja agradeço a todos.
Uma das soluções seria validar os campos com javascript e ajax em caso de alguma consulta ao banco de dados!