Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]wybieranie języka wyświetlenia strony. Pomoc w zaznaczeniu który język wybrany.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Witam Panowie, mam kod:

  1. <?php
  2. //============== *** JEZYKI *** ==============
  3. $jezyki = '';
  4. $jezyki_array = array('pl','ua');
  5. if(isset($lang)){
  6. $lang = $_GET['lang'];
  7. }else{
  8. $lang = 'pl';
  9. }
  10. $language_get = $lang;
  11. if(in_array($language_get, $jezyki_array)){
  12. $language_page = $language_get; }
  13. else{
  14. $language_page = 'pl';
  15. }
  16. /*if(isset($lang)=='pl'){
  17. $classy = '_act';
  18. }else{
  19. $classy = '';
  20. }
  21. */
  22. switch ($language_page){
  23. case 'pl':
  24. include_once('language/polish.php');
  25. $kodowanie = "text/html; charset=UTF-8";
  26. break;
  27.  
  28. case 'ua':
  29. include_once('language/ukrainian.php');
  30. $kodowanie = "text/html; charset=UTF-8";
  31. break;
  32.  
  33. default:
  34. include_once('language/polish.php');
  35. $kodowanie = "text/html; charset=UTF-8";
  36. }
  37.  
  38. $adres_url = "http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];
  39. $adres_zmn = explode("&", $_SERVER["QUERY_STRING"]);
  40.  
  41. for($jl=0;$jl<count($jezyki_array);$jl++){
  42.  
  43. $adres_zmienne = NULL;
  44. $lang_tak = FALSE;
  45.  
  46. for($jz=0;$jz<count($adres_zmn);$jz++){
  47.  
  48. $and_nie = TRUE;
  49.  
  50. if(preg_match('/lang=+/i', $adres_zmn[$jz])){
  51.  
  52. if($lang_tak){
  53. $and_nie = FALSE;
  54. }else{
  55. $adres_zmienne .= 'lang='.$jezyki_array[$jl];
  56. $lang_tak = TRUE;
  57. }
  58. }else{
  59. $adres_zmienne .= $adres_zmn[$jz];
  60. }
  61.  
  62. if($jz==(count($adres_zmn)-1) AND !$lang_tak){
  63.  
  64. if($adres_zmn[$jz]!=NULL){
  65. $adres_zmienne .= '&lang='.$jezyki_array[$jl];
  66. }else{
  67. $adres_zmienne .= 'lang='.$jezyki_array[$jl];
  68. }
  69.  
  70. $and_nie = FALSE;
  71. }
  72.  
  73. if($jz!=(count($adres_zmn)-1) AND $and_nie){
  74. $adres_zmienne .= '&';
  75. }
  76.  
  77. }
  78.  
  79. $adres_href = $adres_url.'?'.$adres_zmienne;
  80. $jezyki .= '<div style="padding:0px; margin:0px;"><a href="'.$adres_href.'" class="lang'.$classy.'"><img src="/images/flag/'.$jezyki_array[$jl].'.png" border="0"></a></div>';
  81. }
  82. //============================================
  83. ?>
  84. <?= $jezyki;?>


Proszę o sprawdzenie czy kod jest dobrze napisany i jeżeli zawiera niepotrzebne lub przestarzałe funkcje to proszę o naprowadzenie mnie.
Ponadto chciałbym dodać do classy zmienną $classy jeżeli wybrałem dany język.
Reasumując wybrałem język polski dodaje mi do class="lang_act" pozostałe języki class="lang"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


  1. <?php
  2. //============== *** JEZYKI *** ==============
  3. $jezyki = '';
  4. $jezyki_array = array('pl','ua');
  5. if(isset($lang)){

Mi się tylko zdaje czy korzystasz z REGISTER_GLOBALS (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/ohmy.gif)
explode, in_array, count, preg_match. Wedlug mnie nie sa przestarzale (IMG:style_emoticons/default/tongue.gif) ,
Yyy. Poczytaj o DRY. Bo powtarzasz kod gdzies gdzie doslownie bylby zbedny np.
$kodowanie...
poza tym:
  1. for($jl=0;$jl<count($jezyki_array);$jl++){
  2.  
  3. $adres_zmienne = NULL;
  4. $lang_tak = FALSE;
  5.  
  6. for($jz=0;$jz<count($adres_zmn);$jz++){

Count powinienes miec wpierwszym argumencie zapisany jesli ilosc eleementow tablicy sie nie zmeinia co 1 petle. - a u ciebie sie nie zmiena.

Tzn w pierwszym argumencie for mozesz zapisywac nowe zmienne po porzecinku, wiec mozesz tak:

for ($x=0, $ct=count($cos); $x<$ct ; ++$x)

Dla przykladu.

(IMG:style_emoticons/default/tongue.gif)

Poza tym tworzysz duzo zmienmych.
$language_get = $lang;
(..ciach..)
$language_page = $language_get;

  1. if(isset($lang)){
  2. $lang = $_GET['lang'];
  3. }else{
  4. $lang = 'pl';
  5. }
  6. $language_get = $lang;
  7. if(in_array($language_get, $jezyki_array)){
  8. $language_page = $language_get; }
  9. else{
  10. $language_page = 'pl';
  11. }

  1. $language_page = isset($_GET['lang']) ? $_GET['lang'] : 'pl';
  2. if (!in_array($language_page, $jezyki_array))
  3. $language_page='pl';

Tak chyba lepiej?..

@@ widze ze nie moge zedytowac postu bo go na html zamieni.
Co do register_globals; no chyba ze includujesz ten plik.. ; (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 16:07