webForumDet fria alternativet

Hämta och skriva ut språkvariabel från MySql

PHP

7 svar · 333 visningar · startad av Folkbitar

Medlem sedan feb. 2003168 inlägg
Frågan#1

Jag använder mej av variabler för att styra vilket språk min sida ska vara på. typ $hej = "hello".

Ett par av sidorna visar en massa bilder. Dessa hämtar jag ur en mysql-databas, där jag har sparat sökväg till bilden samt en liten text som är tänkt att visas under bilden.

Nu till min fråga.
Jag vill från databasen hämta en språkvariabel tillsammans med bilden.
Jag har försök att lägga variablen i databasen och sedan hämta den,
men infon från språkfilen hämtas inte och variablen skrivs ut som en variabel.
Så här skriver jag ut den:

<?=$row_foton['title']; ?>

Hur ska jag bära mej åt?

/anders

Medlem sedan juni 20006 031 inlägg
#2

Ta bort ;

<?=$row_foton['title']?>

Medlem sedan feb. 2003168 inlägg
#3

Pedda skrev:

Ta bort ;

<?=$row_foton['title']?>

Hej!

Nej, det hjälpte tyvärr inte.

/anders

Medlem sedan juni 20006 031 inlägg
#4

Ok, hur ser språkfilen ut, och vad är det egentligen du sparar i databasen?

Medlem sedan feb. 2003168 inlägg
#5

Språkfilerna är uppbyggda så här:

$hej = "hello" osv

I databasen sparar jag bara sökväg till bilden,
och texten som ska hänga med bilden.

Texten är inskriven i en varchar-kolumn,
och där provade jag att istället för texten
skriva in min variabel.

Medlem sedan juni 20008 205 inlägg
#6

Jag skulle rekommmendera något i stil med följande. Språkfil:

$lang['hej'] = 'Hello';
$lang['adjö'] = 'Goodbye';

D.v.s. du använder en associativ array i stället för en dröse lösa variabler. Sen kan du göra en funktion som går igenom en text och letar upp variabler, m.h.a. preg_replace:

function localize_string($str){
	global $lang;
	$pattern = '/\$\\{(\\S+)\\}/e';
	$action = '$lang["\\1"]';
	return preg_replace($pattern, $action, $str);
}

Den här koden antar att variabelnamnen i texten som ska översättas är omslutna av {måsvingar} och föregås av $-tecken. Så om du har en texten ${hej} och ${adjö}! och kör den genom localize_string, blir det samma resultat som om det stått "$lang[hej] och $lang[adjö]!" i PHP-koden. I ditt fall skulle du alltså till slut skriva:

<?= localize_string($row_foton['title']); ?>
Medlem sedan feb. 2003168 inlägg
#7

Hej Spango!

Jag ser poängen här.

Men det var ju attans synd att jag har
kommit nästan till slutet i byggandet.
Det är bara dom här bildsidorna kvar. :l

Men, men... det är bara att köra vidare.

Tack :bire

/anders

Medlem sedan juni 20008 205 inlägg
#8

Du kan göra det med lösa variabler också, bara genom att byta ut innehållet i $action mot '$_GLOBALS["\1"]', om jag inte misstar mig.

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)