![]() |
Jag har en tabell som heter category, med fält category_id, language_id, category_name. Det är tänkt att jag ska hämta en kategoris namn beroende på vilket språk användaren har valt. Nu vill jag dock att standardspråket (1) ska användas ifall det valda språket (2) råkar sakna översättning.
Funderade på om det går att göra på ett smidigare sätt än som som jag gör nu (en aning förkortad kod nedan för överskådlighetens skull): Kod:
// Standardspråket |
Kom på ett alternativt sätt. Följande är åtminstone snyggare att se på:
Kod:
$query = sprintf("SELECT category_id, category_name FROM %s WHERE language_id=%d OR language_id=%d ORDER BY language_id ASC", EDIT: Det här fungerar inte om DEFAULT_LANGUAGE > $user->language_id. Måste komma på något smartare. EDIT2: Det här fungerar nog alltid: Kod:
// Category descriptions: |
Citat:
Du kommer ju loopa över dubbelt så många poster som du behöver. Kod:
$query = sprintf("SELECT cd.category_id, cd.category_name, mc.category_name FROM %s AS cd LEFT OUTER JOIN %s AS mc ON cd.category_id=mc.category_id WHERE cd.language_id=%d AND mc.language_id=%d", |
Det var precis något sådant jag ville åstadkomma eg0master. Ett problem återstår dock när jag provar med ditt förslag: Bara de fält som har översättning kommer med i resultset. Alltså, min tabell ser ut så här:
Kod:
category_id | language_id | category_name EDIT: Sorry, jag är bara lite morgontrött ;) Det är ju bara att se till att default language hamnar i vänstra tabellen... Jag får tacka så mycket för din hjälp eg0master! |
För den intresserade ser min SQL-sats nu ut som följer, och resultatet är det önskade.
Citat:
|
Alla tider är GMT +2. Klockan är nu 14:20. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson