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


Автор: iSummer 28.8.2008, 14:38
 Посоветуйте как такое сделать? (может подходящий скрипт или линк)

 Есть хтмл-форма (пусть form.htm) по загрузке файлов на серв. Предположим я загрузил этой формой файлы. Сработал php-скрипт по оценке и закачке файлов в нужную папку. Если с файлами всё ок - отработав php-скрипт переносит нас на заданную страницу (например index.htm). Но если часть файлов при загрузке оказалась неподходящего формата -  то после обработки скрипта не надо переходить на другие страницы а на этойже хтмл-странице (form.htm -  отправка файлов) - вывести надписи над тегами (inputs:file) что файл не соответствует.

 Как я понимаю тут надо использовать технологию Ajax. Есть какие-нибудь несложные примеры которые могут помочь как выполнить пхп-скрипт и не рефрешив исходную хтмл-страницу в нужные её места занести уведомления которые пхп-скрипт организовал?

Автор: bars80080 28.8.2008, 16:21
не нужно никакого аякса

в случае неправильных форматов инклудишь форму, а не страницу с результами, ну и дд\обавляешь в неё информацию о неудаче

Код

if(  ... неправильный тип ...  ) { $error1 = true; }

...

if(!empty($error1)) include('form.php');
else include('result.php');

form.php:

Код

...
if(!empty($error1)) echo 'неправильный тип файла';
echo '<input type="file" />';
...

Автор: MoLeX 28.8.2008, 17:48

M
MoLeX
Модератор: данная тема точно не в профи

Автор: iSummer 31.8.2008, 08:52
Цитата(bars80080 @ 28.8.2008,  16:21)
не нужно никакого аякса

в случае неправильных форматов инклудишь форму, а не страницу с результами, ну и дд\обавляешь в неё информацию о неудаче

Код

if(  ... неправильный тип ...  ) { $error1 = true; }

...

if(!empty($error1)) include('form.php');
else include('result.php');

form.php:

Код

...
if(!empty($error1)) echo 'неправильный тип файла';
echo '<input type="file" />';
...

 Чёто ничего не понял) Возможно говорим о разном..

 Распишу подробнее. Пусть страница sendform.php - страница по отправке контента с файлами с тегами input type=file (множество) + теги input=text для заголовка контента + текста.  при отправки формы которой срабатывает скрипт upload.php (form method=post action='upload.php').  В этом скрипте идёт анализ и закачка корректных файлов, описания темы, сожержания её. так вот - если какойто файл не удовлетворяет требованиям (размер файла, или тип) -> както реализовать удобный диалог по повторной закачке непринятых файлов.  - Глупо было бы вывести заново страницу с новыми input=file когда уже стёрты следы того что вводил и корректо ввёл. С помощью Ajax всё красиво делается - страница sendform.php не перегружается - данные отправляются, срабатывает скрипт upload.php и над каждым тегом этой страницы sendform.php спокойно выводятся надписи - "загружено", "файл некорректного формата". Тоесть прям тутже видешь что вводил и что ввелось (в этой же форме и без рефрешей). 

Вот только к сожалению я с ajax мало знаком((

Автор: bars80080 31.8.2008, 10:03
Цитата(iSummer @  31.8.2008,  08:52 Найти цитируемый пост)
С помощью Ajax всё красиво делается 

с помощью ajax всё красиво делается, если структура имеет стройную конфигурацию.


Цитата(iSummer @  31.8.2008,  08:52 Найти цитируемый пост)
Глупо было бы вывести заново страницу с новыми input=file когда уже стёрты следы того что вводил и корректо ввёл
значит надо сделать реализацию такой формы, которая бы показывала все введённые значения

тут ведь ещё какая фишка, ты ведь загружаешь не наобум просто в какой-то каталог. у тебя поля в данных, допустим несколько input:file для закачки картинок в галлерею пользователя, под него создаётся скажем папка. и при загрузке в БД или куда там прописываются данные. при повторной загрузке надо как-то указать, что этот дозагружаемый файл будет относится именно к этому пользователю и откоректировать запись о нём

дабы избежать всяких сложностей, обычно всё делается так:
создаётся один файл в котором будет всё сразу. в нём делаются блоки по принципу:
Код

if(!empty($_REQUEST['stage'])) $stage = $_REQUEST['stage']; else $stage = '';

if($stage == 1) {

// скрипт обработки и закачки файлов
$sql = 'insert into table ...';

// если всё хорошо, то производим подключение страницы с результатами
if( ... ошибок нет ... ) {
include('result.php');
// или перенаправляем куда следует
header('Location: result.html');
}

// иначе если происходят ошибки, то вновь вызываем форму с данными, может пользователь хочет что-то подправить
else {

$stage = '';

}

}

if(empty($stage)) {

// форма для занесения коррекции данных
// все переменные $name и другие определяются в первом блоке при обработке данных
// также мы можем вывести все нужные сообщения об ошибках, которые накопили по результатам действия первого блока

?>
<form method="post">
your name: <input name="name" value="$name" />
your foto: <input type="file" name="foto" />
<input type="hidden" name="stage" value="1" />
<input type="submit" value="push" />
</form>

<?php

}
примерно так

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

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