У меня есть база данных для ресторана. Владелец будет добавлять такие категории, как «Пицца», «Десерт» или «Ризотто» (без акцентов или специальных символов) или категории со специальными символами / акцентами, такими как Salată, Pește или Vodkă (румынские символы).
Таблица категорий настроена на принятие специальных символов. Я использовал для этого ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8
.
В панели навигации у меня есть выпадающий список со всеми продуктами (едой и баром).
Для доступа к одной категории я использую GET
, например:
<?php foreach ($categories_bar as $category): ?>
<a class="dropdown-item" href="<?php echo site_url('/bar/'.implode('_',explode(" ",$category['category_name']))); ?>"><?php echo $category['category_name']; ?></a>
<?php endforeach; ?>
. Используя это, URL
будет http://localhost/quartiere/bar/name_of_the_category, если название категории будет иметь 2 или более слов.или http://localhost/quartiere/bar/nameofthecategory, если имя категории будет содержать только одно слово.
Когда пользователь нажимает на категорию, сервер выполнит следующие действия:
- Получить идентификаторкатегории с использованием имени категории (из URL)
- Получить продукты с определенным идентификатором категории
- Отображать их на странице.
Проблема заключается в том, что прикатегория со специальными символами нажата, чтобыбаза данных не будет иметь нормального имени ... она будет выглядеть примерно так (для слова Pălincă) -> P% C4% 83linc% C4% 83.
Странно, потому что в выпадающем списке именаотображается правильно.
Функция, которая должна отображать продукты для каждой категории, такова. Вначале я обращаюсь к процессу взрыва и имплантации, который я выполняю в navbar. При этом у меня будет просто строкакак строка из базы данных:
public function bar_view($name = NULL){
$name_to_pass = implode(' ',explode('_',$name));
$category = $this->products_model->get_category_id($name_to_pass);
$products = $this->products_model->get_bar_prods_by_category($category);
$data['title'] = $name_to_pass;
$data['products'] = $products;
if(empty($data['products'])){
show_404();
}
$this->load->view('templates/header');
$this->load->view('menu/bar_view',$data);
$this->load->view('templates/footer');
}
Чтобы указать:
- В
head
у меня есть <meta charset="utf-8">
- В файле конфигурации у меня есть это
$config['charset'] = 'utf-8';
- В файле базы данных у меня есть
'char_set' => 'utf8'
и 'dbcollat' => 'utf8_general_ci'