1

Я вывожу из базы MYSQL жанры, а чтобы их перевести на русский - я делаю вот такую конструкцию:

$results = $mysqli->query("SELECT * FROM genres_posts WHERE game_id = '$id' limit 10");
while($row = $results->fetch_assoc()) {
if ($row["url_genre_name"] == 'ekshen') {echo '<li>Экшен</li>';}
if ($row["url_genre_name"] == 'simulyator') {echo '<li>Симулятор</li>';}
if ($row["url_genre_name"] == 'strategiya') {echo '<li>Стратегия</li>';}
if ($row["url_genre_name"] == 'sport') {echo '<li>Спорт</li>';}
if ($row["url_genre_name"] == 'priklyuchenie') {echo '<li>Приключение</li>';}
if ($row["url_genre_name"] == 'rolevaya-igra') {echo '<li>Ролевая игра</li>';}
if ($row["url_genre_name"] == 'golovolomka') {echo '<li>Головоломка</li>';}
if ($row["url_genre_name"] == 'indi') {echo '<li>Инди</li>';}
}

Можно ли как то сделать так, чтобы загнать все это в одну переменную, и чтобы я вставлял, скажем вот так и выводился жанр с переводом? Как это можно реализовать? У меня по коду много мест, куда нужно вставлять такую конструкцию и код превращается в гору этого текста.

$results = $mysqli->query("SELECT * FROM genres_posts WHERE game_id = '$id' limit 10");
while($row = $results->fetch_assoc()) {
echo $genre;
}

2 Answers2

3

Надо сделать мапу и обращаться по ключу к ней:

$map = ['sport' => 'Спорт', 'indi' => 'Инди', и т.д.];
echo "<li>{$map[$row['url_genre_name']]}</li>";
  • Если вместо $row['url_genre_name'] ставлю напрямую жанр типа sport - то все выводит. – Павел Михайлов Apr 26 '22 at 14:18
  • Значит у тебя в $row нет ключа url_genre_name. либо в map нет нужного ключа....... (https://ru.stackoverflow.com/a/1364430/191482) + отладка https://ru.stackoverflow.com/a/701146/191482 – Алексей Шиманский Apr 26 '22 at 14:20
  • есть, если ставлю вывод просто echo $row['url_genre_name'] - то выводится неск значений sport, indi и т.д. – Павел Михайлов Apr 26 '22 at 14:21
  • ................"либо в map нет нужного ключа"............. – Алексей Шиманский Apr 26 '22 at 14:21
  • там я перечислил все – Павел Михайлов Apr 26 '22 at 14:22
  • ....значит не всё. – Алексей Шиманский Apr 26 '22 at 14:23
  • ошибка конкретная. если не веришь - ссылки выше о том что означает эта ошибка и как продебажить свой код чтобы увидеть что где не так – Алексей Шиманский Apr 26 '22 at 14:23
  • Прошу прощения, ошибка была в том, что я поставил эту строку после } вывода из базы :) Все работает, спасибо! – Павел Михайлов Apr 26 '22 at 14:29