Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка одноименных форм
 
 автор: AN   (22.07.2008 в 04:34)   письмо автору
 
 

Вот есть принцип загрузки нескольких файлов

<input name="userfile[]" type="file">
<input name="userfile[]" type="file">


а как загрузить такой вариант чтобы работал

<input name="userfile[]" type="file"><input type="text" name="Note[]" value="">
<input name="userfile[]" type="file"><input type="text" name="Note[]" value="">

учитывая что переменные предопределяются
$Note=(SqlSafeStr(@$_POST['Note']));
где SqlSafeStr функция очистки от ненужных символов

в общем задача такова, что нужно грузить скажем 10 картинок и одновременно 10 описаний ???

помогите!
спасибо!

   
 
 автор: sim5   (22.07.2008 в 05:00)   письмо автору
 
   для: AN   (22.07.2008 в 04:34)
 

Если поля userfile и Note связаны, например, при их динамическом добавлении/удалении исключается ситуация, когда полей userfile будет к примеру 4, а полей Note 5, то просто - элементу массива userfile[0] соответсвует описание элемента массива Note[0], и т.д..

   
 
 автор: AN   (22.07.2008 в 05:12)   письмо автору
 
   для: sim5   (22.07.2008 в 05:00)
 

ну да, то есть картинка, и рядом описание, вот у меня на пример 10 форм добавили 5 картинок - добавилось 2 описаний в базу данных ...
вот картинки добавляются, я привязал название файлов к айдишнику записи, а текст не добавляется

   
 
 автор: sim5   (22.07.2008 в 05:31)   письмо автору
 
   для: AN   (22.07.2008 в 05:12)
 

10 форм добавили 5 картинок! Может быть 10 полей?
1. Чтобы исключить "пустое", зайдите в раздел HTML, и найдите скрипт динамического добавления/удаления полей в форме. Есть там примеры этого. Вам только нужно добавлять/удалять сразу по два поля - одно выбора файла, и текстовое для его описания.
2. Если у вас в таблице, например, запись типа - id, image, descript, то какая проблема, получая массив $_FILES['name'], записывать полученное имя файла (или определенное вами) в поле image, а значение массива $_POST['note'] с тем же индексом, что и у $_FILES['name'], записывать в поле descript? Запись, естественно производить только при успешной загрузке файла. Если файл загружен, но нет описания к нему, то тут уж вам решать - является ли это допустимым или нет, если да, то поле desript будет пустым, если нет, возвращать форму пользователю с сообщением.

   
 
 автор: AN   (22.07.2008 в 14:12)   письмо автору
 
   для: sim5   (22.07.2008 в 05:31)
 

а где можно посмотреть пару нормальных примеров решения?
то есть задача передавать картинки с описанием к ним?

   
 
 автор: sim5   (22.07.2008 в 14:38)   письмо автору
 
   для: AN   (22.07.2008 в 14:12)
 

Вы такой пример вполне сами можете сделать:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file[]"><br>
<input type="text" name="desc[]"><br>
<input type="file" name="file[]"><br>
<input type="text" name="desc[]"><br>
<input type="file" name="file[]"><br>
<input type="text" name="desc[]"><br>
<input type="submit" value="Send">
</form>
<?
print "<pre>";
print_r($_FILES);
print 
"</pre>";
print 
"<pre>";
print_r($_POST['desc']);
print 
"</pre>";
?>

Обратите внимание на индексы массивов.

   
 
 автор: AN   (22.07.2008 в 15:12)   письмо автору
 
   для: sim5   (22.07.2008 в 14:38)
 

а если у меня отключен глобалз и я предопределяю все переменные типа
$Note=(SqlSafeStr(@$_POST['Note']));
как мне быть с file[] и desc[] как правильно это можно записать?

   
 
 автор: sim5   (22.07.2008 в 16:03)   письмо автору
 
   для: AN   (22.07.2008 в 15:12)
 

Если register_globals отключена, то это очень хорошо, потому вы и обращаетесь как $_POST['Note'] и т.п.. $Note=(SqlSafeStr(@$_POST['Note'])) - это никакое не предопределение, а определение переменной $Note значения поля Note формы, переданной методом POST. Значение обрабатывается с помощью пользовательской функции SqlSafeStr(), которая обрабатывает строку. Как поступить? Первое, это выбросить "собачку" из кода (@). Второе, в цикле, в котором производить проверку загруженных файлов, вызывать вашу пользовательскую функцию (если она вам нужна):
$Note = SqlSafeStr($_POST['Note'][$i]);
где $i (текущая итерация цикла) определяет, описание какого файла вы получаете, проверяете и записываете в базу. И если число полей file формы равно числу полей описаний, то этого вполне достаточно.

   
 
 автор: AN   (23.07.2008 в 12:39)   письмо автору
 
   для: sim5   (22.07.2008 в 16:03)
 

спасибо, получилось, работает.
можен быть подскажете ссылку где можно почитать инфу по динамически появляющимся формам при добавлении? то есть видима одна форма с кнопкой добавить, если файл для закачки выбран, появляется другая, и т.д. ?

   
 
 автор: sim5   (23.07.2008 в 13:29)   письмо автору
 
   для: AN   (23.07.2008 в 12:39)
 

Да что такое! Не форма, а поле формы! Вам что для загрузки каждого файла требуется новая форма? В раздел HTML, там есть примеры динамического добавления/удаления элементов формы. Добавляется кночкой +, удаляется -. Но можно и по событию onchange элемента type="file" устроить добавление. В общем - в HTML-раздел.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования