Help with Ajax Combo Box

Asked

Viewed 326 times

0

I used a video lesson from Youtube to create a Combo Box of States and Cities, but I followed the reasoning of the page ESTADOS.PHP and entered in the page CIDADES.PHP and created the page BAIRROS.PHP, but I was not successful, because when I insert the <select name="cidades" id="cidades"> on the page cities.php it does not list me the cities.

There’s a way friends can explain to me how to continue Combo bringing cities, so I can search the neighborhoods with the page BAIRROS.PHP.

Code of the STATES.PHP page and Table states below:

<?php include 'conexao.php';?>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery.js"></script>

<div style="float:left; width:auto; padding:0 1px">
    <select name="estados" id="estados">
        <option value="">Estados...</option>
            <?php
                $sql = $pdo->prepare("SELECT * FROM estados ORDER BY nome_estado ASC");
                $sql->execute();
                $fetchAll = $sql->fetchAll();
                foreach($fetchAll as $estados)
                {
                    echo '<option value="'.$estados['cod_estado'].'">'.$estados['nome_estado'].'</option>';
                }
            ?>
    </select>
</div>
<div style="float:left; width:auto; padding:0 1px">
    <select id="cidades" style="display:none"></select>
</div>

<script>
    $("#estados").on("change",function(){
        var cod_Estado = $("#estados").val();
        $.ajax({
            url: 'cidades.php',
            type: 'POST',
            data:{cod_estado:cod_Estado},
            beforeSend: function(){
                $("#cidades").css({'display':'block'});
                $("#cidades").html("Carregando...");
                },
                success: function(data)
                {
                    $("#cidades").css({'display':'block'});
                    $("#cidades").html(data);
                },
                error: function(data)
                {
                    $("#cidades").css({'display':'block'});
                    $("#cidades").html("Houve um erro ao carregar");
                }
            });
    });
</script>

inserir a descrição da imagem aqui

CITIES.PHP Page Code and Table Cities below:

<?php include 'conexao.php';?>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery.js"></script>

<div style="float:left; width:auto; padding:0 1px">
    <select name="cidades" id="cidades">
        <option value="">Cidades...</option>
            <?php
                $sql = $pdo->prepare("SELECT * FROM cidades WHERE cod_estado = '".$_POST['cod_estado']."'");
                $sql->execute();
                $fetchAll = $sql->fetchAll();
                foreach($fetchAll as $cidades)
                {
                    echo '<option value="'.$cidades['cod_cidade'].'">'.$cidades['nome_cidade'].'</option>';
                }
            ?>
    </select>
</div>
<div style="float:left; width:auto; padding:0 1px">
    <select id="bairros" style="display:none"></select>
</div>
<script>
    $("#cidades").on("change",function(){
        var cod_Cidade = $("#cidades").val();
        $.ajax({
            url: "bairros.php",
            type: "POST",
            data:{cod_cidade:cod_Cidade},
            beforeSend: function(){
                $("#bairros").css({"display":"block"});
                $("#bairros").html("Carregando...");
                },
                success: function(data)
                {
                    $("#bairros").css({"display":"block"});
                    $("#bairros").html(data);
                },
                error: function(data)
                {
                    $("#bairros").css({"display":"block"});
                    $("#bairros").html("Houve um erro ao carregar");
                }
            });
    });
</script>

inserir a descrição da imagem aqui

Code of the NEIGHBORHOODS page.PHP and Table below neighborhoods:

<?php
include 'conexao.php';
    $sql = $pdo->prepare("SELECT * FROM bairros WHERE cod_cidade = '".$_POST['cod_cidade']."'");
    $sql->execute();
    $fetchAll = $sql->fetchAll();
    foreach($fetchAll as $bairros)
    {
        echo '<option>'.$bairros['nome_bairro'].'</option>';
    }
?>

inserir a descrição da imagem aqui

  • Hello Leo Caracciolo, I can not understand why, but mine is identical to yours, and does not open the select of cities. But when I take the select from the option on the cities.php page it works, but in both cases it’s not bringing me the neighborhoods referring to the cities. In the state RJ exists in the city of Armação dos Búzios 2 neighborhoods and can not list when selected the cities of Búzios. You have an idea how to solve this. Test my example. (https://www.pbfjacarepagua.com.br/com%20select/estados.php) and (https://www.pbfjacarepagua.com.br/sem%20select/estados.php).

1 answer

1


Basically the files cidades.php and bairros.php are constituted only of the queries to the database, all the rest inside the file estados.php

The library js/jquery.js, both scripts and the divs where the selects inside the archive estados.php

You can use <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> instead of <script type="text/javascript" src="js/jquery.js"></script>

In the first script was added this line of code,

$("#bairros").css({"display":"none"});

see why in the comment inside the code

php states.

<?php include 'conexao.php';?>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery.js"></script>

<div style="float:left; width:auto; padding:0 1px">
    <select name="estados" id="estados">
        <option value="">Estados...</option>
            <?php
                $sql = $pdo->prepare("SELECT * FROM estados ORDER BY nome_estado ASC");
                $sql->execute();
                $fetchAll = $sql->fetchAll();
                foreach($fetchAll as $estados)
                {
                    echo '<option value="'.$estados['cod_estado'].'">'.$estados['nome_estado'].'</option>';
                }
            ?>
    </select>
</div>
<div style="float:left; width:auto; padding:0 1px">
    <select id="cidades" style="display:none"></select>
</div>

<script>
    $("#estados").on("change",function(){
        var cod_Estado = $("#estados").val();
        $.ajax({
            url: 'cidades.php',
            type: 'POST',
            data:{cod_estado:cod_Estado},
            beforeSend: function(){
                $("#cidades").css({'display':'block'});
                $("#cidades").html("Carregando...");

                //quando mudar de estado esconde select de bairros
                $("#bairros").css({"display":"none"});

                },
                success: function(data)
                {
                    $("#cidades").css({'display':'block'});
                    $("#cidades").html(data);
                },
                error: function(data)
                {
                    $("#cidades").css({'display':'block'});
                    $("#cidades").html("Houve um erro ao carregar");
                }
            });
    });
</script>


<div style="float:left; width:auto; padding:0 1px">
    <select id="bairros" style="display:none"></select>
</div>
<script>
    $("#cidades").on("change",function(){
        var cod_Cidade = $("#cidades").val();
        $.ajax({
            url: "bairros.php",
            type: "POST",
            data:{cod_cidade:cod_Cidade},
            beforeSend: function(){
                $("#bairros").css({"display":"block"});
                $("#bairros").html("Carregando...");
                },
                success: function(data)
                {
                    $("#bairros").css({"display":"block"});
                    $("#bairros").html(data);
                },
                error: function(data)
                {
                    $("#bairros").css({"display":"block"});
                    $("#bairros").html("Houve um erro ao carregar");
                }
            });
    });
</script>

php cities.

<?php
include 'conexao.php';
   $sql = $pdo->prepare("SELECT * FROM cidades WHERE cod_estado = '".$_POST['cod_estado']."'");
   $sql->execute();
   $fetchAll = $sql->fetchAll();
   echo '<option value="">Cidades...</option>';
   foreach($fetchAll as $cidades)
   {
     echo '<option value="'.$cidades['cod_cidade'].'">'.$cidades['nome_cidade'].'</option>';
   }
?>

php neighborhoods.

<?php
include 'conexao.php';
    $sql = $pdo->prepare("SELECT * FROM bairros WHERE cod_cidade = '".$_POST['cod_cidade']."'");
    $sql->execute();
    $fetchAll = $sql->fetchAll();
    echo '<option value="">Bairros...</option>';
    foreach($fetchAll as $bairros)
    {
        echo '<option value="'.$bairros['cod_bairro'].'">'.$bairros['nome_bairro'].'</option>';
    }
?>
  • Thanks Leo Caracciolo, I just had to change that line echo '<option>'.$bairros['nome_bairro'].'</option>'; for that <option value="'.$bairros['cod_bairro'].'">'.$bairros['nome_bairro'].'</option> to make it work perfect. Thank you very much for your attention to my problem, which was solved thanks to your tips and guidelines, THANK YOU even.

  • All right, I changed the answer too!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.