Спустя 1 час, 54 минуты, 24 секунды (16.02.2010 - 12:29) FatCat написал(а):
Цитата (Sergey1974 @ 16.02.2010 - 11:35) |
Полагаю, что без AJAXа тут не обойтись... |
Запросто обойтись. Фтопку аякс.
На странице заказа делаете
<div id="attach"></div>
На странице загрузки скрипт
opener.getElementById('attach').innerHTML += 'отдаваемый код';будет подгружать все что вам нужно на страницу заказа.
Спустя 39 минут, 26 секунд (16.02.2010 - 13:08) Sergey1974 написал(а):
Хм... ща попробую... Спасибо.
Спустя 3 часа, 36 минут, 17 секунд (16.02.2010 - 16:45) Sergey1974 написал(а):
Что-то ничего не понимаю...
Вот код из страницы заказа, открывающий форму аплоадера:
Вот код из аплоадера, который по идее должен обновить див с тегом attach в странице заказа:
Но на практике обновление дива не происходит... функция
Вот код из страницы заказа, открывающий форму аплоадера:
<div id="attach"></div>
<a href="upload.php" target="_blank" onClick="uW = window.open(this.href, '{$lang.LNG_TITLE_UPLOADER}', 'location,width=500,height=200,top=40'); uW.focus(); return false;">{$lang.LNG_ORDER_ADD_FILE}</a>
Вот код из аплоадера, который по идее должен обновить див с тегом attach в странице заказа:
<script type="text/javascript">
function updateOrder(url)
{
opener.getElementById('attach').innerHTML += 'Файл загрузился!'; return true;
}
</script>
<form action="upload.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
<label>
<input name="fileName" type="file" id="fileName" size="50" />
</label>
<label>
<input name="button" type="submit" id="button" onclick="javascript: updateOrder();" value="Обновить заказ" />
</label>
</form>
Но на практике обновление дива не происходит... функция
updateOrder()
вызывается, но ничего не обновляет... Спустя 28 минут, 37 секунд (16.02.2010 - 17:13) FatCat написал(а):
Цитата (Sergey1974 @ 16.02.2010 - 17:45) |
function updateOrder(url) |
Включи показ ошибок джаваскрипт.
Функция ждет передаваемого параметра url, а параметр не передается:
Цитата (Sergey1974 @ 16.02.2010 - 17:45) |
onclick="javascript: updateOrder();" |
Спустя 12 минут, 55 секунд (16.02.2010 - 17:26) Sergey1974 написал(а):
Параметр я убрал... Вот ошибка, которая выпадает:
opener.getElementById is not a function
Спустя 23 минуты, 55 секунд (16.02.2010 - 17:50) Sergey1974 написал(а):
Все, разобрался...
opener.getElementById('attach').innerHTML += 'Файл загрузился!'; return true;
надо писать так:
opener.document.getElementById('attach')...
Спасибо за помощь!
opener.getElementById('attach').innerHTML += 'Файл загрузился!'; return true;
надо писать так:
opener.document.getElementById('attach')...
Спасибо за помощь!
Спустя 3 часа, 46 минут, 2 секунды (16.02.2010 - 21:36) FatCat написал(а):
Цитата (Sergey1974 @ 16.02.2010 - 18:50) |
opener.document.getElementById('attach')... |
О как!
IE6 и краткую конструкцию отрабатывает.
Спасибо, буду иметь в виду, что нужно писать полный синтаксис.
Спустя 21 час, 25 минут, 20 секунд (17.02.2010 - 19:02) Sergey1974 написал(а):
В продолжение... Как сделать, чтобы загруженный файл был удален при незавершении заказа? Ну то есть, юзер открыл форму заказа, приаттачил файл, а тут перезагруз... ну или сам окно взял и закрыл... заказа нет а файл остался на серваке... и как от него избавиться?
Спустя 7 часов, 24 минуты, 54 секунды (18.02.2010 - 02:26) FatCat написал(а):
Цитата (Sergey1974 @ 17.02.2010 - 20:02) |
Как сделать, чтобы загруженный файл был удален при незавершении заказа? |
Самым логичным будет делать и загрузку и оформление заказа на одном сабмите.
Раз все раздельно, значит нужно при оформлении заказов сделать пересчет нужных файлов, а лишние удалить.
Например, если заказы хранятся в бд:
1. Массив имен файлов:
$files = array();
while(false !== ($file = readdir($dir_files)))$files[$file] = 1;
2. В цикле по таблице заказов unset нужные файлы.
3. В массиве останутся ненужные. Удаляем:
foreach($files as $file => $v)unlink($file);
PS: unset($files[".."]) и unset($files["."]) чуть не забыл.
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)