Использовать foreach для вывода данных из базы данных

У меня очень простая база данных, список из 8 языков, и значения, которые они могут иметь, - Y или N. Мне нужно вывести флажок для каждого языка, и, если значение равно Y, флажок должен быть установлен, иначе он должен быть пустым. Это код, который я использую для каждого отдельного языка, но я хотел бы знать, есть ли лучший способ получить тот же результат.

if ($language=='N'){
echo "<input type='checkbox' name='" . $rowlang["english"] . "' value='" . $rowlang["english"] . "'> English<br>";
} else {
echo "<input type='checkbox' name='" . $rowlang["english"] . "' value='" . $rowlang["english"] . " checked'> English<br>";}

//What I've tried to do is to build an array of the languages and use a foreach
$languages = array($rowlang["czech"],$rowlang["english"],$rowlang["german"],$rowlang["slovak"],$rowlang["russian"],$rowlang["french"],$rowlang["spanish"],$rowlang["italian"]);

foreach($languages as $language)
if ($language=='N'){
echo "<input type='checkbox' name='" . $language . "' value='" . $language . "'> " . $rowlang . "<br>";
}else{
echo "<input type='checkbox' name='" . $language . "' value='" . $language . "' checked> " . $rowlang . "<br>";
}

который почти работает, проблема в том, что я не могу повторить один язык, потому что с этим кодом я получаю «массив».

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сначала создайте ассоциативный массив и сохраните в нем языки и их значения:

$languages = array('czech' => 'N','english' => 'Y','german' => 'N','slovak' => 'N','russian' => 'N','french' => 'N','spanish' => 'Y','italian' => 'N' );

тогда:

foreach($languages as $key => $value) {
    if ($value=='N'){
echo "<input type='checkbox' name='" . $key . "' value='" . $value . "'> " . $key . "<br>";
    }
    else{
 echo "<input type='checkbox' name='" . $key . "' value='" . $value . "' checked> " . $key . "<br>";
    }
 }

результат будет: Output

если это массив, вы должны использовать $язык->название_языка или $язык['language_name'] в зависимости от типа вашего массива

Ответ принят как подходящий

Проблема в том, что попытка использовать $rowlang как часть echo является проблемой, поскольку это массив.

Вместо этого вы можете создать массив языков, которые вы хотите вывести, это также дает имя, которое будет отображаться в качестве значения. Поэтому используйте foreach() над этим массивом и проверьте массив $rowlang, чтобы увидеть, установлен ли он. Вместо того, чтобы повторять весь HTML, это просто устанавливает атрибут checked.

// Need to expand this array for all the countries you need
$languages = array("german" => "Germany","english" => "English");

foreach($languages as $language => $label)   {
    if ($rowlang[$language]=='N'){
        $checked = '';
    }else{
        $checked = ' checked';
    }
    echo "<input type='checkbox' name='" . $language . "' value='" . $language . "'$checked>" . $label . "<br>";
}

Это выведет что-то вроде

<input type='checkbox' name='german' value='german'>Germany<br>
<input type='checkbox' name='english' value='english' checked>English<br>

Идеально, это то, что я искал. У вас есть ссылка, где я могу узнать больше о части «метки»?

WeeMan 21.07.2019 22:43

Другие вопросы по теме