"в районе итерации" - в любом удобном для вас месте тела обсуждаемого цикла. итерация это выполнение тела цикла. до объявления цикла - объявляете переменную, внутри цикла - ее инкремент.
Извеняюсь, но столкнулся с такой ошибкой, что если в кнопку вставить любое событие JS, то форма не отправляется, а страница просто обновляется, причем никаких действий не происходит. Код (Text): <input type="submit" <? if( isset( $_POST['createmark'] ) && 'Нанести текст' == $_POST['createmark'] && isset( $_FILES['imgfile'] ) ) { ?>id="submitos" value="Ждите 30 секунд" disabled="true" <? } ?> name="createmark" id="createmark" value="Нанести текст" onclick="JavaScript:this.disabled=true; document.imageUpload.submit(); return false;"/>
ладно. при нажатии кнопки - она должна деактивироваться, чтобы избежать повторной отправки. Дело в том что она дективируется, но форма не отправляется и ничего не происходит, а страница просто обновляется.
и все правильно работает. вы просто не правильно делаете. пхп выполняется на стороне сервера. вы наверное об этом не знали. в браузер выдается результат работы кода, а самого кода не выдается. но вы от этом не догадывались написав такую конструкцию. и когда будет удовлетворено условие в пхп - браузер получит удивительный фарш, в котором у элемента будет два уникальных идентификатора и два значения. онклик. он как бы будет джаваскриптом выполняться и поэтому не нужно писать протокол. теперь давайте по логике действия пробежимся. на нажатии сделать кнопку неактивной - допустим выполнить отправку imageUpload - а браузер видит форму? возвратить ложь = не выполнять стандартного действия элемента для клика. допустим. как это будет работать? кнопка станет неактивной, форма (если браузер ее видит) отправится, пхп нарисует ужасную конструкцию и вернет страницу в которой кнопка будет неактивной. все логично. что я делаю не так?
onClick="this.disabled=true; document.imageUpload.submit();" первое нажатие заблокирует кнопку и отправит форму. если форма "длинная" то пользователь будет видеть заблокированную кнопку. у нее не существует onClick и она НЕ отправляет форму, потому что она заблокирована. работает. что я делаю не так?
хорошо. раз у меня работает и вы не можете мне помочь сломать, давайте развернем. что вы делаете не так?
Не знаю, вроде все правильно прописано, имена форм совпадают..... Код (Text): <form name="imageUpload" id="imageUpload" action="index.php" method="post" enctype="multipart/form-data"> <div style="max-width: 800px;"> <table width="100%" id="table1" style="left: 0;" cellpadding="0" cellspacing="0" padding="0"><tbody><tr> <td width="25%"> Фотографии <div style="font-size: 0.7em;">До 30 файлов</div> </td> <td> <input type="file" name="imgfile[]" multiple id="imgfile-"> </td> </tr><tr> <td width="25%"> Текст </td> <td> <input style="width: 457px" type="text" name="usertext" value="© "><select style="margin-left: 20px; width: 100px;" name="usertextcolor" size="1"> <option value="white">Белый</option> <option value="black">Черный</option> </select> </td> </tr> <tr> <td colspan="2" style="padding-bottom: 25px; text-align:center" width="100%"> <input type="submit" <? if( isset( $_POST['createmark'] ) && 'Нанести текст' == $_POST['createmark'] && isset( $_FILES['imgfile'] ) ) { ?>id="submitos" value="Ждите 30 секунд" disabled="true" <? } ?> onClick="this.disabled=true; document.imageUpload.submit();" name="createmark" id="createmark" value="Нанести текст" /> </td> </tr></tbody></table> </div> </fieldset> <h3></h3> </form> <? $ip=md5($_SERVER['REMOTE_ADDR']); if( isset( $_POST['createmark'] ) && 'Нанести текст' == $_POST['createmark'] && isset( $_FILES['imgfile'] ) ) { ?> <script type="text/javascript"> setTimeout(function(){ document.getElementById('submitos').value = 'Нанести текст'; document.getElementById('submitos').disabled = false; }, 30 * 1000); </script> <div id="ddarch" style="margin-left: 15px;"><a href="<? echo 'uploads/photos_'.date('hi').$ip.'.zip'; ?>" style="border-bottom-style:dashed;">Сохранить все фотографии в ЗИП-архиве</a></div> <? } ?> <?php if( isset( $_POST['createmark'] ) && 'Нанести текст' == $_POST['createmark'] && isset( $_FILES['imgfile'] ) ) { $processed_images = ''; for( $i = 0; $i < $upload_files_cnt; $i++ ) { //Если с картинкой все ок. echo ""; // имя оригинального файла, ... $name = isset( $_FILES['imgfile']['name'][ $i ] ) ? trim( $_FILES['imgfile']['name'][ $i ] ) : ''; // ... тип, ... $mime = isset( $_FILES['imgfile']['type'][ $i ] ) ? trim( $_FILES['imgfile']['type'][ $i ] ) : ''; // ... размер, ... $size = isset( $_FILES['imgfile']['size'][ $i ] ) ? doubleval( $_FILES['imgfile']['size'][ $i ] ) : 0; // ... и путь к временной копии загруженного файла $temp = isset( $_FILES['imgfile']['tmp_name'][ $i ] ) ? trim( $_FILES['imgfile']['tmp_name'][ $i ] ) : ''; // путь, куда переместим файл $temp2 = $upload_path . $name; // путь к обработанному файлу $new_name = $upload_path .time().$i. '.jpg'; if( strlen( $name ) && in_array( $mime, $valid_formats ) && $size <= $file_size_limit ) { // сюда попадаем, если файл в текущей итерации прошел проверку имени, типа и размера if( @ move_uploaded_file( $temp, $temp2 ) ) { $ip=md5($_SERVER['REMOTE_ADDR']); // сюда попадаем, если файл успешно перемещен из временного хранилища в $upload_path // собака перед именем функции - для подавления возможных ошибок $zip = new ZipArchive(); //Создаём объект для работы с ZIP-архивами $zip->open('uploads/photos_'.date('hi').$ip.'.zip', ZIPARCHIVE::CREATE); //Открываем (создаём) архив // тут вызов watermark_text( $temp2, $new_name ) // добавляем водяной знак: watermark_text() - для текста, watermark_image() - для изображения if(watermark_text($temp2, $new_name)) if(!empty($new_name)){ $processed_images = $i; $zip->addFile($new_name, 'photo_'.$i.'.jpg'); $zip->close(); //Завершаем работу с архивом echo '<img id="img-'.$i.'" style="max-width:785px; padding: 15;" src="'.$new_name.'" />'; } else echo '<h3>Не получилось!</h3>'; } } else { //echo 'Максимальный размер файла 17МБ, поддерживаемые форматы JPEG, BMP, PNG.'; } } // for( i = 0 ... } else // if( isset && submit ) .. else .. { ?> <?php } // if( isset && submit ) .. else .. ?> <? if($processed_images<=0){print'<style>#ddarch{display:none;}</style>';} ?>
вы когда выкладываете код - будьте любезны информировать меня об окружении. я вот вижу помимо каши, логика которой стремиться к отрицательной бесконечности, еще и не объявленные объекты. я написал как делать не надо - вы сделали ровно наоборот. вы не питаетесь разобраться. вы добавляете функционал в алгоритм методом высоконаучного тыка. "вроде как это сюда надо". а потом неделю сидите на форуме ждете когда за вас напишут нормальную программу. сформулируйте всю желаемую логику скрипта. я хочу знать к каким приправам в этой каше еще готовиться. Добавлено спустя 35 минут 25 секунд: я выполнил за вас вашу работу - я добился работоспособности вашего скрипта. есть еще куча косяков, но это связано с отсутствием логики в алгоритме. но поверхностную задачу - загрузить несколько изображений, обработать, показать, дать скачать - я выполнил.
вы не поняли. я вот сейчас посидел и написал нормальный скрипт. но вам его просто так не буду давать. потому что вы тогда ничему не научитесь. сахар в чай кладут а не чай в сахарницу наливают. пока таких очевидных для других, но логичных для вас ляпов будет много - скрипт не допишется.