![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 10.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Od kilku dni bezskutecznie próbuje stworzyć skrypt newsów ze wsparciem wielojęzyczności. Powiedzmy, że język użytkownika to "pl", a język domyślny strony to "en". Po wejściu na stronę użytkownik powinien zobaczyć newsy w jego wybranym języku, jeśli w bazie nie istnieje news w tym języku, to zapytanie powinno zwracać newsa w domyślnej wersji językowej (en). Wynik jest otrzymywany przez pętle i wyświetlamy wszystkie newsy z bazy. Każdy news posiada inne `id`, ten sam news z dwiema wersjami językowymi posiada ten sam `number`. Troszkę to zagmatwane, ale inaczej nie wyobrażam sobie tego rozwiązania. ![]() Próbowałem z "IF", próbowałem z "CASE", ale nic z tego nie wyszło.. Tabela z newsami wygląda tak: ![]()
Kod PHP, który pobiera newsy z obydwóch wersji językowych wygląda tak:
Ten post edytował Endzio 14.07.2008, 19:13:12 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 139 Pomógł: 11 Dołączył: 31.01.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował Pride 14.07.2008, 21:48:27 -------------------- Kto pyta - nie błądzi, kto szuka - znajduje.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
@Pride
A o bbcode nie słyszał? -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 139 Pomógł: 11 Dołączył: 31.01.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
słyszał słyszał ale zamulił bo poprawiał kod w edytorze (dodanie tabów) i zamulił dodać [ php ]
![]() Posty w temacie Endzio IF + WHERE Dzisiaj, 20:05 Pride Kod PHP1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1... 31 minut temu batman @Pride A o bbcode nie słyszał? 23 minut temu O.O -------------------- Kto pyta - nie błądzi, kto szuka - znajduje.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 10.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Strona ma korzystać z nieograniczonej liczby języków, nie pobieranych z sesji, ale przydzielanych od razu (przez USER_AGENT) z możliwością późniejszej zmiany.
A efekt, który chcę (a nie potrafię) wykorzystać ma być zabezpieczeniem w przypadku braku newsa w języku danego użytkownika, wtedy lepiej, żeby się wyświetlił w domyślnym języku niż wcale. Konieczne, a za razem jedynym rozwiązaniem jest przerzedzenie tego w zapytaniu MySQL, no ewentualnie z kodem PHP, który wyznacza, kolumny `number` pobierane z bazy, no właśnie tylko jak? Ten post edytował Endzio 14.07.2008, 23:22:28 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Nie trzeba IF-a:
Zakładam, że data newsów o tym samym numerze, ale w innych językach, jest identyczna. Jeśli tak nie jest to sortuj po numerze, albo wywal w ogóle sortowanie i użyj tego jako podzapytania:
-------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 10.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak, daty dla tych samych newsów, ale w innych wersjach językowych miały mieć być identyczne.
Zawartość bazy: ![]() Która po zapytaniu:
Wyświetla:
Zauważyłem, że zapytanie wyświetla zawsze newsa w takim języku, w jakim był dodany do bazy jako pierwszy. Czy jest możliwość decydowania o tym w zapytaniu? Próbując zmieniać kolejność w zapytaniu "pl" oraz "en" wynik zapytania SQL się nie zmieniał. Ten post edytował Endzio 15.07.2008, 14:28:45 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Widzę, że MySQL najpierw pogrupował wyniki a później dopiero próbował je sortować. Więc bez podzapytania sie nie obejdzie:
-------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 10.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ehh, wyrzuciło bład po wykonaniu tego zapytania:
//E Mam MySQL w wersji 4.0.26 Ten post edytował Endzio 16.07.2008, 15:46:13 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Jaka wersja MySQL ?
-------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 10.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zainstalowałem MySQL 5.0.45, przetestowałem kilkukrotnie zapytanie z różnymi kombinacjami i działa świetnie.
Jestem Twoim dłużnikiem, jeśli będę mógł kiedyś jakoś pomóc to wal śmiało. Dzięki wielkie! Pozdrawiam ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:52 |