Ir para conteúdo
Fórum Script Brasil
  • 0

Alteração de Cadastro


viper33

Pergunta

Tenho um form de cidade onde cadastro a cidade e o estado. Quando clico em cadastrar cidade o formulário está em branco pronto para inserção dos dados. É o padrão para todos os cadastros. E quando clico em alterar o form traz os dados para que o usuário possa fazer a alteração. No caso da cidade fiz assim no campo select:

<select name="sgestado">
                <option value="Selecione">Selecione</option>
                <option value = "AC" <? if($sgestado == "AC") {echo "selected";}?>>AC</option>
                <option value = "AL" <? if($sgestado == "AL") {echo "selected";}?>>AL</option>
                <option value = "AM" <? if($sgestado == "AM") {echo "selected";}?>>AM</option>
                <option value = "AP" <? if($sgestado == "AP") {echo "selected";}?>>AP</option>
                <option value = "BA" <? if($sgestado == "BA") {echo "selected";}?>>BA</option>
                <option value = "CE" <? if($sgestado == "CE") {echo "selected";}?>>CE</option>
                <option value = "DF" <? if($sgestado == "DF") {echo "selected";}?>>DF</option>
                <option value = "ES" <? if($sgestado == "ES") {echo "selected";}?>>ES</option>
                <option value = "GO" <? if($sgestado == "GO") {echo "selected";}?>>GO</option>
                <option value = "MA" <? if($sgestado == "MA") {echo "selected";}?>>MA</option>
                <option value = "MG" <? if($sgestado == "MG") {echo "selected";}?>>MG</option>
                <option value = "MS" <? if($sgestado == "MS") {echo "selected";}?>>MS</option>
                <option value = "MT" <? if($sgestado == "MT") {echo "selected";}?>>MT</option>
                <option value = "PA" <? if($sgestado == "PA") {echo "selected";}?>>PA</option>
                <option value = "PB" <? if($sgestado == "PB") {echo "selected";}?>>PB</option>
                <option value = "PE" <? if($sgestado == "PE") {echo "selected";}?>>PE</option>
                <option value = "PI" <? if($sgestado == "PI") {echo "selected";}?>>PI</option>
                <option value = "PR" <? if($sgestado == "PR") {echo "selected";}?>>PR</option>
                <option value = "RJ" <? if($sgestado == "RJ") {echo "selected";}?>>RJ</option>
                <option value = "RN" <? if($sgestado == "RN") {echo "selected";}?>>RN</option>
                <option value = "RO" <? if($sgestado == "RO") {echo "selected";}?>>RO</option>
                <option value = "RR" <? if($sgestado == "RR") {echo "selected";}?>>RR</option>
                <option value = "RS" <? if($sgestado == "RS") {echo "selected";}?>>RS</option>
                <option value = "SC" <? if($sgestado == "SC") {echo "selected";}?>>SC</option>
                <option value = "SE" <? if($sgestado == "SE") {echo "selected";}?>>SE</option>
                <option value = "SP" <? if($sgestado == "SP") {echo "selected";}?>>SP</option>
                <option value = "TO" <? if($sgestado == "TO") {echo "selected";}?>>TO</option>
          </select> <span class="style1">*</span>
A questão é que no cadastro de bairro digito o bairro e seleciono a cidade. E o select de cidade é feito através de sql. Como fazer então para trazer a cidade do select relacionada àquele bairro quando o usuário clicar em alterar?
<?PHP
               mysql_query("SET NAMES UTF8");
             $sql = "SELECT * FROM TBCIDADE ORDER BY NMCIDADE";
             $resultado = mysql_query($sql) or die ("Não foi possível executar a consulta.");
             while ($registro = mysql_fetch_array($resultado))
             {
                $valor2 = $registro["cdcidade"];
                if ($cdcidade == $valor2)
                  $selecionado2 = "selected";
                else
                  $selecionado2 = "";
                print "<option value = \"$valor2\">$registro[nmcidade]</option>";
             }
             mysql_free_result($resultado);
          ?>
                
            </select> <span class="style1">*</span>

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde, Viper!

Bem, sobre seu primeiro código, você poderia deixá-lo mais compacto criando um array com os nomes dos estados e depois apenas imprimi-los, assim seu código fica mais limpo e bem menor. Ex:

<?php
    $arrEstados = Array("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA",
                    "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"
    );
?>
...
<select name="sgestado">
    <option value="">Selecione</option>
    <?php
        foreach($arrEstados as $estado){
            $selected = ($estado==$sgestado)?"selected":"";
            echo("<option value='$estado' $selected>$estado</option>");
        }
    ?>
</select>

Sobre sua pergunta, para carregar os dados do banco para um combobox de acordo com a seleção de outro campo, você vai precisar utilizar AJAX. Dê uma olhada neste site aqui, onde tem um exemplo bem parecido:

http://onnclick.net/blog/?p=196

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde, Viper!

Bem, sobre seu primeiro código, você poderia deixá-lo mais compacto criando um array com os nomes dos estados e depois apenas imprimi-los, assim seu código fica mais limpo e bem menor. Ex:

<?php
    $arrEstados = Array("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA",
                    "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"
    );
?>
...
<select name="sgestado">
    <option value="">Selecione</option>
    <?php
        foreach($arrEstados as $estado){
            $selected = ($estado==$sgestado)?"selected":"";
            echo("<option value='$estado' $selected>$estado</option>");
        }
    ?>
</select>
Sobre sua pergunta, para carregar os dados do banco para um combobox de acordo com a seleção de outro campo, você vai precisar utilizar AJAX. Dê uma olhada neste site aqui, onde tem um exemplo bem parecido: http://onnclick.net/blog/?p=196
Boa tarde Stoma. Vou implementar o código do array, realmente bem melhor. Obrigado. Sobre o código carregar um combobox a partir de outro eu já tenho funcionando. Por exemplo: ao selecionar uma cidade o combobox seguinte carrega apenas os bairros relacionados aquela cidade. E ao selecionar um bairro, o combobox seguinte carrega apenas as ruas relacionadas àquele bairro. Mas o que preciso é fazer o form trazer todos os campos de um cliente por exemplo quando o usuário clicar em alterar. Ou seja, ele não vai clicar em um combobox para trazer outro. Consigo fazer com os campos text por exemplo:
<td width="62%" align="left" bgcolor="#EEEEEE"><input name="motivo" type="text" id="motivo" size="40" maxlength="40" value="<? echo $motivo?>"/>

Link para o comentário
Compartilhar em outros sites

  • 0

Ah tá hehe

Uma forma que eu pensei em fazer foi assim:

- crie (se você ainda não tiver) uma função que faça a requisição ajax dos bairro de acordo com a cidade selecionada no campo <select>

- na página Alterar, adicione uma função no evento onChange do campo select. Ex: <select onChange="alert('a');">...</select>;

- quando você fizer a consulta e estiver carregando a tela para alterar os dados, carregue normalmente o campo cidades (sem selecionar nenhuma cidade);

- No final da página, antes de fechar a tag body, você seleciona a cidade (que deve estar em uma variável do php, então é só passar para o javascript, [faça isso por javascript]), e isso irá chamar a função que você colocou no onChange (a função que vai fazer a requisição ajax dos bairros e selecionar um bairro);

Não sei se fui muito claro ( :huh: ), mas se quiser posso fazer um exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0
Ah tá hehe

Uma forma que eu pensei em fazer foi assim:

- crie (se você ainda não tiver) uma função que faça a requisição ajax dos bairro de acordo com a cidade selecionada no campo <select>

- na página Alterar, adicione uma função no evento onChange do campo select. Ex: <select onChange="alert('a');">...</select>;

- quando você fizer a consulta e estiver carregando a tela para alterar os dados, carregue normalmente o campo cidades (sem selecionar nenhuma cidade);

- No final da página, antes de fechar a tag body, você seleciona a cidade (que deve estar em uma variável do php, então é só passar para o javascript, [faça isso por javascript]), e isso irá chamar a função que você colocou no onChange (a função que vai fazer a requisição ajax dos bairros e selecionar um bairro);

Não sei se fui muito claro ( :huh: ), mas se quiser posso fazer um exemplo.

Olha eu tenho o seguinte código javascript para cidade/bairro/rua:

&lt;script language="javascript">

$(document).ready(function()
{
    $("select[name=cidade]").change(function()
    {
        $("select[name=bairro]").html('<option value = "0">Carregando...</option>');
        $.post("bairros.php",
        {
            cidade:$(this).val()
        },
        function(valor)
        {
          //alert(valor);
           $("select[name=bairro]").html(valor);
        });
    });

$("select[name=bairro]").change(function()
{
   $("select[name=rua]").html('<option value = "0">Carregando...</option>');
   $.post("ruas.php",
   {
       bairro:$(this).val()
   },
   function(valor)
   {
     //alert(valor);
     $("select[name=rua]").html(valor);
   });
});   
});

</script

Eu entendi o seu raciocínio mas a implementação do código é complicada para mim porque tenho pouco conhecimento de php.

Se puder me mostrar um exemplo eu agradeço.

Lembrando que o form de cadastro de cliente aparece em branco, eu clico em alterar, aparece uma lista dos clientes onde posso selecionar o cliente ou pesquisar por ele. Ao selecionar o cliente o form de cadastro de cliente deve trazer os campos preenchidos com os dados do mesmo para que o usuário possa alterar.

EX: Nome do cliente, cnpj, cidade, estado, bairro, rua. Como disse antes, o nome do cliente e o cnpj consigo capturar pois é text, mas minha dificuldade é no caso dos select.

Link para o comentário
Compartilhar em outros sites

  • 0

Então... tentei fazer aqui rapidão (porque já estou indo embora do serviço), e você vai precisar adaptar o código.

Tenta aí, a noite eu dou uma olhada aqui para ver se você conseguiu.

<?php

    $arrEstados = Array("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA",
                    "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"
    );

    /*
     * Os bairros você pega do banco ao invés do array
     */
    $arrCidades = Array("São Paulo", "Campinas", "Limeira", "Piracicaba", "Araras", "Cordeirópolis",
                    "Indaiatuba", "Engenheiro Coelho"
    );
    
    /* 
     * Variáveis declaradas para 'simular' informações que vieram do banco.
     */
    $sqlNome = "Viper33";
    $sqlEstado = "SP";
    $sqlCidade = "Campinas";
    $sqlIdade = 90;

?>

<html>
    <head>
        <title>Teste</title>
    </head>
    <body>
        <!-- Criando formulário -->
        <form id="formulario" action="teste.php" method="post">
            <!--
                O botão alterar simula o botão alterar da página principal
                que redirecionará para a página de alteração
            -->
            <input type="submit" value="Alterar"/><br></br>
            Nome: <input type="text" id="nome" name="nome"/><br/>
            Idade: <input type="text" id="idade" name="idade"/><br/>
            Estado:
                <select id="estado" name="estado">
                    <option value="" selected>-- Selecione --</option>
                    <?php
                        foreach($arrEstados as $estado){
                            echo("<option value='$estado'>$estado</option>");
                        }
                    ?>
                </select><br/>
            Cidade:
                <select id="cidade" name="cidade">
                    <option value="" selected>-- Selecione um estado --</option>
                </select><br></br>
            <input type="submit" value="Enviar"/>
        </form>

        <script language="Javascript">
            /* Passa o array de cidades do php para o javascript
             * Aqui voce deve passar os bairros que irao aparecer no select para uma variavel em javascript
              * Ex:
             * var bairro;
             * bairro = '<\?php echo(\$sqlBairro);?>';
             */
            arrCidades = '<?php echo(implode($arrCidades, ","));?>'.split(",");


            /*
             * Carrega os dados por javascript de acordo com o que retornou do banco
             */
            document.getElementById("nome").value = '<?php echo($sqlNome); ?>';
            document.getElementById("idade").value = '<?php echo($sqlIdade); ?>';
            document.getElementById("estado").value = '<?php echo($sqlEstado); ?>';

            /*
             * Carrega as 'cidades' do estado de 'São Paulo'
             * (aqui você já deve ter o bairro selecionado dentro de uma variável do javascript)
             */
            window.onLoad = carregarCidades();

            function carregarCidades(){
                campoCidades = document.getElementById("cidade");
                x=0;
                while(x<arrCidades.length){
                    campoCidades.options[x+1] = new Option(arrCidades[x], arrCidades[x]);
                    x++;
                }
                document.getElementById("cidade").value = '<?php echo($sqlCidade); ?>';
            }
        </script>
    </body>
</html>

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0
Então... tentei fazer aqui rapidão (porque já estou indo embora do serviço), e você vai precisar adaptar o código.

Tenta aí, a noite eu dou uma olhada aqui para ver se você conseguiu.

<?php

    $arrEstados = Array("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA",
                    "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"
    );

    /*
     * Os bairros você pega do banco ao invés do array
     */
    $arrCidades = Array("São Paulo", "Campinas", "Limeira", "Piracicaba", "Araras", "Cordeirópolis",
                    "Indaiatuba", "Engenheiro Coelho"
    );
    
    /* 
     * Variáveis declaradas para 'simular' informações que vieram do banco.
     */
    $sqlNome = "Viper33";
    $sqlEstado = "SP";
    $sqlCidade = "Campinas";
    $sqlIdade = 90;

?>

<html>
    <head>
        <title>Teste</title>
    </head>
    <body>
        <!-- Criando formulário -->
        <form id="formulario" action="teste.php" method="post">
            <!--
                O botão alterar simula o botão alterar da página principal
                que redirecionará para a página de alteração
            -->
            <input type="submit" value="Alterar"/><br></br>
            Nome: <input type="text" id="nome" name="nome"/><br/>
            Idade: <input type="text" id="idade" name="idade"/><br/>
            Estado:
                <select id="estado" name="estado">
                    <option value="" selected>-- Selecione --</option>
                    <?php
                        foreach($arrEstados as $estado){
                            echo("<option value='$estado'>$estado</option>");
                        }
                    ?>
                </select><br/>
            Cidade:
                <select id="cidade" name="cidade">
                    <option value="" selected>-- Selecione um estado --</option>
                </select><br></br>
            <input type="submit" value="Enviar"/>
        </form>

        &lt;script language="Javascript">
            /* Passa o array de cidades do php para o javascript
             * Aqui voce deve passar os bairros que irao aparecer no select para uma variavel em javascript
              * Ex:
             * var bairro;
             * bairro = '<\?php echo(\$sqlBairro);?>';
             */
            arrCidades = '<?php echo(implode($arrCidades, ","));?>'.split(",");


            /*
             * Carrega os dados por javascript de acordo com o que retornou do banco
             */
            document.getElementById("nome").value = '<?php echo($sqlNome); ?>';
            document.getElementById("idade").value = '<?php echo($sqlIdade); ?>';
            document.getElementById("estado").value = '<?php echo($sqlEstado); ?>';

            /*
             * Carrega as 'cidades' do estado de 'São Paulo'
             * (aqui você já deve ter o bairro selecionado dentro de uma variável do javascript)
             */
            window.onLoad = carregarCidades();

            function carregarCidades(){
                campoCidades = document.getElementById("cidade");
                x=0;
                while(x<arrCidades.length){
                    campoCidades.options[x+1] = new Option(arrCidades[x], arrCidades[x]);
                    x++;
                }
                document.getElementById("cidade").value = '<?php echo($sqlCidade); ?>';
            }
        </script>
    </body>
</html>

Stoma, vou dar uma estudada no código aqui e ver se consigo implementar. Obrigado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...