Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] zmiana języka
marian84
post
Post #1





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


Witam! na wstępie przepraszam ze zawracam glowe i wiem że w sieci jest wiele art zwiazanych z jezykiem ale te ktore zalazlem niestety nie dzialaly lub nie potrafilem ich dodac do swojego kodu.

a teraz wytlumacze co i jak

baza

id | temat_pl | temat_en | tresc_pl | tresc_en

Jak przy takies strukturze zrobić by po wyborze linku pl czytalo z _pl a po wyborze en z _en??

dobrze by bylo jakby po kliknieciu raz w jezyk ciagle czytalo tylko z _en lub _pl

Ten post edytował marian84 11.02.2009, 21:37:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
ArekJ
post
Post #2





Grupa: Zarejestrowani
Postów: 266
Pomógł: 9
Dołączył: 21.05.2008
Skąd: Łomianki

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


Przekazuj metodą GEt language=pl/en a potem sprawdzaj IF'em jaki jest wybrany język.

EDIT: Jak ma ciągle czytać w tym samym języku to zrób to na sesjach.

Ten post edytował ArekJ 11.02.2009, 21:39:19
Go to the top of the page
+Quote Post
isso
post
Post #3





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


no tak... i to chyba niezbyt duzy problem... przy generowaniu zapytania robisz wcześniej awrunek... i wtedy albo zapytanie jest np.

Kod
"SELECT id, temat".$zmienna_jezyka.", tresc".$zmienna_jezyka." FROM bla bla ..."
Go to the top of the page
+Quote Post
mls
post
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Zapisz wybrany kod języka do zmiennej i przy wyświetlaniu użyj np.:
  1. <?php
  2. $tytul = $artykul['temat_' . $kod_jezyka];
  3. $tresc = $artykul['tresc_' . $kod_jezyka];
  4. ?>

gdzie $artykul to wiersz z bazy danych.
Lub w zapytaniu SQL:
  1. <?php
  2. $sql = "SELECT *, temat_" . $kod_jezyka . " AS temat, tresc_" . $kod_jezyka . " AS tresc FROM (...)";
  3. ?>


Ten post edytował mls 11.02.2009, 21:42:42
Go to the top of the page
+Quote Post
marian84
post
Post #5





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


Cytat(ArekJ @ 11.02.2009, 21:38:42 ) *
...
EDIT: Jak ma ciągle czytać w tym samym języku to zrób to na sesjach.


Kod
session_start();
   if(isset($_GET['lang'])){
       if($_GET['lang']=='en'){
           $_SESSION['lang']='en';
       }elseif($_GET['lang']=='pl'){
           $_SESSION['lang']='pl';
       }
      
   }else{
       $_SESSION['lang']='pl';
   }


później odwołuję sie w funkcjach do wartosci sesji np.

Kod
$lang=$_SESSION['lang'];
  
   if($lang=='pl'){
       echo'polski';
   }else{
       echo'angielski';
   }


Wszystko działa na ff, IE7 i operze ale na IE6 wyswietla pustą stronę, a dopiero po odświeżeniu wyswietla stronę.

W czym może być problem?

//////////////////////////////////////////////////

Naprawdę nikt nie spotkał sie z takim problem?


Błąd pojawia sie tylko w jednym miejscu.

Więc jeszcze raz...

Na poczatku indeksu:
Kod
session_start();
   session_name('lang');
   global $lang;
  
   if($_GET['lang']=='en'){
       $_SESSION['lang']='en';
   }elseif($_GET['lang']=='pl'){
       $_SESSION['lang']='pl';
   }


W zawartości pliku sprawdzam co ma być wyświetlone

Kod
...
  
   if($_GET['id']){
        strony($_GET['id']);
   }elseif(isset($_GET['aktualnosci'])){
        include('akcje/news.php');
   }elseif($_GET['ida']){
       include('akcje/akt.php');
   }
  
   ....


zmiana stron działa ok, zmiana języka tez

Błąd pojawia sie w aktualnosciach.

Ładduje się plik news.php

Kod
(...) // pobieranie danych itd
  
   $lang=$_SESSION['lang'];
  
   while($row = mysql_fetch_assoc($zapytanie)) {
  
                   if($lang=='en'){
                       $temat=$row['temat_en'];
                       $zajawka=$row['zajawka_en'];
                       $wiecej='more &raquo;';
                   }else{
                       $temat=$row['temat'];
                       $zajawka=$row['zajawka'];
                       $wiecej='więcej &raquo;';
                   }
                   echo'<table border="0" width="503px">';
                       echo'<tr><td class="temat"><a href="index.php?ida='.$row['id'].'">'.$temat.'</a></td></tr>';
                       echo'<tr><td class="zajawka">'.$zajawka.'</td></tr>';
                       echo'<tr><td class="wiecej" align="right"><a href="index.php?ida='.$row['id'].'">'.$wiecej.'</a></td></tr>';
                   echo'</table>';
   }


Teraz chcąc wybrać którąś z aktualnosci klikam w link i... pod FF jest ok, Opera tez, IE7 również. Problem pojawia sie pod IE 6 (i to tez k...a nie pod każdym)

Wyświetla się NIC, nie zmienia sie nawet adres na pasku adresu. Dopiero po odświeżeniu strony ładuje się jej zawartość.

Flaki pliku akt.php wyglądają następująco:

Kod
<?
       $lang=$_SESSION['lang'];
      
       echo'<div id="aktualnosci">';
       $zap=mysql_query('SELECT * FROM tresci WHERE id="'.$_GET['ida'].'"');
       $row=mysql_fetch_array($zap);
      
       if($lang=='en'){
           $temat=$row['temat_en'];
           $tresc=$row['tresc_en'];
           $wroc='&laquo; back';
       }else{
           $temat=$row['temat'];
           $tresc=$row['tresc'];
           $wroc='&laquo; cofnij';
       }    
          
           echo'<h1>'.$temat.'</h1>';
           echo'<div class="tresc_akt">';
               echo $tresc;
           echo'</div>';
           echo'<div class="back"><a href="index.php?aktualnosci">'.$wroc.'</a></div>';
       echo'</div>';
   ?>


Link do strony:

http://zambi.org/nowa_strona/index.php?aktualnosci

Proszę o pomoc.

Ten post edytował marian84 15.02.2009, 15:35:37
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2.   session_name('lang');
  3. ?>

Cytat
session_name() for every request (and before session_start() or session_register() are called).

to swoją drogą.

Ale czemu zmieniasz nazwę sesji...?
Go to the top of the page
+Quote Post

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: 23.08.2025 - 14:27