|
|
30.09.2015, 21:52
|
|
Muerto
Алексей Виноградов-фон Шлиппе
Зарегистрирован: 2006-09-14
Сообщений: 37
|
Для работы фильтра со множественным выбором, я собираю его в поле tags товара. В добавление/изменение объекта захардкорил такой вот код:
---
Selebrations - поле типа множественный выбор (чекбоксы) с привязанным списком celebration
tags - поле типа строка (формат теги)
---
<?
$nc_core = nc_Core::get_object();
$var = '';
$tags = '';
$nc_core->db->get_var("select `Selebrations` from `Message521` where `Message_ID`=" + $message);
$arr = $nc_core->db->last_result;
print("<script>console.log('arr = " + $arr + "');</script>";
$arr = explode(',',$arr);
foreach ($arr as $value) {
if ($value!='') {
$nc_core->db->get_var("select `celebration_Name` from `Classificator_celebration` where `celebration_ID`=" + $value);
$var = $nc_core->db->last_result;
$tags = $tags + $var + ',';
}
}
$nc_core->db->query("UPDATE `Message521` set tags='" + $tags + "' where `Message_ID`=" + $message);
?>
Пэхер я никакой и в мускуле шарю весьма и весьма посредственно, но, на мой взгляд, всё написано правильно.Все запросы к базе с подставленными значениями исполняются правильно. Но, в итоге, ничего в базу не записывается после изменения объекта. %( Кто-нибудь может мне объяснить где я накосячил?
Nadie hablara de nosotras cuando hayamos muerto...
|
|
|
01.10.2015, 13:20
|
|
Muerto
Алексей Виноградов-фон Шлиппе
Зарегистрирован: 2006-09-14
Сообщений: 37
|
Как любезно отметила техподдержка в РНР строки клеют через точку. %) Затупил я совсем с JSом.
Изменил:
<?
//$nc_tags->update_message($calalogue,$sub, $cc, $classID, $message);
$nc_core = nc_Core::get_object();
$var = '';
$tags = '';
$nc_core->db->get_var("select `Selebrations` from `Message521` where `Message_ID`=".$message);
$arr = $nc_core->db->last_result;
$arr = explode(',',$arr);
foreach ($arr as $value) {
if ($value!='') {
$nc_core->db->get_var("select `celebration_Name` from `Classificator_celebration` where `celebration_ID`=".$value);
$var = $nc_core->db->last_result;
$tags = $tags.$var.',';
}
}
$tags = substr($tags, 0, -1);
$nc_core->db->query("UPDATE `Message521` set tags='".$tags."' where `Message_ID`=".$message);
?>
но всё равно не работает. %(
Nadie hablara de nosotras cuando hayamos muerto...
|
|
|
06.10.2015, 09:32
|
|
Долгий Андрей
Зарегистрирован: 2015-09-10
Сообщений: 8
|
У вас сильно избыточный код, попробуйте вот этот:
Код:<?
$tags = $db->get_var("SELECT GROUP_CONCAT(`celebration_Name`) FROM `Classificator_celebration` WHERE `celebration_ID` IN (".implode(',', $f_Selebrations).")");
$db->query("UPDATE `Message".$classID."` SET tags = '".mysql_real_escape_string($tags)."' WHERE `Message_ID` = ".$message);
?>
Дергать данные из бд нет никакой нужды, в действии после изменения/добавления объекта все поля затронутого объекта хранятся в обычных переменных вида $f_имяполя. В данном случае в массиве $f_Selebrations будут все айдишники выбранных в мультиселекте опций.
Если не хотите, чтобы при пустом мультиселекте старое значение затиралось - добавьте во второй строчке проверку !empty($tags)
|
|
|
06.10.2015, 18:14
|
|
Muerto
Алексей Виноградов-фон Шлиппе
Зарегистрирован: 2006-09-14
Сообщений: 37
|
Не срабатывает, Андрей. Точнее, по идее, должен срабатывать, но не работает. Поддержка ищет где баг.
Nadie hablara de nosotras cuando hayamos muerto...
|
|
|
29.10.2015, 21:43
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Алексей, ну а вы посмотрите, какой из запросов не срабатывает - первый или второй?
|