Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vinicvo

Select menu

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.