Вы не зашли.
Страницы 1
Здравствуйте! Пытаюсь загрузить новости в бд с помощью php, новости в бд сохраняются и в админке появляются, но, во вкладке Дополнительно(где доп поля), ничего не отображается, а начинает отображаться после того как я нажму Сохранить в редактировании новости. Своим sql запросом доп поля мне нужные тоже записываю и как нужно, но они не отображаются в итоге на сайте и в админке, а если я еще раз сохраняю через админку то мои доп поля не сохраняются с sql запроса, а только если после сохранения еще раз введу их вручную и нажми Сохранить. Помогите пожалуйста исправить проблему с загрузкой инфы в доп поля, заранее спасибо!
Мой код:
foreach ($news->channel->item as $item)
{
preg_match('@src="([^"]+)"@', $item->description, $match);
$parts = explode('<font size="-1">', $item->description);
$feeds[$i]['title'] = (string) $item->title;
$feeds[$i]['link'] = (string) $item->link;
$feeds[$i]['image'] = $match[1];
$feeds[$i]['site_title'] = strip_tags($parts[1]);
$feeds[$i]['story'] = strip_tags($parts[2]);
$links = $feeds[$i]['link'];
$pudate= $items[$i]['pubdate'];
$besc = $feeds[$i]['story'];
$titled = $feeds[$i]['title'];
$time = 1485277444;
$image = $feeds[$i]['image'];
$titlesite = $feeds[$i]['site_title'];
$rand=rand();
$lenlink = mb_strlen($links);
$lenimg = mb_strlen($image);
$lensite = mb_strlen($titlesite);
$xfield = <<<HTML
SER|a:3:{s:8:"newslink";s:{$lenlink}:"{$links}";s:9:"imagenews";s:{$lenlink}:"{$image}";s:9:"sitetitle";s:{$lensite}:"{$titlesite}";}
HTML;
$sql = "INSERT INTO `news`(`id`, `postdate`, `author`, `author_id`, `title`, `content`, `alt_name`, `mainpage`, `approve`, `views`, `favorite`, `pinned`, `catpinned`, `flags`, `num_files`, `num_images`, `editdate`, `catid`, `description`, `keywords`, `rating`, `votes`, `similar_status`, `allow_com`, `com`, `nsched_activate`, `nsched_deactivate`, `xfields`, `xfields_city`, `xfields_phone`, `xfields_address`, `xfields_datestart`, `xfields_dateend`, `xfields_scheduletime`, `xfields_contactname`, `xfields_priceyp`, `xfields_opennow`, `xfields_imgnews`, `xfields_price`, `xfields_feature`, `xfields_newslink`, `xfields_imagenews`, `xfields_sitetitle`) VALUES ('','$time','admin','1','$titled','$besc','$rand','1','1','0','1','1','1','2','0','0','1485277444','1','','','0','0','0','0','0','','','$xfield','','','','','','','','','','','','','$links', '$image', '$titlesite')";
// connect to the database server
$conn = mysql_connect("localhost", "userdb", "passdb");
// select the database to connect to
mysql_select_db("db", $conn);
$result = mysql_query($sql, $conn);
$i++;
}
Изменено dreamms (2017-02-04 21:05:10)
Не в сети
Проверять все ваши решения нет возможности. По всей видимости ошибка где-то в сериализации данных для поля xfields и/или в экранировании.
Если вы пишите код внутри плагина, то:
1) запросы к БД делаются через объект класса mysql/_mysqli, который находится в глобальной переменной $mysql, в данном случае для insert'a/update'a есть метод query. Префикс таблиц задается константой prefix, экранирование данных в поле идет через функцию db_squote.
2) для сериализации доп.полей xfields используется функция xf_encode, которая принимает на вход массив, ключи - названия полей, значения - значения полей.
Пример:
$mysql->query("update " . prefix . "_news set xfields = " . db_squote(xf_encode($xdata)) . " where id = " . db_squote($newsID));
Не в сети
Проверять все ваши решения нет возможности. По всей видимости ошибка где-то в сериализации данных для поля xfields и/или в экранировании.
Если вы пишите код внутри плагина, то:
1) запросы к БД делаются через объект класса mysql/_mysqli, который находится в глобальной переменной $mysql, в данном случае для insert'a/update'a есть метод query. Префикс таблиц задается константой prefix, экранирование данных в поле идет через функцию db_squote.
2) для сериализации доп.полей xfields используется функция xf_encode, которая принимает на вход массив, ключи - названия полей, значения - значения полей.Пример:
$mysql->query("update " . prefix . "_news set xfields = " . db_squote(xf_encode($xdata)) . " where id = " . db_squote($newsID));
Спасибо, а если без плагина то не выйдет? я заношу данные в поле xfields с переменной $xfield , я там сделал ручной вывод кол. строк и т.д, но не помогает это...
Не в сети
Страницы 1