---
title: "Lagra översättning i databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/176279-lagra-översättning-i-databas"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Web-Tor"
published: "2009-01-10T15:35:35.000Z"
updated: "2009-01-31T20:53:40.000Z"
replies: 9
views: 640
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/176279-lagra-översättning-i-databas"
---

# Lagra översättning i databas

## #1 — Web-Tor, 2009-01-10T15:35Z

Jag håller på med en webbshop som kommer finnas på engelska och svenska. Alla applikationstexter lagrar jag i separata filer men produkterna lagrar jag i en databas (även översättningen alltså).

Databasstrukturen ser ut ungefär så här:

```
ID
name_sv
name_eng
price_sv
price_eng
```

Och så hämtar jag en produkt så här:

```
<?php
	$SQL_item = mysql_query('SELECT colID, colName_'.$_lang.', colPrice_'.$_lang.' FROM products WHERE colID=1') or die (mysql_error());
	if (mysql_num_rows($SQL_item)){
		$id = mysql_result ($SQL_item, 0, 0);
		$name = mysql_result ($SQL_item, 0, 1);
		$price = mysql_result ($SQL_item, 0, 2);
	}
?>

<h1><?php echo $name; ?></h1>
<b><?php echo $price ; ?></b>
```

Finns det något smidigare sätt att lagra eller hämta produkterna?

Permalänk: https://www.webforum.nu/p/176279

## #2 — überfuzz, 2009-01-10T17:04Z

Jag brukar göra så att jag kopplar språk till produkt. Det finns säkert bättre lösningar, men det blir ganska greppbart om man gör så. När du hämtar en produkt ser du till att query-strängen JOINar till den tabell som innehåller det språk du vill ha.

Permalänk: https://www.webforum.nu/p/2165064

## #3 — Web-Tor, 2009-01-10T17:12Z

Du menar: en tabell med produkter (det som inte behöver översättas) och en tabell med själva översättningarna?

Permalänk: https://www.webforum.nu/p/2165067

## #4 — SPiN, 2009-01-10T17:22Z

Jag gillar inte tanken på att ha olika kolumner för olika språk i min databas. Om du nu ska bygga ut din webbshop och vill ha in ytterligare ett språk, hur skulle du göra då? Jag har gjort så att jag har ett fält som definierar språket för varje rad, vilket gör att det blir utbyggbart. Det här var dock en nödlösning, men hittills har den fungerat bra. Det tråkiga är ju dock att det blir duplicerad data i databasen.

Exempel:

```
Products
--------
id      productname     category    price   language
1       Såg             2           149     swedish
2       Saw             2           149     english
3       Säge            2           149     german
...
```

Permalänk: https://www.webforum.nu/p/2165070

## #5 — Web-Tor, 2009-01-10T17:29Z

> **SPiN skrev:**
>
> Jag gillar inte tanken på att ha olika kolumner för olika språk i min databas. Om du nu ska bygga ut din webbshop och vill ha in ytterligare ett språk, hur skulle du göra då?

Jo, det är naturligtvis nackdelen. Inom överskådlig framtid kommer det bara att finnas två språk och skulle det tillkomma ytterligare ett språk blir det ju till att strukturera om databasen och editera alla produkter. Inte smidigt men inte omöjligt heller.

Det som jag tycker är minst smidigt med min lösning är att jag måste skicka med språker flera gånger i min SQL-fråga och att jag inte kan (på något enkelt sätt i alla fall) använda kolumnnamnet senare i koden:

```
//I dagsläget
$name = mysql_result ($SQL_item, 0, 1);

// Jag skulle vilja ha typ
$name = mysql_result ($SQL_item, 0, 'colName');
```

Väldigt tacksam för tips och tankar.

Permalänk: https://www.webforum.nu/p/2165072

## #6 — macwiz, 2009-01-10T18:10Z

Kolla strukturen för en befintlig webshop, exempelvis oscommerce. Där ligger produktnamn och beskrivning i en egen tabell som är kopplad till språk och övriga produktdata i en annan tabell.

products
id         price     weight
1          129        1

products_description
id         name      description     language
1          Prod 1    Produkt nr 1    1
1          Article 1 Article no 1      2

Permalänk: https://www.webforum.nu/p/2165075

## #7 — Web-Tor, 2009-01-10T18:13Z

Det låter onekligen som en bra lösning. Ungefär hur ser en SQL-fråga ut som plockar fram produkt id 1 med alla information ur båda tabellerna?

Permalänk: https://www.webforum.nu/p/2165076

## #8 — macwiz, 2009-01-10T18:26Z

select \* from products, products_description where products.id = products_description.id and products.id=1

Permalänk: https://www.webforum.nu/p/2165077

## #9 — Web-Tor, 2009-01-12T09:02Z

Nu har jag byggt upp strukturen i databasen och det ser ut att fungera riktigt smidigt med macwiz lösning. Tack!

Permalänk: https://www.webforum.nu/p/2165233

## #10 — Prometheus, 2009-01-31T20:53Z

Så har jag också gjort i nästa version av XodaGallery, var det smidigaste sätt jag kunde komma på så där kom vi fram till samma sak.

Kategorier, Bilder, Sidor har var för sig två tabeller - en med metadata och en med innehållet. Inehållstabellen är sedan kopplad till en tabell med Språk. Själva gränssnitts-språket är däremot i .mo-filer som Wordpress och många använder. Har valt att dela upp det så för att användaren med en språkfil ska kunna installera nya språk och bara översätta sitt eget innehåll.

Permalänk: https://www.webforum.nu/p/2167284

---

Tråden på webben: https://www.webforum.nu/amne/php/176279-lagra-översättning-i-databas
