Jump to content
php.lv forumi

problemas ar valodām


sandrulis
 Share

Recommended Posts

Es veidoju lapu kurā būs vairākas valodas, un viss strādā :)

 

Bet problēma sākas ar datu bāzi, viss tulkojums stāv teksta failā (php), datubāzē norādu faila nosaukumu un karodziņa nosaukumu.

 

Valodas mainās ar cookie palīdzību.

 

Strādājošā koda daļa ir šāda:

switch($_COOKIE['lang'])
 {
   case 'lv': $valoda='lv'; break;
   case 'fr': $valoda='fr'; break;
   case 'ru': $valoda='ru'; break;
   default: $valoda='en';
 }

 

Bet kad mēģinu izvilkt no datubāzes (lai nav ik palaikam jālabo koda fails)

switch($_COOKIE['lang'])
 {
   $results=mysql_query("SELECT * FROM languages WHERE default='0'");
   while($rows = mysql_fetch_array($results))
     {case $rows['isak']: $valoda=$rows['isak']; break;}
   default: $valoda=$default_valoda;
 }

 

Man izmet šādu erroru:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_CASE or T_DEFAULT or '}' in ...\www\lang.php on line 12

 

Problēmas norādītajā rindiņā ir kods, kas izvelk datus no datubāzes: $result ...

 

Man liekas kkas nav ar:

case 'ru': $valoda='ru'; break;

 

Ieboldotais teksts nevar būt zem koda, kas izvelk datus no datubāzes, ne?

 

Sry par tādiem jautājumiem, bet es tikai mācos :) (hobijs)

 

Ko lai dara? vai vnk atstāt

 

switch($_COOKIE['lang'])
 {
   case 'lv': $valoda='lv'; break;
   case 'fr': $valoda='fr'; break;
   case 'ru': $valoda='ru'; break;
   default: $valoda='en';
 }

 

ik palaikam labot to failu

Link to comment
Share on other sites

Īsti neiebraucu loģikā, bet iesaku iepazīties ar if konstrukciju.

 

Ar pēdiņām viss bumbās. Ja netiktu lietotas pēdiņas, tad php meklēju konstanti, nevis padotu stringu. Bezpēdiņu variants vairumā gadījumu strādā, jo php atgriež pieprasītās konstantes nosaukumu, ja tā netiek atrasta.

If you use an undefined constant, PHP assumes that you mean the name of the constant itself, just as if you called it as a string (CONSTANT vs "CONSTANT"). An error of level E_NOTICE will be issued when this happens. See also the manual entry on why $foo[bar] is wrong (unless you first define() bar as a constant). If you simply want to check if a constant is set, use the defined() function.
Link to comment
Share on other sites

e-remit, ieliku pirms case to switch(), bet tad viņš ņem pēdējo ieraktu kas ir datubāzē

Es tikai norādīju uz acīmredzami dīvainu lietu, starp citu, break aptur tuvāko pieejamo ciklu, līdz ar to viš nobreikos while, nevis switch ;)

 

Bet nu vispār, ja vien netaisies valodas vēlāk likt klāt dinamiski, nav vajadzības to datubāzē glabāt un ņem vērā daGrevis ieteikumu, visu izsakot masīvā

$languages = array(
       'lv' => 'Latvian',
       'ru' => 'Russian',
       'en' => 'English',
);
$lang = empty($_COOKIE['lang']) ? 'en' : $_COOKIE['lang'];
$valoda = isset($languages[$lang]) ? $languages[$lang] : $languages['en'];

Edited by e-remit
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...