Кирилл Сапронов: да, странно. Получается, что сейчас в БД записался текст в cp1251 что ли..
Я бы на вашем месте попробовала бы создать тестовый php скрипт без всякого html, в нем подключиться к базе, сделать селект на выборку значения из таблицы БД, вывести его через echo и посмотреть, что вывелось - вдруг в основном скрипте все-таки идет какая-то обработка строковыми функциями.
У меня когда-то давно была похожая ситуация, проблема была именно в неиспользовании mbstring.
Также для теста можно попробовать создать тестовую БД в utf на локальном компе и посмотреть, как тестовый скрипт работает с ней.
Кирилл Сапронов: Попроуйте еще закомментировать строки
$mysqli->query("SET NAMES utf-8");
mysqli_set_charset($mysqli,'utf-8');
Оставьте только
$mysqli->set_charset('utf8');
Итого у нас сейчас получается: БД и таблицы в utf-8, кодировка соединения установлена корректно, в .htaccess прописан AddDefaultCharset UTF-8, в html тоже прописана кодировка utf, в php прописано header('Content-type: text/html; charset=utf-8');, все скрипты в кодировке utf без BOM, браузер опредеяет автоматически кодировку страницы, как юникод, но на страницу все выводится в ромбах?
Кирилл Сапронов: Тогда, как правильно говорит Ankhena W, проверьте кодировку БД, таблиц в ней + в пхпмайадмин есть такой параметр, как "Сопоставление соединения с MySQL" (прям на вкладке Сервер: localhost, или какой у вас).
Кирилл Сапронов: Во-первых, проверьте, какую кодировку определяет браузер (например, в ФФ меню Вид -> Кодировка текста).
Во-вторых, попробуйте в phpmyadmin вручную изменить содержимое поля, вбив туда какой-нибудь текст в с буквой "И" и посмотрите, как он будет выводиться в html. Вообще, не должно в БД кракозябрами показываться, возможно все-таки проблема при записи текста в БД.
Кирилл Сапронов: И еще - текст перед выводом не обрабатывается никакими php-функциями, типа substr? Если да, то попробуйте использовать mb_ версии этих функций.
Кирилл Сапронов: правильно я понимаю, что в БД все данные корректные, а ромб со знаком вопроса появляется только при выводе в html?
В php-скрипте пробовали header('Content-type: text/html; charset=utf-8'); писать?
Максим: у меня так работает:
function removeUniqueValues(elements)
{
var newElements = [];
for(var i = 0; i < elements.length; i++) {
var cnt = 0;
for (var j = 0; j < elements.length; j++) {
if(elements[j] == elements[i]) {
cnt++;
}
}
echo $form->dropDownList($model, 'country_id', $list, array('empty' => 'Выбор страны')); -
выводит html-код select с опциями из массива $list (это обычный php-массив, ключ-значение), в каждой опции value="ключ из массива", innerHtml (т.е. то значение, которое показывается в выпадающем списке) = значение из массива.
Т.е. сам массив country_id => country_name - это $list, а $form->dropDownList выводит именно код сгенерированного select с опциями.
xmoonlight: не за что! Но, если у вас есть модель Delete.php, то это уже неправильная архитектура. Почитайте еще про MVC, если уж решили написать свой фреймворк.
Василий Тёмный: не очень поняла, как именно вам нужно вывести название страны, поясните поподробнее, пожалуйста. Если нужен выбор страны в форме добавления/редактирования, то нужно использовать именно выпадающий список.
xmoonlight: да, их очень удобно использовать. Посмотрите также в сторону CMS на Yii - Yupe (https://yupe.ru/), там много всего есть, если разобраться, то очень удобно с ней работать, кастомизируя под себя.
Ну или сразу изучайте Yii2, чтобы потом не переучиваться)