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>
<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
});
}
);
$('#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();
$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();
$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();
$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();
$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