Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 06.12.2005, 12:52   #1
carlos
Продвинутый
 
Регистрация: 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 все работает
carlos вне форума   Ответить с цитированием
Старый 06.12.2005, 13:45   #2
Dutchak Vitaly
TYPO3 Infected
 
Регистрация: 29.08.2005
Адрес: Ukraine, Simferopol
Сообщений: 412
Отправить сообщение для Dutchak Vitaly с помощью ICQ Отправить сообщение для Dutchak Vitaly с помощью Skype™
По умолчанию re: Как определить id только что добавленной новости?

$id = mysql_insert_id($GLOBALS['TYPO3_DB']->link);
Dutchak Vitaly вне форума   Ответить с цитированием
Старый 08.12.2005, 10:22   #3
carlos
Продвинутый
 
Регистрация: 03.03.2006
Сообщений: 58
По умолчанию re: Как определить id только что добавленной новости?

mysql_insert_id как ни прискорбно не работает - видимо типовские функции еще что то делают после вставки

пришлось через select max(uid) from tt_news делать - как в старые добрые времена
carlos вне форума   Ответить с цитированием
Старый 08.12.2005, 10:54   #4
Konstantin
Senior Member
 
Регистрация: 27.02.2006
Сообщений: 131
По умолчанию re: Как определить id только что добавленной новости?

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

Зачем?

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

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

Konstantin вне форума   Ответить с цитированием
Старый 10.12.2005, 13:00   #5
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию 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() )
Pavel Antonov вне форума   Ответить с цитированием
Старый 12.12.2005, 14:09   #6
Дылгеров Ц.В.
Senior Member
 
Регистрация: 14.11.2005
Адрес: Улан-Удэ
Сообщений: 158
Отправить сообщение для Дылгеров Ц.В. с помощью ICQ
По умолчанию 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;

далее сканирование страниц старого сайта и вставка как указано выше в первом посте
Дылгеров Ц.В. вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория