Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Lista miast w polsce
fredzio90
post 2.10.2007, 20:14:44
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


czy jest może w internecie jakaś baza miast w warszawie, ponieważ chcę zrobić coś takiego:
selecta z wszystkimi województwami, i jak wejde w dane województwo, pokaże sie select z listą wszyskich miast w wybranym województwie.... czy da rade coś takiego czy Atlas się przyda ? biggrin.gif

coś a'la zumi.pl jak wpisujesz województwo pokazuje się lista miast...

Ten post edytował fredzio90 2.10.2007, 20:17:09
Go to the top of the page
+Quote Post
nexis
post 2.10.2007, 20:43:07
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Może się przyda lista miast w Polsce!


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
fredzio90
post 2.10.2007, 21:57:38
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


czyli tylko skomponowanie pełnej lista mi zostaje questionmark.gif myślałem że istnieje jakaś taka baza już ;D ale cuż..

oki, a jak za pomocą javascriptu gdzy dam coś takiego:


  1. <select name="woj">
  2. <option value="1">Dolnośląskie</option>
  3. <option value="2">Kujawsko-Pomorskie</option>
  4. <option value="3">Lubelskie</option>
  5. <option value="4">Lubuskie</option>
  6. <option value="5">Łódzkie</option>
  7. <option value="6">Małopolskie</option>
  8. <option value="7">Mazowieckie</option>
  9. <option value="8">Opolskie</option>
  10. <option value="9">Podkarpackie</option>
  11. <option value="10">Podlaskie</option>
  12. <option value="11">Pomorskie</option>
  13. <option value="12">Śląskie</option>
  14. <option value="13">Świętokrzyskie</option>
  15. <option value="14">Warmińsko-Mazurskie</option>
  16. <option value="15">Wielkopolskie</option>
  17. <option value="16">Zachodniopomorskie</option>
  18. </select>


po wybraniu danego pokazywał się dany select z miastami wybranego województwa
Go to the top of the page
+Quote Post
Cienki1980
post 3.10.2007, 07:53:50
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Można to zrobić na trzy sposoby - trzy o których wiem i z których korzystałem:

1. Przeładowanie strony onChange w selecie z wojewodztwami i wygenerowanie nowego selecta
- minus : przeładowanie strony po każdej zmianie

2. Wygenerowanie w php odpowiedniego kodu JS, który zmieniałby automatycznie zawartość selecta z miastami w zależności od wybranej pozycji województw
- minus : przy dużej ilości rekordów ( możliwości wyboru ) kod JS będzie bardzo duży

3. Wykorzystanie AJAXu
- minusów : brak a przynajmniej ja nie znalazłem.


--------------------
404
Go to the top of the page
+Quote Post
fredzio90
post 3.10.2007, 15:30:14
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


a te ostatnie rozwiązanie, jakimiś darmowymi przykładami byś użyczył questionmark.gif

mam listę wszystkich miast ..... każde wpjewództwo jest w innym pliku o nazwie wartości danego województwa.. np 1.txt
i jak z danego pliku tekstowego zrobi selecta ( chyba jakieś foreach ) jak wygląda przykłądowo tak:


Kod
...
Głuchołazy
Gogolin
Gorzów Śląski
Grodków
Kędzierzyn-Koźle
Kietrz
Kluczbork
...


każda nazwa w nstępnym wierszu

Ten post edytował fredzio90 3.10.2007, 17:05:15
Go to the top of the page
+Quote Post
Cienki1980
post 3.10.2007, 20:25:19
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Oto kilka fragmentów kodu do zmiany zawartości selecta za pomoca AJAX'a.
Ja osobiście korzystam z biblioteki xajax która możesz znaleźć np. tutaj

Powklejam tutaj kawałki kodu z aplikacji wykorzystującej Smarty ... ale powinieneś załapać o co chodzi przerobię go schematycznie na Twoje potrzeby:

na początek kod html ( w moim przypadku .tpl ):
  1. {$initAjax}
  2. <tr>
  3. <td>wojewodztwo:</td>
  4. <td>
  5. <select name="id_woj" onChange="xajax_Miasta(this.options[this.selectedIndex].value);">
  6. <option value="">wybierz</option>
  7. {section name=idx loop=$woj}
  8. <option value="{$woj[idx].id}">{$woj[idx].nazwa}</option>
  9. {/section}
  10. </select>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td>miasta:</td>
  15. <td><div id="miasta">wybierz woj.</div></td>
  16. </tr>


teraz kod php
  1. <?php
  2. require_once("xajax.inc.php");
  3. $xajax = new xajax();
  4.  
  5. function Miasta($filtr)
  6. {
  7.  //otwierasz plik o nazwie $filtr.txt 
  8.  // albo jak tam bedziesz mial go nazwanego
  9.  // i odczytujesz do tablicy $lista
  10.  if(!empty($lista))
  11.  {
  12. $m_cont='<select name="miasto">';
  13. $m_cont.='<option value="">wybierz</option>';
  14. foreach($lista as $k=>$v)
  15. {
  16.  $m_cont.='<option value="'.$v[0].'">'.$v[0].'</option>';
  17. }
  18. $m_cont.='</select>';
  19.  } 
  20.  $objResponse = new xajaxResponse('ISO-8859-2');
  21.  $objResponse->addAssign("miasta","innerHTML", $m_cont);
  22.  return $objResponse->getXML();
  23.  
  24. }
  25.  
  26. $xajax->setCharEncoding('ISO-8859-2');
  27. $xajax->decodeUTF8InputOn();
  28. $xajax->registerFunction("Miasta");
  29. $xajax->processRequests();
  30.  
  31. $xajax->printJavascript(AJAXPATH);
  32. $initAjax = ob_get_contents();
  33.  
  34.  
  35.  $smarty->assign(initAjax, $initAjax);
  36. ?>


Tak to by wyglądało w skrócie ... więcej informacji wyciągniesz na pewno z dokumentacji i przykładów, które są na stronie podanej na początku posta.


--------------------
404
Go to the top of the page
+Quote Post
fredzio90
post 4.10.2007, 13:11:39
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


za trudne ;D może prościej... chciałbym taką baze zrobić tylko niewiem jak to zacząć.... na początku miałem pomysł.. że np województwo Dolnośląskie ma nr 1, itd. z innymi wojewodztwami, i miasta do Dolnośląskiego miałby by taką wartość dodawaną do bazy:

1_nr_miasta

tylko jest problem, nazwe województwa sobie odczytam to jedynie 16 linijek, ale ciężej bedzie z miastami, odczytać nazwę miasta.. i jak właśnie taką baze miast dać..... żeby potem odczytać je nazwe.... dodawanie do bazy nazwy miasta myślałem ale byłyby problemy z kodowaniem....
Go to the top of the page
+Quote Post
Cienki1980
post 4.10.2007, 13:56:00
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

Ostrzeżenie: (0%)
-----


Trzymanie tego w bazie jest całkiem dobrym pomysłem, jak dla mnie o wiele lepszym niż na plikach robienie tego.

Potrzebujesz dwie tabele:
wojewodztwa:
id - auto_increment
nazwa - varchar

miasta:
id - auto_increment
id_woj - int
nazwa - varchar


Co do zmiany zawartości selectów to ajax jest najlepszym rozwiązaniem, a wykonanie tego jest proste jak budowa gwoździa.
Jeżeli znasz lepiej PHP wykorzystaj xajax ( czyli to co ja podałem ) jeżeli wolisz JS to np AdvAjax ( czy jakoś tak .. znajdziesz na forum od ajaxa )

Napisz czego nie rozumiesz w wykorzystaniu xajaxa a napiszę tłumaczenie łopatologiczne.


--------------------
404
Go to the top of the page
+Quote Post
fredzio90
post 5.10.2007, 14:13:48
Post #9





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


wygenerowałem sobie liste miast, jest ich koło 850..... ale właśnie problem mam z kodowaniem.. niechce zmieniać kodowania całej tabeli a zapytanie jest takie:
  1. CREATE TABLE `city` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT ,
  3. `id_woj` int(4) NOT NULL ,
  4. `nazwa` varchar(64) NOT NULL ,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE = MYISAM ;


i wpisy:

  1. INSERT INTO `city` VALUES('35','1', 'Lwówek Śląski ');


a do bazy daje coś takiego:

Lw?wek ?l?ski
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:37