Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
06.12.2005, 12:52 | #1 |
Продвинутый
Регистрация: 03.03.2006
Сообщений: 58
|
Как определить 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 все работает |
06.12.2005, 13:45 | #2 |
TYPO3 Infected
|
re: Как определить id только что добавленной новости?
$id = mysql_insert_id($GLOBALS['TYPO3_DB']->link);
|
08.12.2005, 10:22 | #3 |
Продвинутый
Регистрация: 03.03.2006
Сообщений: 58
|
re: Как определить id только что добавленной новости?
mysql_insert_id как ни прискорбно не работает - видимо типовские функции еще что то делают после вставки
пришлось через select max(uid) from tt_news делать - как в старые добрые времена |
08.12.2005, 10:54 | #4 |
Senior Member
Регистрация: 27.02.2006
Сообщений: 131
|
re: Как определить id только что добавленной новости?
"пришлось через select max(uid) from tt_news делать - как в старые добрые времена"
Зачем? в $tce должно быть свойство, хранящее uid последней добавленной записи... сделай t3lib_div::debug($tce); после добавления и посмотри в текущие свойста. |
10.12.2005, 13:00 | #5 |
Senior Member
|
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 | #6 |
Senior Member
|
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; далее сканирование страниц старого сайта и вставка как указано выше в первом посте |