![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 0 Dołączył: 10.03.2004 Skąd: K-ce Ostrzeżenie: (50%) ![]() ![]() |
Witam,
Nie lubie prośić o pomoc a zwłaszcza zwązaną z php i MySQL. ale nie wiem jak to rozgryść. Więc mam skrypt językowy który zmienia mi zawartośc strony na podstawie parametru lang w adresie np : ?adres=test&lang=pl i w/w adresie strona ma być w języku polskim itp... Wszystko ma być wyciągane z mysql a nie z pliku , z pliku to proste. nie trzeba nic tlumaczyć moja struktura bazy wyglada tak : [sql:1:dd1d5d7401] # # Table structure for table 'lg' # CREATE TABLE lg ( wartosc text NOT NULL, pl text NOT NULL, de text NOT NULL ); # # Dumping data for table 'lg' # INSERT INTO lg VALUES ( '$lang001', 'Ty ', 'Du'); [/sql:1:dd1d5d7401] Chciał bym zrobić ze skrypt sie nie wykona ale wyswetli w postaci takiej [php:1:dd1d5d7401]<?php $lang001 = 'Ty'; lub $lang001 = 'Du'; ?>[/php:1:dd1d5d7401] w zależności od wersji jezykowej ja mialem cos takiego : [php:1:dd1d5d7401]<?php $db = mysql_connect("localhost", "root", "roqogo+2"); mysql_select_db("lang", $db); $pol = mysql_query ("SELECT * FROM lg WHERE $lang = '$lang'"); while($w = mysql_fetch_array($pol)) { $wartosc= $w["wartosc"]; $pl= $w["pl"]; $de= $w["de"]; eval("$wartosc = '$lang';"); } echo "test jezykowy :<br>"; echo "$lang001"; ?>[/php:1:dd1d5d7401] moze jakie propozycje ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 15.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
hm nie łapie o co ci chodzi chcesz wyświetlić konkretną wersję językową strony??
-------------------- gg:5216061
Warsztat: Win XP HE | Apache - 2.0.49 | PHP - 5 RC | MySQL - 4.0.18 | Narzędzia: WinSyntax Artykyłu v0.2beta[b]lllllllllllllllllllllllll 100% |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 0 Dołączył: 10.03.2004 Skąd: K-ce Ostrzeżenie: (50%) ![]() ![]() |
tak,,
ale dzięki juz zrobilem [php:1:c4890b157b] <? $db = mysql_connect("localhost", "root", "roqogo+2"); mysql_select_db("lang", $db); $pol = mysql_query ("SELECT * FROM lg"); while($w = mysql_fetch_array($pol)) { $wartosc= $w["wartosc"]; $j= $w["$lang"]; $c = "$wartosc = '$j';"; eval($c); } echo "slowo tlumaczone: $lang002"; ?>[/php:1:c4890b157b] |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
zamiast [php:1:f1d4601489]<?php
$wartosc= $w["wartosc"]; $j= $w["$lang"]; $c = "$wartosc = '$j';"; eval($c);?>[/php:1:f1d4601489]znacznie wygodniej i szybciej jest skorzystać z [php:1:f1d4601489]<?php ${$w["wartosc"]} = $w["$lang"]; ?>[/php:1:f1d4601489] lub, chyba jeszcze lepiej, korzstać z funckji która będzie wyciągać określone dane z jakiejś globalnej tabeli. Dzięki temu nie musisz przejmować się formą przechowywania tych danych (z czasem możesz chcieć ją zmienić...), a w kodzie podajesz np. [php:1:f1d4601489]<?php function _t( $strNazwa) { return $GLOBALS[ 'naszaTabela' ][ $strNazwa ]; } echo _t('text do przetmaczenia'); ?>[/php:1:f1d4601489] -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
Witam
Możesz też użyć do tego sesji: [php:1:1fc2e7ae75]<?php if($_GET[lang]){ $_lang=$_GET[lang]; session_register("_lang"); } ?>[/php:1:1fc2e7ae75] Przy takim zapisie w sesji $_SESSION[_lang] masz zapisaną aktualną wersję językową - w Twoim przypadku pl - potrząc na podany przykład. P.S. Zapis sesji jest troszkę stary, ale taki na szybko znalazłem w moich dokach :wink: |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 0 Dołączył: 10.03.2004 Skąd: K-ce Ostrzeżenie: (50%) ![]() ![]() |
coś nie tak mam taki kod:
[php:1:b78c317a33] <? $db = mysql_connect("jacbod.han-solo.net", "root", "roqogo+2"); mysql_select_db("aukcja", $db); $pol = mysql_query ("SELECT * FROM lg"); while($w = mysql_fetch_array($pol)) { $wartosc= $w["wartosc"]; $j= $w["$lang"]; $c = '$wartosc = "$j";'; eval($c); } ?>[/php:1:b78c317a33] i cos nie działa a chce zeby skrypt wegenerowal na podstawie z bazy cos takiego co ma się wykonac $lang001 = "bla bla bla"; $lang002 = "bla bla bla2"; oczywiscie bla bla bla będzie sie zmienialo w zalerzności od wersji językowej [php:1:b78c317a33]<?php $j= $w["$lang"]; ?>[/php:1:b78c317a33] gdzie robie blad ? ja mam taki komunikat Kod Parse error: parse error in /home/httpd/docs/nkcom/xxx.php(10) : eval()'d code on line 1
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 208 Pomógł: 0 Dołączył: 19.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Zauważyłeś, że podałeś dane do bazy?
--- A nie lepiej tak:[php:1:320b7a8c8b]<?php mysql_connect(); mysql_select_db( 'aukcja' ); $result = mysql_query( 'SELECT wartosc, ' . $lang . ' FROM lg' ); while ( list( $variable, $value ) = mysql_fetch_row( $result ) ) { $variable = subStr( $variable, 0, 1 ) == '$' ? subStr( $variable, 1, strLen( $variable ) ) : $variable; ${$variable} = $value; } ?>[/php:1:320b7a8c8b]--- IMO to jest bezsensowny pomysł ![]() --- Najlepiej zrobić jedną tabelę 'languages' z polami lang_id (automatycznie generowany ID), lang_name_english (np. Polish), lang_name_local (np. Polski), lang_charset (np. ISO-8859-2), lang_code (2-3 literowy kod kraju, np. PL). Później drugą tabelę 'languages_values' z polami value_id, lang_id (relacja do poprzedniej tabeli), value_name (unikalna nazwa identyfikująca wartość, np. example, add, delete), value_text (wartość, np. (kolejno): przykład, dodaj, usuń). Później w zależności jaki kto ma język wybierasz sobie zapytaniem[sql:1:320b7a8c8b]SELECT v.value_name, v.value_text FROM languages l, languages_values v WHERE l.lang_code = $lang ORDER BY v.value_name ASC[/sql:1:320b7a8c8b] W skrypcie wykonujesz zapytanko i tworzysz tablicę:[php:1:320b7a8c8b]<?php // zapytanko... $result = ...; $LANG = array(); while ( $row = mysql_fetch_row( $result ) ) { $LANG[ $row[0] ] = $row[1]; } // odwolanie do zmiennej // wynik: przykład print $LANG['example']; ?>[/php:1:320b7a8c8b] |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 0 Dołączył: 10.03.2004 Skąd: K-ce Ostrzeżenie: (50%) ![]() ![]() |
chce poprawic swoj kod a nie zminiac cos co juz zrobiłem ..
chodzi o to ze w jednym polu mam np " $lang1" a w drugim " de " i ja chce zeby skrypt wygenerowal mi cos takiego $lang = "de"; a nie jakies inne rzeczy |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 208 Pomógł: 0 Dołączył: 19.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
No to zobacz mój pierwszy kod
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 19.02.2004 Skąd: zalibórz Ostrzeżenie: (0%) ![]() ![]() |
Ja mam tabelke Lang z polami
ID PL EN ( inne jesli potrzebne) w niej sa po kolei wszystkie texty na stronie potem na samym poczatku mam funkjce: [php:1:7c0790af10]<?php $langs = mysql_query("SELECT * FROM lang"); while ($lls = mysql_fetch_array($langs)) { $lang[$lls[id]] = $lls[$_SESSION['LANG']]; }; ?>[/php:1:7c0790af10] w sesji musisz ustawic sobie zmienna $_SESSION['LANG'] np 'pl'; i tak dalej u mnie dziala bezproblemowo pozrawiam -------------------- Niektórych rzeczy nie można ująć w inny sposób jak tak, czy inaczej....
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 15:53 |