Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak dodać szybko listę miast do bazy danych
Forum PHP.pl > Forum > Przedszkole
lukaszk
Witam potrzebuję umieścić w swojej bazie danych listę mast z UK
Tu mam wszystko
http://pl.wikipedia.org/wiki/Lista_miast_w_Anglii
Jak zrobić to bezboleśnie ta
insert into 'countries' values('1','Afghanistan'),('2','Afghanistan2'),..

masakra jeśli dla każdego miasta mam przypisać cyfrę i wczytać je tak jak wyżej.
Czy jest inna metoda
kpt_lucek
Powinno wystarczyć sam kożystam i lepszej nie widziałem wink.gif
lukaszk
A jak to wykorzystać?
kpt_lucek
----EDIT-----
mały błąd się wkradł smile.gif

  1. <?
  2.  
  3. $html = file_get_html('http://pl.wikipedia.org/wiki/Lista_miast_w_Anglii');
  4. foreach($html->find("div[id=mw-content-text]") as $div)
  5. {
  6. $div = str_get_html($div);
  7. foreach($div->find("p a") as $p)
  8. {
  9. $p = str_get_html($p);
  10. foreach($p->find("a") as $miasto)
  11. {
  12. echo $miasto->plaintext."<br/>\n";
  13. }
  14. }
  15. }
  16. ?>


Nie sprawdzone, ale powinno działać

--------------------
Poprawiona wersja działa.
TUTAJ masz efekt.
lukaszk
Pojawił mi się błąd Wrong ID
kpt_lucek
  1. <?
  2. require("simple.php");
  3. $html = file_get_html('http://pl.wikipedia.org/wiki/Lista_miast_w_Anglii');
  4. $i = 1;
  5. $tab = array();
  6. foreach($html->find("div[id=mw-content-text]") as $div)
  7. {
  8. $div = str_get_html($div);
  9. foreach($div->find("p a") as $p)
  10. {
  11. $p = str_get_html($p);
  12. foreach($p->find("a") as $miasto)
  13. {
  14. $tab[$miasto->plaintext]++;
  15. }
  16. }
  17. foreach($div->find("p b a") as $p)
  18. {
  19. $p = str_get_html($p);
  20. foreach($p->find("a") as $miasto)
  21. {
  22. $tab[$miasto->plaintext]++;
  23. }
  24. }
  25. }
  26. $a = array_keys($tab);
  27. $i = 0;
  28. while($a[$i])
  29. {
  30. echo $i.". ".$a[$i]."<br/>\n";
  31. $i++;
  32. }


Przed chwilą sprawdziłem i u mnie na serwerze śmiga. Dodałem też dziwne (nawet jak na mnie) zabezpieczenie powtórek smile.gif

Za pewne gdzieś coś można przerobić aby było ładniej, działało szybciej etc etc... Tymczasem ja idę spać po 12h pracy w sobotę -.-


Powodzenia
lukaszk
Super poszło dzięki.
A jak zrobić aby każdy rekord wyświetlił się tak
('id','Miasto'),
kpt_lucek
  1. echo "('".$i."', '".$a[$i]."'),<br/>\n";
lukaszk
Pomieszałem te ID pojawiło mi się w innym miejscu ten kod jak najbardziej działa.
  1. $html = file_get_html('http://pl.wikipedia.org/wiki/Lista_miast_w_Anglii');
  2. foreach($html->find("div[id=mw-content-text]") as $div)
  3. {
  4. $div = str_get_html($div);
  5. foreach($div->find("p a") as $miasto)
  6. {
  7. echo $miasto->plaintext."<br/>\n";
  8. }
  9. }
  10. ?>


Potrzebuję strukturę do importu do bazy więc nie wiem jak zrobić aby ta metoda wyświetla dane w strukturze
('id','Miasto'),
kpt_lucek
1. Jeżeli numer (id) nie jest zależny od niczego, to możesz skożystać z $i, jeżeli jest to w tym miejscu:
  1. echo "('".$i."', '".$a[$i]."'), ";


zamiast '".$i."' wstaw swój id(zmienną) i zwiększaj go o +1 po każdym przejściu.

2. Spróbuj z kodem z TĄD
lukaszk
Super nawet nie wiedziałem że jest taka możliwość to daje ogromne możliwości.
Mam inny problem zrobiłem to samo z listą Polskich miast dodałem je do bazy i mam tak
Plik rejestracja - utf 8 bez BOM
plik autosuggest - utf 8 bez BOM
w bazie dane są zapisane bez krzaczków tzn Poznań tak jak widać ale wyświetlane są niestety krzaczki.
Nie wiem co jest nie tak ale tylko w tym aspekcie nie działa.
Dodam że inne dane w podglądzie bazy danych (inne tabele ale te same kodowania) są krzaczki w miejscach Polskich znaków ale za to są wyświetlane poprawnie na stronie.
viking
Zawsze określaj stronę kodową czyli dla połączenia dodatkowe zapytanie z SET NAMES xxx. Teraz najpewniej będziesz musiał jeszcze raz wszystko wstawić bo za bardzo namieszałeś. A po co ci jawnie definiowane id?
lukaszk
Nic to nie daje mam tą samą funkcję w wyszukiwarce użytkowników i tam wyświetla dane poprawnie kiedy w bazie są krzaczki.
Teraz dodałem listę miast bezpośrednio przez zapytanie i mam Polskie znaki w bazie ale w wyniku są krzaczki.
Jeśli dodam listę miast ze strony z moim kodowaniem np poprzez formularz będę miał krzaczki w bazie ale w wyniku będą Polskie znaki.
Czy zna ktoś sposób na dodanie 1000 rekordów jednocześnie poprzez formularz np textarea a każdy wiersz nowym rekordem?
viking
http://stackoverflow.com/questions/3702400...e-from-textarea

Dzieje się tak zapewne dlatego że część danych masz w jednym kodowaniu (i mogę się założyć że zapisałeś jako latin1), a część w innym. Na stronie pewnie ustawiasz jedno czyli UTF8.
lukaszk
Właśnie wszystko mam w UTF 8 sprawdziłem kilka razy pliki i bazę danych.



Proste rozwiązanie ale pomogło nie wiem dlaczego jak dodawałem dane do bazy poprzez mysql admin zawsze coś było nie tak.
Teraz utworzyłem formularz i dodałem dane do bazy z formularza i wynik jest taki jak oczekiwałem


  1. <?
  2. $miasto = $_POST['miasto'];
  3. $lines = explode("\n", $miasto);
  4. foreach( $lines as $index => $line )
  5. {
  6. $rekord=$lines[$index] = $line;
  7. for ($i = 0; $i <= $rekord; $i++)
  8. {
  9. $query = mysql_query("INSERT INTO miasta SET country='$rekord'");
  10. }
  11.  
  12.  
  13. }
  14. ?>
  15.  
  16.  
  17.  
  18.  
  19. <form method="post" action="">
  20.  
  21. <textarea style="wdth:90%" name="miasto"></textarea>
  22.  
  23. <input type="submit" name="Wyślij" value="">
  24. </form>


I mam problem niestety.
Dane dodały się prawidłowo i również w podpowiedziach wyświetlają się prawidłowo.
Natomiast problem pojawia się po kliknięciu w podpowiedź nie przenosi się do pola input.
(mam ten sam skrypt na nazwy UK gdzie nie ma Polskich znaków i działa bez problemu)

Nie wiem już jak mam to zrobić ale po kliknięciu jedynie szczecin się przenosi do input.
Poniżej skrypt proszę o pomoc
  1. <?php
  2. $db = new mysqli('DB_HOST', 'USERNAME' ,'PASSWORD', 'DATABASE_NAME');
  3.  
  4. if(!$db) {
  5.  
  6. echo 'Could not connect to the database.';
  7. } else {
  8.  
  9. if(isset($_POST['queryString'])) {
  10. $queryString = $db->real_escape_string($_POST['queryString']);
  11.  
  12. if(strlen($queryString) >0) {
  13.  
  14. $query = $db->query("SELECT country FROM countries WHERE country LIKE '$queryString%' LIMIT 10");
  15. if($query) {
  16. echo '<ul>';
  17. while ($result = $query ->fetch_object()) {
  18. echo '<li onClick="fill(\''.addslashes($result->country).'\');">'.$result->country.'</li>';
  19. }
  20. echo '</ul>';
  21.  
  22. } else {
  23. echo 'OOPS we had a problem :(';
  24. }
  25. } else {
  26. // do nothing
  27. }
  28. } else {
  29. echo 'There should be no direct access to this script!';
  30. }
  31. }
  32. ?>


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Papermashup.com | jQuery PHP Ajax Autosuggest</title>
  6.  
  7.  
  8. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
  9. <script>
  10. function suggest(inputString){
  11. if(inputString.length == 0) {
  12. $('#suggestions').fadeOut();
  13. } else {
  14. $('#country').addClass('load');
  15. $.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
  16. if(data.length >0) {
  17. $('#suggestions').fadeIn();
  18. $('#suggestionsList').html(data);
  19. $('#country').removeClass('load');
  20. }
  21. });
  22. }
  23. }
  24.  
  25. function fill(thisValue) {
  26. $('#country').val(thisValue);
  27. setTimeout("$('#suggestions').fadeOut();", 600);
  28. }
  29.  
  30. </script>
  31.  
  32. <style>
  33. #result {
  34. height:20px;
  35. font-size:16px;
  36. font-family:Arial, Helvetica, sans-serif;
  37. color:#333;
  38. padding:5px;
  39. margin-bottom:10px;
  40. background-color:#FFFF99;
  41. }
  42. #country{
  43. padding:3px;
  44. border:1px #CCC solid;
  45. font-size:17px;
  46. }
  47. .suggestionsBox {
  48. position: absolute;
  49. left: 0px;
  50. top:40px;
  51. margin: 26px 0px 0px 0px;
  52. width: 200px;
  53. padding:0px;
  54. background-color: #000;
  55. border-top: 3px solid #000;
  56. color: #fff;
  57. }
  58. .suggestionList {
  59. margin: 0px;
  60. padding: 0px;
  61. }
  62. .suggestionList ul li {
  63. list-style:none;
  64. margin: 0px;
  65. padding: 6px;
  66. border-bottom:1px dotted #666;
  67. cursor: pointer;
  68. }
  69. .suggestionList ul li:hover {
  70. background-color: #FC3;
  71. color:#000;
  72. }
  73. ul {
  74. font-family:Arial, Helvetica, sans-serif;
  75. font-size:11px;
  76. color:#FFF;
  77. padding:0;
  78. margin:0;
  79. }
  80.  
  81. .load{
  82. background-image:url(loader.gif);
  83. background-position:right;
  84. background-repeat:no-repeat;
  85. }
  86.  
  87. #suggest {
  88. position:relative;
  89. }
  90.  
  91. </style>
  92. </head>
  93.  
  94. <body>
  95.  
  96.  
  97.  
  98.  
  99. <form id="form" action="#">
  100. <div id="suggest">Start to type a country: <br />
  101. <input type="text" size="25" value="" id="country" onkeyup="suggest(this.value);" onblur="fill();" class="" />
  102.  
  103. <div class="suggestionsBox" id="suggestions" style="display: none;"> <img src="arrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
  104. <div class="suggestionList" id="suggestionsList"> &nbsp; </div>
  105. </div>
  106. </div>
  107. </form>
  108.  
  109.  
  110.  
  111. </body>
  112. </html>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.