Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Jak dodać szybko listę miast do bazy danych
lukaszk
post 28.04.2012, 19:36:09
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


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
Go to the top of the page
+Quote Post
kpt_lucek
post 28.04.2012, 19:39:58
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Powinno wystarczyć sam kożystam i lepszej nie widziałem wink.gif


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
lukaszk
post 28.04.2012, 19:46:30
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


A jak to wykorzystać?
Go to the top of the page
+Quote Post
kpt_lucek
post 28.04.2012, 20:03:13
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


----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.

Ten post edytował kpt_lucek 28.04.2012, 19:58:03


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
lukaszk
post 28.04.2012, 20:05:40
Post #5





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


Pojawił mi się błąd Wrong ID
Go to the top of the page
+Quote Post
kpt_lucek
post 28.04.2012, 20:12:03
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


  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

Ten post edytował kpt_lucek 28.04.2012, 20:13:57


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
lukaszk
post 28.04.2012, 20:14:57
Post #7





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


Super poszło dzięki.
A jak zrobić aby każdy rekord wyświetlił się tak
('id','Miasto'),
Go to the top of the page
+Quote Post
kpt_lucek
post 28.04.2012, 20:16:41
Post #8





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


  1. echo "('".$i."', '".$a[$i]."'),<br/>\n";


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
lukaszk
post 28.04.2012, 20:21:53
Post #9





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


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'),
Go to the top of the page
+Quote Post
kpt_lucek
post 28.04.2012, 20:27:50
Post #10





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


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

Ten post edytował kpt_lucek 28.04.2012, 20:50:47


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
lukaszk
post 29.04.2012, 21:11:16
Post #11





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


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.
Go to the top of the page
+Quote Post
viking
post 30.04.2012, 06:15:56
Post #12





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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?


--------------------
Go to the top of the page
+Quote Post
lukaszk
post 30.04.2012, 10:31:17
Post #13





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


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?
Go to the top of the page
+Quote Post
viking
post 30.04.2012, 12:25:15
Post #14





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


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.


--------------------
Go to the top of the page
+Quote Post
lukaszk
post 30.04.2012, 19:11:50
Post #15





Grupa: Zarejestrowani
Postów: 159
Pomógł: 0
Dołączył: 21.12.2010

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


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>
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: 19.07.2025 - 04:07