![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Witam, szukam optymalnego rozwiązania dla skryptu pogody dla wszystkich miast powiatowych w Polsce.
Zrobiłem dla 1 województwa kilkanaście plików php o strukturze pogoda-wroclaw.php , pogoda-walbrzych.php .... w pliku .htaccess zamieniam to na html
W efekcie na serwerze powstaje mi ok 20 miast x 16 województw do tego plik htaccess rozrasta się w nieskończoność. Myśle nad wykorzystaniem CASE gdzie w każdym warunku będzie nowe miasto. Czy to optymalne rozwiązanie ? Czy kilkaset warunków case nie będzie zbytnio obciążało serwera -czy lepszym rozwiązaniem będzie stworzenie 16 plików /województw/ a w nich około 20 warunków case ? Proszę o naprowadzenie mnie na dobry tok myślenia. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
kompletnie bez sensu, przecież właśnie o to chodzi, że dzięki php można to obsługiwać jednym plikiem w htaccess robisz sobie np. taką regułę:
czyli linki będą wyglądały tak: pogoda/2/walbrzych.html gdzie 2 to będzie id, na podstawie, którego pobierzesz z bazy odpowiednie dane i wyświetlisz żadne case, żadne setki regułek, pobierasz id z url, wstawiasz do zapytania, pobierasz z bazy pogodę i wyświetlasz |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Ja nie mam w bazie danych podziału na miasta, jedynie na województwa, w których są opisy i informacje dotyczące różnych miast. Dlatego tworzę oddzielne pliki php gdzie wyciągam z bazy danych informacje
oraz z drugiej tabeli
do tego wklejam zewnętrzny kod pogody dla danego miasta. Mam w bazie danych informacje niusy o pogodzie w różnych miastach i chcę to rozbić na poszczególne miastach. Czyli dla adresu domena.pl/pogoda-wroclaw.html wyświetlić te niusy i na głównym miejscu prognozę pogody, którą już mam wygenerowaną dla danego miasta od zewnętrznego usługodawcy. Z modRewrite sobie poradzę . Chodzi mi o to jak optymalnie wygenerować w jednym pliku dla każdego miasta nowy adres np skrypt.php?pogoda=miasto które za pomocą modrewrite zamienie na pogoda-miasto.html |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no pobierasz miasto z url, wstawiasz do zapytania i wyświetlasz wynik...co tu jest nie jasne?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Po pierwsze adres user_pogoda.php?id=$1&city=$2 ktos głupotę podstawi np user_pogoda.php?id=$1&blabla=$2 - w zmienna city wstawi "blabla" strona docelowa wyswietli pogoda dla miasta BLABLA ?
Po drugie w języku polski jest odmiana rzeczoniwków: -Wrocław -Wrocławia -Wrocławiu -Wroclaw /bez polskich znaków/ jak to rozwiązać za pomocą twego rozwiązania? W przypadku rozważanego przeze mnie CASE, w każdym warunku rozważam deklinację:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat Po pierwsze adres user_pogoda.php?id=$1&city=$2 ktos głupotę podstawi np user_pogoda.php?id=$1&blabla=$2 - w zmienna city wstawi "blabla" strona docelowa wyswietli pogoda dla miasta BLABLA ? No i co z tego, że podstawi? przecież jak miasto nie zostanie odnalezione w bazie to wyświetlasz jakiś komunikat, że miasto nie znalezione i tyle, kompletnie nie rozumiem Twojego podejścia, najpierw powinieneś zacząć od odpowiedniego zaprojektowania bazy danych każdy region czy tam miasto powinien mieć swoje ID i do niego przypisane dane odnośnie pogody i np wyświetlasz listę miast i po kliknięciu w jakieś wyświetlana jest pogoda, plus możesz zrobić wyszukiwarkę i wtedy przy pomocy mysql LIKE wyszukujesz id dla wpisanego miasta i pobierasz pogodę przypisaną do ID, uwzględnienie różnych form też nie stanowi problemu ponieważ możesz stworzyć dodatkową kolumnę w tabeli gdzie będzie trzymał te formy i po nich wyszukiwał np. tabela miasta id | city | city_keys 1 | Wrocław | Wrocław, wroclaw, wroclawia tabela pogoda id | city_id | temp | itp 1 | 1 | 14.5 i wyszukiwać będzie po kolumnie city_keys |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
"najpierw powinieneś zacząć od odpowiedniego zaprojektowania bazy danych"
Owszem zgadzam się w 100% ale strona i jej baza SQL już są /wszelkie przeróbki są obecnie niewskazane/ dlatego szukam optymalnego rozwiązania dla mego przypadku |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no to może opisz ten przypadek? Zapamiętaj jedną rzecz: zawsze opisuj problem a nie to co Tobie się wydaje, że jest rozwiązaniem, napisz jaką masz strukturę bazy danych i co już masz i co chcesz osiągnąć, bo jakakolwiek by ta baza nie była to pomysł z kilkudziesięcioma case'ami i plikami jest bez sensu
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
W bazie danych mam informacje jakies niusy opisy , które w swojej treści zawierają dane miasta.
oraz z drugiej tabeli
tak powstają dane do danego miasta + zewnętrzny include dla danego miasta. Każdy plik miasta musi generować title i descripte dla danego miasta. DO TEJ PORY: zrobiłem dla każdego miasta oddzielny plik i w pliku w pliku .htaccess zamiana kazdseg miasta z php na html SZUKAM prostszego rozwiązania - by nie tworzyć kilkuset plików php oraz reguł w w pliku .htaccess Może stworzyć nowy katalog w nim dane miasta, np pogoda/wroclaw.php ===> jak tu Mod rewrite zrobic aby otrzymac pogoda-wroclaw.html ? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no ok to robisz sobie linki:
pogoda-wroclaw.html pogoda-krakow.html itd. ale wszystkie kierowane będą do jednego pliku php w htaccess dajesz np.: RewriteRule ^pogoda-([^;]*).html pogoda.php?city=$1 [L] a w php robisz:
i wyświetlasz pogodę |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Tylko, że Twój sposób cały czas nie rozwiązuje problemu z odmianą nazwy miast
-Wrocław -Wrocławia -Wrocławiu -Wroclaw /bez polskich znaków/ Stosując Twój sposób będę miał Pogoda Wroclaw zamiast Pogoda we Wrocławiu Czy użycie kilkuset CASE jest dopuszczalne ? Plik php będzie bardzo ciężki dla serwera :-/ |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Rzecz której Ci potrzeba to Stemming. Czyli zamiany formy odmiany słowa do formy podstawowej. Czyli u Ciebie zamiana słowa "Wrocławiu" na "Wrocław".
Są 2 odmiany stemmerów. Jeden z nich to słownikowy (czyli po prostu "mapa" np "Wrocławia" zamień na "Wrocław") i raczej tym powinieneś się zainteresować (a właściwie napisać). Co do procesu jak miałoby to działać to 1) Kod RewriteRule ^pogoda-([^;]*).html pogoda.php?city=$1 [L] Jest ok ze względu na uniwersalność. 2) Bazę miast utwórz jako oddzielną tabelę (miasta - id_miasto, nazwa_miasta) 3) Bazę słownikową odmian jak oddzieną tabelę (odmiana_miast - slowo, id_miasta) 4) Tutaj twoja tabela pogody (pogoda) 5) Przy dodawaniu nowego opisu pogody przepuszczasz nazwę miasta przez proces wyszukujący powiązania odmiany w tabeli "odmiana_miasto" 6) Jeżeli nie znajdzie wyniku w tabeli "odmiana_miasto" szukasz wyniku po tabeli "miasta". 7) Jeżeli 5 i 6 nie zwróci wyniku to sorry jest błąd 8) Jeżeli 5 bądź 6 zwróci wynik to masz id_miasta które wstawisz do tabeli "pogoda". Dzięki temu wiesz po jakim id_miasta szukać. -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 145 Pomógł: 1 Dołączył: 12.07.2006 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki wookieb, Twój tok myślenia jest podobny do Tehaha. Widzę, że muszę stworzyć nową tabelę nie powiązaną z żadną inna tablą typu |informacje| czy |opisy|
Struktura: id_miasta | id_wojewodztwa | miasto | miasto_pl | odmiana| gdzie id miasta to klucz podstawowy autoinkrement, id_województwa by posegregować miasta na obszary Polski, MIASTO to nazwa miasta dla pogoda.php?city=$1 ; MIASTO_PL to nazwa miasta z polskimi znakami WrocŁaw, ODMIANA to odmiana do wykorzystania we Wrocławiu - dzięki temu nie będzie potrzebne użycie Stemming np 1 | 1 | wroclaw | Wrocław | we Wrocławiu | 2 | 8 | warszawa | Warszawa | w Warszawie | Wystarczy że uzupełnię żmudnie tabelę w kilkaset miast i chyba to będzie najlepsze rozwiązanie? Kolejno będę otrzymywał miasta pogoda.php?city=wroclaw które zamienię na pogoda-wroclaw.html :-) Co o tym myślicie Dziękuję za pomoc z tą dodatkową tabelą miasta. Wszystko działa OK :-) |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Sądże, że i tak będzie potrzebne ale skoro Ci to odpowiada to OK.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.05.2025 - 04:56 |