Witam,
Od kilku dni próbuję napisać formularz do wyszukiwania adresów. Bazę adresową pobrałem z portalu http://www.stat.gov.pl/broker/access/index.jspa i przeniosłem ją do bazy sql.
konkretnie z tego linku:
http://www.stat.gov.pl/broker/access/prefi...stPreFiles.jspa
Z góry przepraszam za te tony kodu, ale będę wdzięczny za wszelkie podpowiedzi co zmienić aby skrypt działał sprawniej/szybciej. Na razie skrypty działają tak, że po uzupełnieniu województwa działa autozupełnianie pola z powiatem. Po wybraniu pola z powiatem działa autouzupełnianie pola z gminą itd. Zależy mi na tym, aby uzupełnianie działało nie tylko w skokach o 1 pole, ale także aby można było po wpisaniu województwa wyszukać od razu miejscowość.
Samo napisanie selectu aby pobrać wszystkie miejscowości w danych województwie nie sprawi mi większego problemu, ale nie wiem jak przy wpisywaniu miejscowości pobrać miejscowość + gminę + powiat, potem w autouzupełnianiu wyświetlić te dane np. w formacie: "miejscowość (gmina: blabla, powiat: blabla) i później przy wyborze takiego itemu z rozwijanej listy "rozrzucić" te dane na inputy z powiatem, gminą i miejscowością.

Fragment kodu strony:
Kod
    <table border="1">
        <tr><td>wojewodztwo: <input id="wojewodztwo" type="text" form="forma"/> </td>
            <td>Powiat: <input id="powiat" type="text" form="forma"/> </td>
            <td>Gmina: <input id="gmina" type="text" form="forma"/> </td>
            <td>Miejscowość: <input id="miejscowosc" type="text" form="forma"/>    </td>
            <td>Ulica: <input id="ulica" type="text" form="forma"/> </td>
            <td>Dzielnica: <input id="dzielnica" type="text" form="forma"/></td>
        </tr>    
    <table>


Skrypt JS do pobierania danych:
Kod
    jQuery(document).keyup(function(){
        $('#wojewodztwo').autocomplete({source:'formatka_szukajwojewodztwo.php'});
    });

    $(document).keyup(function() {
    $('#powiat').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: 'formatka_szukajpowiat.php',
                dataType: "json",
                data: {
                    wojewodztwo : $("#wojewodztwo").val(),
                    term : request.term
                },
                success: function(data) {
                    response(data);    
                }
            });
        },
        min_length: 1
        });
    }
    );
    
    $(document).keyup(function() {
        $('#gmina').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: 'formatka_szukajgmina.php',
                dataType: "json",
                data: {
                    wojewodztwo : $("#wojewodztwo").val(),
                    powiat : $("#powiat").val(),
                    term : request.term
                },
                success: function(data) {
                    response(data);    
                }
            });
        },
        min_length: 1
        });
    }
    );
    
    $(document).keyup(function() {
    $('#miejscowosc').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: 'formatka_szukajmiejscowosc.php',
                dataType: "json",
                data: {
                    wojewodztwo : $("#wojewodztwo").val(),
                    powiat : $("#powiat").val(),
                    gmina : $("#gmina").val(),
                    term : request.term
                },
                success: function(data) {
                    response(data);    
                }
            });
        },
        min_length: 1
        });
    }
    );
    $(document).keyup(function() {
    $('#ulica').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: 'formatka_szukajulica.php',
                dataType: "json",
                data: {
                    wojewodztwo : $("#wojewodztwo").val(),
                    powiat : $("#powiat").val(),
                    gmina : $("#gmina").val(),
                    miejscowosc : $("#miejscowosc").val(),
                    term : request.term
                },
                success: function(data) {
                    response(data);    
                }
            });
        },
        min_length: 1
        });
    }
    );
        $(document).keyup(function() {
    $('#dzielnica').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: 'formatka_szukajdzielnica.php',
                dataType: "json",
                data: {
                    wojewodztwo : $("#wojewodztwo").val(),
                    powiat : $("#powiat").val(),
                    gmina : $("#gmina").val(),
                    miejscowosc : $("#miejscowosc").val(),
                    term : request.term
                },
                success: function(data) {
                    response(data);    
                }
            });
        },
        min_length: 1
        });
    }
    );


Pobieranie województwa:
Kod
//połączenie z bazą

$rs = mysql_query('select NAZWA from terc where `NAZWA` LIKE "%'. mysql_real_escape_string($_REQUEST['term']) .'%" AND POW = \'\' order by NAZWA asc limit 0,30', $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['NAZWA'] ,
            'value' => $row['NAZWA']
        );
    }
}

echo json_encode($data);
flush();


Pobranie powiatu
Kod
//połączenie z bazą
$idwoj = $_GET['wojewodztwo'];


$zapytanie = "SELECT WOJ FROM `terc` WHERE NAZWA='$idwoj'";
$idzapytania = mysql_query($zapytanie);

while ($wiersz = mysql_fetch_row($idzapytania)) {
    $idwoj = $wiersz[0];
}

$rs = mysql_query('select NAZWA from terc where NAZWA like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" AND `WOJ` = \''. $idwoj .'\' AND (`NAZDOD` = \'powiat\' OR `NAZDOD` = \'miasto na prawach powiatu\') order by NAZWA asc limit 0,30', $dblink);
//$rs = mysql_query('SELECT NAZWA FROM `terc` WHERE NAZWA like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" LIMIT 30', $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['NAZWA'],
            'value' => $row['NAZWA']
        );
    }
} else {
    $data[] = array(
            'label' => 'brak wynikow',
            'value' => 'brak wynikow'
        );
}

echo json_encode($data);
flush();


Pobieranie gminy:
Kod
//połączenie z bazą
$idwoj = $_GET['wojewodztwo'];
$idpow = $_GET['powiat'];


$zapytanie = "SELECT WOJ FROM `terc` WHERE NAZWA='$idwoj'";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania)) {
    $idwoj = $wiersz[0];
}

$zapytanie = "SELECT POW FROM `terc` WHERE NAZWA='$idpow' AND WOJ='$idwoj'";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania)) {
    $idpow = $wiersz[0];
}


$rs = mysql_query('select NAZWA from terc where NAZWA like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" AND `WOJ` = \''. $idwoj .'\' AND `POW` = \''. $idpow .'\' AND `NAZDOD` like "%gmina%" order by NAZWA asc limit 0,30', $dblink);
//$rs = mysql_query('SELECT NAZWA FROM `terc` WHERE NAZWA like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" LIMIT 30', $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['NAZWA'],
            'value' => $row['NAZWA']
        );
    }
} else {
    $data[] = array(
            'label' => 'brak wynikow',
            'value' => 'brak wynikow'
        );
}

echo json_encode($data);
flush();

Pobieranie miejscowości:
Kod
//połączenie z bazą
$idwoj = $_GET['wojewodztwo'];
$idpow = $_GET['powiat'];
$idgmi = $_GET['gmina'];


$zapytanie = "SELECT WOJ FROM `terc` WHERE NAZWA='$idwoj'";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania)) {
    $idwoj = $wiersz[0];
}

$zapytanie = "SELECT POW FROM `terc` WHERE NAZWA='$idpow' AND WOJ='$idwoj'";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania)) {
    $idpow = $wiersz[0];
}

$zapytanie = "SELECT GMI FROM `terc` WHERE NAZWA='$idgmi' AND WOJ='$idwoj' AND POW='$idpow'";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania)) {
    $idgmi = $wiersz[0];
}  




$rs = mysql_query('select NAZWA from simc where NAZWA like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" AND `WOJ` = \''. $idwoj .'\' AND `POW` = \''. $idpow .'\' AND `GMI` = \''. $idgmi .'\' AND (`RM` = \'96\' OR `RM` = \'04\' OR `RM` = \'01\') order by NAZWA asc limit 0,30', $dblink);
//$rs = mysql_query('SELECT NAZWA FROM `terc` WHERE NAZWA like "%'. mysql_real_escape_string($_REQUEST['term']) .'%" LIMIT 30', $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['NAZWA'],
            'value' => $row['NAZWA']
        );
    }
} else {
    $data[] = array(
            'label' => 'brak wynikow',
            'value' => 'brak wynikow'
        );
}

echo json_encode($data);
flush();


struktura bazy danych wygląda tak samo jak w plikach xml dostępnych na stronie którą podałem wyżej.

Z góry dziękuję za wszelkie podpowiedzi/ pomysły.
Pozdrawiam