Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Повторное выполнение сценария


Автор: micolo 19.10.2009, 20:04
Доброго времени суток!

Столкнулся с неожиданной проблемой. URL на сайте построен через mod_rewrite аля http://site.com/module_name/add_item/ к примеру. Сам сценарий подгружается через диспетчер URL. В add_item перед выполнением основного сценария идет insert в БД и далее через XSLTProcessor идет преобразование и формирование данных. Какого же было моё удивление когда я обнаружил что во время add_item в БД у меня вставляется не одна запись а сразу две записи подряд. Тщательно проверив всю цепочку - методом исключения выяснил что во всём виновата строчка 
Код

// Создание парсера
$proc = new XSLTProcessor ( );

        
// Подключение стиля к парсеру
$proc->importStylesheet ( $xsl );
        
// Обработка парсером исходного XML-документа
self::$xml_output = $proc->transformToXml ( $xml );


а именно самая последняя сточка. Получается что перед конечной трансформацией ещё раз идет обращение к URL вследствии чего повторно вставляется запись в БД. Подскажи почему так проиходит и как этого избежать? Спасибо!

Автор: Ипатьев 19.10.2009, 20:51
а что именно в базу добавляется?

Автор: micolo 19.10.2009, 21:09
Обычный insert со своими значениями, после его вставки по mysql_last_id вытаскиваются его значения которые дальше учавствуют в формировании страницы. Причём дело именно в transformToXml, потомучто когда я коментю эту строчку - данные записываются один раз, как нужно. По идеи туда передаётся только сфомированный XML конетент в котором нет ничего подозрительного.

Автор: solenko 20.10.2009, 08:14
micolo, в $xsl что содержится? Полный url на вашем же хосте? 
var_dump($xsl) + .htaccess запостите сюда

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)