![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Witam, piszę skrypt, który ma odpowiadać za zmianę języka witryny dla danego użytkownika serwisu (oparcie o adres IP dla gości) i mam pewien problem, gdyż mam do wyboru 3 języki (PL,EN,DE).
Chcę aby po kliknięciu w jedną z flag wysunęło się okienko w dolnym rogu witryny (pozycja fixed), gdzie pojawia się tekst o wyborze języka, informacja o ładowaniu języka itp. To zrobiłem i działa bez zarzutu ale problem tkwi w tym, że do każdego skryptu dodałem zapytanie SQL, które ma update'ować rekord danego użytkownika np. gdy jego aktualny język to "pl", a kliknie w flagę angielską to zapytanie ma z'update'ować rekord dla jego IP w komórce "lang" z "pl->en". Mój kod wygląda tak:
Wszystko działa ładnie, lecz nie ważne którą flagę kliknę, zawsze wywoływane jest ostatnie zapytanie mySQL, w tym przypadku dla języka PL. Dla przykładu: mój aktualny język to EN, klikam w DE, a skrypt i tak wywołuje zapytanie dla PL i zmienia mi język na PL a nie na DE. Próbowałem to robić na wiele sposobów, lecz jeszcze nie udało mi się znaleźć odpowiedniego, dlatego piszę na forum mając nadzieję, że ktoś z Was mi pomoże ![]() Za pomoc będę niezmiernie wdzięczny. Za każdą odpowiedź daję "POMÓGŁ" ! Serdecznie pozdrawiam. Kamil Dunaj. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Dobrze mistrzu
![]() A jesteś w stanie mi pomóc ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ogólnie zachęcanie POMOGŁ jest żałosne.
Co do tematu: 1) Tworzysz 3 razy zmienną sql to pewnie ci się za każdym razem nadpisuje 2) Tworzysz w kodzie html zmienną sql, którą potem na serwerze wykonujesz... ałć... bez problemu mogę wykonać dowolne zapytanie na Twojej bazie Do serwera powinieneś przekazywać tylko aktualnie kliknięty język. To wszystko. Zapytanie sql masz budować już po stronie serwera przed samym wykonaniem. 3) Bez sensu tworzysz x razy ten sam kod. Napisz jedną funkcję, która przyjmie parametry język i po sprawie. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Ogólnie zachęcanie POMOGŁ jest żałosne. Co do tematu: 1) Tworzysz 3 razy zmienną sql to pewnie ci się za każdym razem nadpisuje 2) Tworzysz w kodzie html zmienną sql, którą potem na serwerze wykonujesz... ałć... bez problemu mogę wykonać dowolne zapytanie na Twojej bazie Do serwera powinieneś przekazywać tylko aktualnie kliknięty język. To wszystko. Zapytanie sql masz budować już po stronie serwera przed samym wykonaniem. 3) Bez sensu tworzysz x razy ten sam kod. Napisz jedną funkcję, która przyjmie parametry język i po sprawie. Dzięki, a jesteś w stanie przedstawić swoją propozycję tego skryptu ? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 26 Dołączył: 23.01.2009 Skąd: eZ Systems Ostrzeżenie: (0%) ![]() ![]() |
Od siebie tylko dodam, że mieszanie kodu JS i PHP jest złą praktyką. Powinieneś mieć osobne pliki z obsługą JS i PHP.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Super, a potrafisz to zrobić tak jak należy i żeby działało tak jak to opisałem ?
Może napisze ktoś przynajmniej jak zrobić z tego jedną funkcję i jak zainicjować wartość ID dla kodu php w JS. Np: var sql = ['<?php mysql_query('UPDATE guests SET lang="TUTAJ WARTOŚĆ ID" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>']; Ten post edytował peja1990 22.09.2011, 14:17:58 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 14 Dołączył: 4.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nadal nie zrozumiałeś. Po stronie przeglądarki nie powinno być żadnych zapytań mysql, kodów PHP itp, bo jest to niebezpieczne dla Twojego skryptu jak i całego serwera. Przez JS masz przesłać tylko i wyłącznie zmienną która informuje jakąś flagę kliknął user. Nic więcej. Reszta ma odbywać się po stronie serwera, tam gdzie nie ma nikt inny dostępu oprócz admina. Dodatkowo powinieneś filtrować tę zmienną czy aby na pewno zawiera to co planowałeś by zawierała. U ciebie są to dwuliterowe oznaczenia języków, więc możesz stworzyć tablicę zawierającą wszystkie dostępne języki i sprawdzać, czy przesłana zmienna znajduje się w tej tablicy, jeśli tak, to wszystko jest ok.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście zrobiłbym to tak:
JQuery:
zmiana_flag.php:
Ten post edytował kpt_lucek 22.09.2011, 19:51:10 -------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 14 Dołączył: 4.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Po prywatnej korespondencji z peja1990 wiem, że tam wcale nie trzeba żadnego AJAXa. Po kliknięciu w flagę strona po kilku sek odświeżała się, więc zmianę języka można obsłużyć przez zwykłego GETa/POSTa. Nie wiem nawet czy kod, który przedstawiłem pomoże temu userowi, bo sprawdzając jego stronę już na starcie raziły błędy HTML m.in. cała sekcja head znajdowała się body i to nie tak, że <head>(...)</head> było w body, tylko head było puste, a to co miało tam być, było w body...
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Po prywatnej korespondencji z peja1990 wiem, że tam wcale nie trzeba żadnego AJAXa. Po kliknięciu w flagę strona po kilku sek odświeżała się, więc zmianę języka można obsłużyć przez zwykłego GETa/POSTa. Nie wiem nawet czy kod, który przedstawiłem pomoże temu userowi, bo sprawdzając jego stronę już na starcie raziły błędy HTML m.in. cała sekcja head znajdowała się body i to nie tak, że <head>(...)</head> było w body, tylko head było puste, a to co miało tam być, było w body... Ok, ale sposób przedstawiony przeze mnie zajmuje zdecydowanie mniej miejsca i komunikacja między MySQL odbywa się za pomocą odrębnego pliku php. -------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Ja osobiście zrobiłbym to tak: JQuery:
zmiana_flag.php:
Super mistrzu, lecz po kliknięciu w flagę teraz nic się nie dzieje, nie chodzi o animację bo to inna sprawa lecz, nie aktualizuje się rekord co jest tutaj najważniejsze. ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Poprawka:
<li lang="de" class="lang_de <?php if($GUEST['lang']=='de') {echo 'active';} ?>" title="flaga"></li> analogicznie reszta var a = $(this).attr("lang"); No i tu: $sql=mysql_query(...) or die(mysql_error()); wstawiłeś zapytanie? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Poprawka: <li lang="de" class="lang_de <?php if($GUEST['lang']=='de') {echo 'active';} ?>" title="flaga"></li> analogicznie reszta var a = $(this).attr("lang"); No i tu: $sql=mysql_query(...) or die(mysql_error()); wstawiłeś zapytanie? To już sobie poprawiłem lecz zamiast atrybutu lang dałem id, tylko nie to że nie podmienia na poste pole czy coś tylko w ogóle nie podmienia. A zapytanie oczywiście, że dałem ![]() Gdzie może być błąd ? ![]() Do tego w pliku PHP zmieniłem z $_POST[a] na $_POST['a'] i nic ![]() Ten post edytował peja1990 22.09.2011, 20:38:13 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Odpal firebuga dla FIrefox i zobacz, czy ci ten ajax idzie, co zawiera itp.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Naprawdę nie musisz mnie/nas informować o tym. Poprostu zainstaluj i powiedz co ci pokaże.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Naprawdę nie musisz mnie/nas informować o tym. Poprostu zainstaluj i powiedz co ci pokaże. Nic mi nie pokazuje, tak jakby to był zwykły obrazek z hoverem... Poprostu jedno wielkie NIC ;/ Zaraz Ci pokażę to Ty też sprawdzisz, ok ? Łapcie, sprawdzajcie: http://detronic.pl/test/pl/start.html Ten post edytował peja1990 22.09.2011, 20:54:35 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
TEn kod:
$('li').click(function(){ .... ..... ma być odpalony po załadowaniu strony, czyli $(document).ready( ......... ........... co już stosowałeś wcześniej. Myśl trochę. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 14 Dołączył: 4.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nadal jestem zdania, że jest to zbędne, ponieważ po kliknięciu w flagę po kilku sekundach strona wczytuje się ponownie, więc znacznie prościej jest to zrobić używając parametru w GETcie, do tego odpada dodatkowy JS, który w tym przypadku jest naprawdę zbędny...
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Cytat TEn kod: $('li').click(function(){ .... ..... ma być odpalony po załadowaniu strony, czyli $(document).ready( ......... ........... co już stosowałeś wcześniej. Myśl trochę. Masz rację... ![]() Teraz jest reakcja na click ale aktualizuje rekord na PUSTY ;/ Dodam, że tutaj zmieniłem na: url: "http://detronic.pl/test/zmiana_flag.php", z pewnych względów, wiecie może dlaczego nie aktualizuje poprawnie rekordu ? Podgląd: http://detronic.pl/test/pl/start.html Nadal jestem zdania, że jest to zbędne, ponieważ po kliknięciu w flagę po kilku sekundach strona wczytuje się ponownie, więc znacznie prościej jest to zrobić używając parametru w GETcie, do tego odpada dodatkowy JS, który w tym przypadku jest naprawdę zbędny... Kolego zobacz na to ".../pl/start.html" <- rozszerzenie nie pozwala na użycie metody GET, a nie zmienię na php ![]() DZIAŁA ![]() DZIĘKI ZA POMOC ![]() Ten post edytował peja1990 22.09.2011, 21:12:34 |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 14 Dołączył: 4.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kolego zobacz na to ".../pl/start.html" <- rozszerzenie nie pozwala na użycie metody GET, a nie zmienię na php ![]() Kolega nie zna nawet HTMLa, więc sorry, ale postarałbyś się chociaż przeczytać te linki, które Ci podesłałem... To, że coś ma takie rozszerzenie to nie znaczy, że nie da się już tego wykonać. Skoro jest to HTML, to zmianę języka można obsłużyć w zewnętrznym pliku PHP, który na koniec przekieruje Cię znów na start.html, a jak dla mnie, to ta Twoja strona nadal nie działa, wyskakuje okienko, ale przekierowania późniejszego zero, więc nie wiem jaki pożytek z tego co zrobiłeś... Chyba, że jakoś to przekształcisz... Tak czy siak spójrz na to z innej strony. Teraz masz HTML + JS + zewnętrzny plik PHP do zmiany języka, a tak miałbyś tylko HTML + PHP. Ale jak kto woli... Linki w postaci: Plik php: Musiałem w headerze dać hxxp zamiast http, bo forum dziwnie to konwertowało. Te dwa fragmenty zaktualizują Twój język w bazie + przekierują Cię na odpowiednie linki: Kod http://adres.do.strony/pl/start.html
http://adres.do.strony/en/start.html http://adres.do.strony/de/start.html Ten post edytował Kużdo 22.09.2011, 21:31:44 |
|
|
![]() ![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 4.12.2010 Ostrzeżenie: (10%) ![]() ![]() |
Kolega nie zna nawet HTMLa, więc sorry, ale postarałbyś się chociaż przeczytać te linki, które Ci podesłałem... To, że coś ma takie rozszerzenie to nie znaczy, że nie da się już tego wykonać. Skoro jest to HTML, to zmianę języka można obsłużyć w zewnętrznym pliku PHP, który na koniec przekieruje Cię znów na start.html, a jak dla mnie, to ta Twoja strona nadal nie działa, wyskakuje okienko, ale przekierowania późniejszego zero, więc nie wiem jaki pożytek z tego co zrobiłeś... Chyba, że jakoś to przekształcisz... Tak czy siak spójrz na to z innej strony. Teraz masz HTML + JS + zewnętrzny plik PHP do zmiany języka, a tak miałbyś tylko HTML + PHP. Ale jak kto woli... Linki w postaci: Plik php: Musiałem w headerze dać hxxp zamiast http, bo forum dziwnie to konwertowało. Te dwa fragmenty zaktualizują Twój język w bazie + przekierują Cię na odpowiednie linki: Kod http://adres.do.strony/pl/start.html http://adres.do.strony/en/start.html http://adres.do.strony/de/start.html Nie mogłeś tak wcześniej ? Czemu Ty się tak czepiłeś tego html'a ? Haha, gdzie Ty w moim kodzie widzisz coś pomieszanego w sekcji head i body ? Może zainwestuj w okularki ? ![]() Przyjrzyj się jeszcze raz kodowi strony ![]() I uwierz mi, że to co mam teraz z JS'em jest na 100% lepsze od zwykłego HTML+PHP. Przekierowania nie potrzebuję na .../en/... itd. bo po co ? ![]() ![]() WIELKIE DZIĘKI WSZYSTKIM ZA POMOC ![]() ![]() ![]() Za to dostaliście kilka "pomógł", za każdą pomocną wypowiedź <- to tak nawiasem dla moderatorów ![]() Serdecznie pozdrawiam i jeszcze raz dziękuję ![]() Szczególnie użytkownikowi "nospor" jak i użytkownikowi "Kużdo" za poświęcenie sporo swojego czasu ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:35 |