Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Как определить id только что добавленной новости? (http://forum.typo3.ru/showthread.php?t=253)

carlos 06.12.2005 12:52

Как определить id только что добавленной новости?
 
$data = array(
'tt_news' => array(
'NEW_1' => array('pid' => $id, 'hidden' => 0,
'title' => $my_title, 'bodytext' => $my_newsbody,
'datetime' => $my_time,
'category' => ''
)
));
$tce->start($data,array());
$tce->process_datamap();
$id = $tce->substNEWwithIDs['NEW_1'];
echo "new news.id=$id<\\n>";

почему не срабатывает функция substNEWwithIDs?

в случае tt_content и pages все работает

Dutchak Vitaly 06.12.2005 13:45

re: Как определить id только что добавленной новости?
 
$id = mysql_insert_id($GLOBALS['TYPO3_DB']->link);

carlos 08.12.2005 10:22

re: Как определить id только что добавленной новости?
 
mysql_insert_id как ни прискорбно не работает - видимо типовские функции еще что то делают после вставки

пришлось через select max(uid) from tt_news делать - как в старые добрые времена

Konstantin 08.12.2005 10:54

re: Как определить id только что добавленной новости?
 
"пришлось через select max(uid) from tt_news делать - как в старые добрые времена"

Зачем?

в $tce должно быть свойство, хранящее uid последней добавленной записи...

сделай t3lib_div::debug($tce); после добавления и посмотри в текущие свойста.


Pavel Antonov 10.12.2005 13:00

re: Как определить id только что добавленной новости?
 
Первый приведенный код должен правильно работать. Механизм подстановки ID - универсальный, работает с любыми таблицами! Ошибка с чем то другом...

Вот код, который у меня работает:
if (sizeof($data) > 0) {
$tce = $this->getTCE();
$tce->suggestedInsertUids = $suggestedInsertUids;
$tce->reverseOrder = TRUE;
$tce->start($data, array());
$tce->process_datamap();
$subst_ids = $tce->substNEWwithIDs;
}

id возвращаются для люых таблиц.

То что написано у тебя, в принципе, то же самое... (лучше только генериировать ID, как uniqid('NEW') )

Как создается у тебя $tce?
Пробовал ли посмотреть что происходит в tcemain->process_datamap()? (я обычно так делаю.... добавить в ключевых местах парочку debug() )

Дылгеров Ц.В. 12.12.2005 14:09

re: Как определить id только что добавленной новости?
 
Пример создания $tce

Скрипт выдирает данные из старого сайта и вставляет в новый на ТИПО

// Defining circumstances for CLI mode:
define('TYPO3_cliMode', TRUE);

// Defining PATH_thisScript here: Must be the ABSOLUTE path of this script in the right context:
// This will work as long as the script is called by it's absolute path!
define('PATH_thisScript','/usr/local/www/data/мой_сайт/typo3/мой_скрипт.phpsh');

// Include configuration file:
require(dirname(PATH_thisScript).'/conf.php');

// Include init file:
require(dirname(PATH_thisScript).'/'.$BACK_PATH.'init.php');

define('PATH_t3lib','/usr/local/www/data/мой_сайт/power/t3lib/');
require_once (PATH_t3lib.'class.t3lib_div.php');
require_once (PATH_t3lib.'class.t3lib_parsehtml.php'); //чистый код для нового сайта
$parserObject=new t3lib_parsehtml;
require_once (PATH_t3lib.'class.t3lib_tcemain.php');

// вот как создается $tce
$tce = t3lib_div::makeInstance('t3lib_TCEmain');
$tce->stripslashes_values=1;

далее сканирование страниц старого сайта и вставка как указано выше в первом посте


Часовой пояс GMT +4, время: 01:28.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot