@Kirill-Gorelov
С ума с IT

Мультиязычный сайт php + mysql?

Всем привет. Нужно реализовать мультиязычный сайт на php + mysql. Сделано! НО!
Помогите упростить код, пожалуйста.
Вот моя таблица: 104c7c6cd6.jpg
Вот мой запрос:
$stmt = $pdo->query("SELECT `key`, `english` FROM language WHERE 1")->fetchAll(PDO::FETCH_UNIQUE);

И вот как я вывожу слова:
echo $stmt['lan_site'][$language];
  echo $stmt['solved'][$language];

В $language я храню имя столбца russian или english.

В чем проблема:
Как мне избавиться от
echo $stmt['solved'][$language];
И что бы было
echo $stmt['solved'];
  • Вопрос задан
  • 1464 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Всего-то надо использовать правильную константу ПДО
$lang = $pdo->query("SELECT `key`, `english` FROM language")->fetchAll(PDO::FETCH_KEY_PAIR);
echo $lang['solved'];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$language = 'english';
$stmt = $pdo->query("SELECT `key`, `{$language}` AS `translation` FROM `language`");
$translation = [];
while ($item = $stmt->fetch(PDO::FETCH_ASSOC)) {
  $translation[$item['key']] = $item['translation'];
}

Дальше просто используете $translation['solved']
Ответ написан
@Mysterion
$stmt = $pdo->query("SELECT `key` FROM language WHERE `language`=$language")->fetchAll(PDO::FETCH_UNIQUE);

Где $language - это, например, содержимое $_SESSION['language'].
Ну и в сессию сохранять выбранный язык.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы