В общем к ситуации. Все по порядку.
Есть БД в ней хранится значение < B >привет< /B >, т.е. теги и внутри текст. Это значение я вытягиваю из БД и закидываю в сессию, по этому значению я потом вытаскиваю из БД просмотренные товары.
Код сессии:
if (!isset($_SESSION['shop_history'])){
$_SESSION['shop_history'] = array();
}elseif(isset($row['name'])){ // проверяю на существование название товара
if (!in_array($row['name'], $_SESSION['shop_history'])){
$_SESSION['shop_history'][] = $row['name'];
}
}
Дальше я на странице вывода, проверяю на пустоту сессию и если она не пустая, то вывожу товары по названию, как я уже упоминал.
Вывожу следующим образом
foreach ( $_SESSION['shop_history'] as $val ){
$smotr = q(" SELECT name, imglinkproduct, oldprice, newprice FROM `table_tovarov_obzor` WHERE `name` = '".$val."' LIMIT 1");
if (mysqli_num_rows($smotr) > 0) {
$smotr = mysqli_fetch_assoc($smotr);
$smotr = hc($smotr);
// и html вывод
}
}
q - функция запроса к БД
hc - функция обработки спецсимволов
У меня не получается следующее, когда в сессии нормальные названия, допустим САМОЛЕТ, то без проблем товар с таким названием вытягивается из БД и выводится, но если название будет < b >>>Самолет< i > или что то подобное то запрос не проходит, хотя товар с таким названием есть.
Если в запрос
$smotr = q(" SELECT name, imglinkproduct, oldprice, newprice FROM `table_tovarov_obzor` WHERE `name` = '".$val."' LIMIT 1");вместо $val вставить < b >>>Самолет< i >, то запрос тоже проходит нормально, с чем связанно то что, когда в запросе стоит $val и как все таки сделать не понимаю, подскажите пожалуйста
Не знаю нужно это или нет, но все таки
$row['name'] в сессию попадает также обработанная от спецсимволов
:(