Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]+[JS] Zapytanie SQL w JS, Ciągłe wywoływanie ostatniego zapytania...
peja1990
post 22.09.2011, 12:57:37
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


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:
  1. <script type="text/javascript">
  2. // Język niemiecki
  3. $(document).ready(
  4. function() {
  5. $(".lang_de").click(
  6. function() {
  7. $(".popup").slideDown();
  8. setInterval(function() {
  9. $(".popup").slideUp();
  10. }, 6000);
  11. var sql = ['<?php mysql_query('UPDATE guests SET lang="de" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>'];
  12. var contents = ['<?php echo $LANG['popup']['lang']['load']; ?>', '<?php echo $LANG['popup']['lang']['change']['de']; ?>'];
  13. var current = 0;
  14. setInterval(function() {
  15. document.getElementById('load_content').innerHTML = contents[current++];
  16. document.getElementById('load_sql').innerHTML = sql;
  17. }, 2000);
  18. setInterval(function() {
  19. parent.location='<?php $PHP_SELF; ?>';
  20. }, 8000);
  21. });
  22. });
  23. // Język angielski
  24. $(document).ready(
  25. function() {
  26. $(".lang_en").click(
  27. function() {
  28. $(".popup").slideDown();
  29. setInterval(function() {
  30. $(".popup").slideUp();
  31. }, 6000);
  32. var sql = ['<?php mysql_query('UPDATE guests SET lang="en" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>'];
  33. var contents = ['<?php echo $LANG['popup']['lang']['load']; ?>', '<?php echo $LANG['popup']['lang']['change']['en']; ?>'];
  34. var current = 0;
  35. setInterval(function() {
  36. document.getElementById('load_content').innerHTML = contents[current++];
  37. document.getElementById('load_sql').innerHTML = sql;
  38. }, 2000);
  39. setInterval(function() {
  40. parent.location='<?php $PHP_SELF; ?>';
  41. }, 8000);
  42. });
  43. });
  44. // Język polski
  45. $(document).ready(
  46. function() {
  47. $(".lang_pl").click(
  48. function() {
  49. $(".popup").slideDown();
  50. setInterval(function() {
  51. $(".popup").slideUp();
  52. }, 6000);
  53. var sql = ['<?php mysql_query('UPDATE guests SET lang="pl" WHERE ip="'.$_SERVER['REMOTE_ADDR'].'"') or die (mysql_error()); ?>'];
  54. var contents = ['<?php echo $LANG['popup']['lang']['load']; ?>', '<?php echo $LANG['popup']['lang']['change']['pl']; ?>'];
  55. var current = 0;
  56. setInterval(function() {
  57. document.getElementById('load_content').innerHTML = contents[current++];
  58. document.getElementById('load_sql').innerHTML = sql;
  59. }, 2000);
  60. setInterval(function() {
  61. parent.location='<?php $PHP_SELF; ?>';
  62. }, 8000);
  63. });
  64. });
  65. </script>
  66. <div class="top">
  67. <span class="line"></span>
  68. <div class="center">
  69. <div class="box">
  70. <ul class="left">
  71. <li class="log_webmail"><?php echo $LANG['top']['log_webmail']; ?></li>
  72. <li class="log_system"><?php echo $LANG['top']['log_system']; ?></li>
  73. </ul>
  74. <ul class="right">
  75. <li class="lang_de <?php if($GUEST['lang']=='de') {echo 'active';} ?>"></li>
  76. <li class="lang_en <?php if($GUEST['lang']=='en') {echo 'active';} ?>"></li>
  77. <li class="lang_pl <?php if($GUEST['lang']=='pl') {echo 'active';} ?>"></li>
  78. <li><?php echo $LANG['top']['change_lang']; ?></li>
  79. </ul>
  80. </div>
  81. </div>
  82. </div>
  83.  
  84. <div class="popup"><div class="bg"><?php echo $LANG['popup']['lang']['select'].$br.'<div id="load_content"></div>'.'<div id="load_sql"></div>'; ?></div></div>


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

Za pomoc będę niezmiernie wdzięczny.
Za każdą odpowiedź daję "POMÓGŁ" !

Serdecznie pozdrawiam.
Kamil Dunaj.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 22)
phpion
post 22.09.2011, 13:04:57
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(peja1990 @ 22.09.2011, 13:57:37 ) *
Za każdą odpowiedź daję "POMÓGŁ" !

Uważaj lepiej z tym - łatwo możesz zarobić warna za takie praktyki. Oznaczenie "Pomógł" służy do oznaczania faktycznie pomocnych odpowiedzi, a nie każdych odpowiedzi.
Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 13:07:43
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Dobrze mistrzu wink.gif
A jesteś w stanie mi pomóc ?
Go to the top of the page
+Quote Post
nospor
post 22.09.2011, 13:08:28
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

Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 13:16:23
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 22.09.2011, 14:08:28 ) *
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 ?
Go to the top of the page
+Quote Post
sunpietro
post 22.09.2011, 13:33:48
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.


--------------------
Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 13:34:44
Post #7





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
Kużdo
post 22.09.2011, 15:52:28
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.
Go to the top of the page
+Quote Post
kpt_lucek
post 22.09.2011, 19:40:42
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:

  1. <ul class="right">
  2. <li class="lang_de <?php if($GUEST['lang']=='de') {echo 'active';} ?>" title="flaga"></li>
  3. <li class="lang_en <?php if($GUEST['lang']=='en') {echo 'active';} ?>" title="flaga"></li>
  4. <li class="lang_pl <?php if($GUEST['lang']=='pl') {echo 'active';} ?>" title="flaga"></li>
  5. <li><?php echo $LANG['top']['change_lang']; ?></li>
  6. </ul>


JQuery:
  1. $('li').click(function(){
  2. var a = $(this).attr("class");
  3. var b = $(this).attr("title");
  4. if(b=="flaga")
  5. {
  6. $.ajax({
  7. type: "POST",
  8. url: "zmiana_flag.php",
  9. data: "a=" + a,
  10. success: function(odpowiedz){
  11. alert(odpowiedz);
  12. },
  13. error: function(){
  14. alert("Błąd!");
  15. }
  16. });
  17. }
  18. });


zmiana_flag.php:
  1. <?
  2. require("dane_do_bazy_danych.php");
  3. //łączenie do mysql...
  4. $flaga = $_POST[a];
  5. $sql=mysql_query(...) or die(mysql_error());
  6.  
  7. if($sql){
  8. echo "ok";
  9. }
  10. // else nie potrzebny, w przypadku błędu zwróci go mysql_error()
  11. ?>


Ten post edytował kpt_lucek 22.09.2011, 19:51:10


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


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
Kużdo
post 22.09.2011, 19:52:42
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...
Go to the top of the page
+Quote Post
kpt_lucek
post 22.09.2011, 19:55:50
Post #11





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

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


Cytat(Kużdo @ 22.09.2011, 20:52:42 ) *
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
Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 20:25:13
Post #12





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(kpt_lucek @ 22.09.2011, 20:40:42 ) *
Ja osobiście zrobiłbym to tak:

  1. <ul class="right">
  2. <li class="lang_de <?php if($GUEST['lang']=='de') {echo 'active';} ?>" title="flaga"></li>
  3. <li class="lang_en <?php if($GUEST['lang']=='en') {echo 'active';} ?>" title="flaga"></li>
  4. <li class="lang_pl <?php if($GUEST['lang']=='pl') {echo 'active';} ?>" title="flaga"></li>
  5. <li><?php echo $LANG['top']['change_lang']; ?></li>
  6. </ul>


JQuery:
  1. $('li').click(function(){
  2. var a = $(this).attr("class");
  3. var b = $(this).attr("title");
  4. if(b=="flaga")
  5. {
  6. $.ajax({
  7. type: "POST",
  8. url: "zmiana_flag.php",
  9. data: "a=" + a,
  10. success: function(odpowiedz){
  11. alert(odpowiedz);
  12. },
  13. error: function(){
  14. alert("Błąd!");
  15. }
  16. });
  17. }
  18. });


zmiana_flag.php:
  1. <?
  2. require("dane_do_bazy_danych.php");
  3. //łączenie do mysql...
  4. $flaga = $_POST[a];
  5. $sql=mysql_query(...) or die(mysql_error());
  6.  
  7. if($sql){
  8. echo "ok";
  9. }
  10. // else nie potrzebny, w przypadku błędu zwróci go mysql_error()
  11. ?>


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. sad.gif
Go to the top of the page
+Quote Post
nospor
post 22.09.2011, 20:31:41
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

Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 20:37:24
Post #14





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 22.09.2011, 21:31:41 ) *
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 smile.gif
Gdzie może być błąd ? sad.gif

Do tego w pliku PHP zmieniłem z $_POST[a] na $_POST['a'] i nic sad.gif

Ten post edytował peja1990 22.09.2011, 20:38:13
Go to the top of the page
+Quote Post
nospor
post 22.09.2011, 20:38:38
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

Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 20:46:42
Post #16





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 22.09.2011, 21:38:38 ) *
Odpal firebuga dla FIrefox i zobacz, czy ci ten ajax idzie, co zawiera itp.



Ok, ale najpierw muszę zainstalować "lisa" bo ogólnie to nie korzystam z tej przeglądarki tongue.gif
Go to the top of the page
+Quote Post
nospor
post 22.09.2011, 20:49:46
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

Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 20:52:11
Post #18





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(nospor @ 22.09.2011, 21:49:46 ) *
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
Go to the top of the page
+Quote Post
nospor
post 22.09.2011, 20:55:11
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

Go to the top of the page
+Quote Post
Kużdo
post 22.09.2011, 21:03:45
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...
Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 21:08:49
Post #21





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


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ę... smile.gif
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

Cytat( @ 22.09.2011, 22:03:45 ) *
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 wink.gif



DZIAŁA exclamation.gif!!!!
DZIĘKI ZA POMOC exclamation.gif!!!!!!!!!!!!!


Ten post edytował peja1990 22.09.2011, 21:12:34
Go to the top of the page
+Quote Post
Kużdo
post 22.09.2011, 21:28:22
Post #22





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Cytat(peja1990 @ 22.09.2011, 22:08:49 ) *
Kolego zobacz na to ".../pl/start.html" <- rozszerzenie nie pozwala na użycie metody GET, a nie zmienię na php wink.gif

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:
  1. <a href="http://adres.do/pliku.php?lang=pl"><img src="adres/do/obrazka_pl.png" /></a>
  2. <a href="http://adres.do/pliku.php?lang=en"><img src="adres/do/obrazka_en.png" /></a>
  3. <a href="http://adres.do/pliku.php?lang=de"><img src="adres/do/obrazka_de.png" /></a>


Plik php:
  1. <?php
  2. //polaczenie z baza
  3. $dostepne_jezyki = array('pl', 'en', 'de');
  4.  
  5. if (isset ($_GET['lang']) && in_array($_GET['lang'], $dostepne_jezyki))
  6. {
  7. $query = "UPDATE guests SET lang = '{$_GET['lang']}' WHERE ip = '{$_SERVER['REMOTE_ADDR']}'";
  8. $result = mysql_query($query);
  9. header('Location: hxxp://adres.do.strony/test'.$_GET['lang'].'/start.html');
  10. }
  11. ?>
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
Go to the top of the page
+Quote Post
peja1990
post 22.09.2011, 22:03:17
Post #23





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(Kużdo @ 22.09.2011, 22:28:22 ) *
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:
  1. <a href="http://adres.do/pliku.php?lang=pl"><img src="adres/do/obrazka_pl.png" /></a>
  2. <a href="http://adres.do/pliku.php?lang=en"><img src="adres/do/obrazka_en.png" /></a>
  3. <a href="http://adres.do/pliku.php?lang=de"><img src="adres/do/obrazka_de.png" /></a>


Plik php:
  1. <?php
  2. //polaczenie z baza
  3. $dostepne_jezyki = array('pl', 'en', 'de');
  4.  
  5. if (isset ($_GET['lang']) && in_array($_GET['lang'], $dostepne_jezyki))
  6. {
  7. $query = "UPDATE guests SET lang = '{$_GET['lang']}' WHERE ip = '{$_SERVER['REMOTE_ADDR']}'";
  8. $result = mysql_query($query);
  9. header('Location: hxxp://adres.do.strony/test'.$_GET['lang'].'/start.html');
  10. }
  11. ?>
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 ? smile.gif
Przyjrzyj się jeszcze raz kodowi strony tongue.gif Pozatym to tylko szkielet.
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 ? smile.gif Mogę to zrobić i w aktualnym kodzie ale to bez sensu bo i tak wszystkie linki automatycznie wraz ze zmianą języka są updateowane smile.gif

WIELKIE DZIĘKI WSZYSTKIM ZA POMOC smile.gif exclamation.gif Uratowaliście mnie exclamation.gif!
Za to dostaliście kilka "pomógł", za każdą pomocną wypowiedź <- to tak nawiasem dla moderatorów tongue.gif

Serdecznie pozdrawiam i jeszcze raz dziękuję smile.gif
Szczególnie użytkownikowi "nospor" jak i użytkownikowi "Kużdo" za poświęcenie sporo swojego czasu wink.gif
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 07:35