Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие файла после его создания 
V
    Опции темы
griker
Дата 29.11.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MDMA
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.7.2006
Где: Tallinn

Репутация: 2
Всего: 8



Здравствуйте, я столкнулся со следующей проблемой:

Есть форма с двумя полями: для имени файла и для содержимого данного файла и соответсвтенно кнопка для обработки формы. В обработчике создаётся файл с именем и содержимым соответсвущими вводимым в полях формы

Задача заключается в том чтобы после создания файла на этой же странице обработчика сразуже открывлся созданный файл

Вот код обработчика:
Код

<?php
  if(empty($_POST['name']))
      {
        echo "<div style='color: red'>*Не указано имя файла</div><br>";
        include("create.html");
      }
  elseif(empty($_POST['textarea']))
      {
        echo "<div style='color: red'>*Содержимое файла отсутсвует</div><br>";
        include("create.html");
      }
  else
      {
        $fh=fopen($_POST['name'], "a");
        fwrite($fh, $_POST['textarea']);
        fclose($fh);
      }
?>


Это сообщение отредактировал(а) griker - 29.11.2006, 15:34


--------------------
I don't respect police
PM MAIL   Вверх
NightmareZ
Дата 29.11.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 2
Всего: 13



Что значит "на этой же странице обработчика сразуже открывлся созданный файл"?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
griker
Дата 29.11.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MDMA
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.7.2006
Где: Tallinn

Репутация: 2
Всего: 8



NightmareZ, при нажатии на кнопку - содержимое формы отправляется обработчику формы, соответсенно открывается новый файл(обработчик) записывающий данный в файл. После записи мне сразуже нужно открыть созданный файл в этом же окне smile 


--------------------
I don't respect police
PM MAIL   Вверх
NightmareZ
Дата 29.11.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 2
Всего: 13



Цитата(griker @  29.11.2006,  15:53 Найти цитируемый пост)
NightmareZ, при нажатии на кнопку - содержимое формы отправляется обработчику формы, соответсенно открывается новый файл(обработчик) записывающий данный в файл. После записи мне сразуже нужно открыть созданный файл в этом же окне  smile  

Если без перезагрузки страницы, то, например, вот можно заюзать ajax.
Я б написал так (сопру часть кода из соседнего поста smile http://forum.vingrad.ru/topic-120992.html ):
Код

var reqResultsId = new Array();
var req = new Array();

function onReadyStateChange()
{
    if (req.length > 0)
    {
        var i;
        for (i = 0; i < req.length; i++)
            if (req[i])
                if ((req[i].readyState == 4) && (req[i].status == 200))
                {
                    if (reqResultsId[i])
                    {
                        reqResultsId[i].innerHTML = req[i].responseText;
                        req[i] = false;
                        reqResultsId[i] = false;
                    }
                }
    }
}

function createReq()
{
    var newReq = false;

    try
    {
        newReq = new XMLHttpRequest();
    }
    catch(e)
    {
        try
        {
            newReq = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch(e1)
        {
            try
            {
                newReq = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch(e2)
            {
             newReq = false;
            }
        }
    }

    return newReq;
}

function FindAndDelActive(resultId)
{
    if (req.length > 0)
        for (i = 0; i < req.length; i++)
            if (reqResultsId[i] == resultId)
            {
                req[i].abort();
                req[i] = false;
                reqResultsId[i] = false;
            }
}

function newRequest(serv, data, resultId)
{
    var reqId = 0;

    FindAndDelActive();

    if (req.length > 0)
    {
        var i;
        for (i = 0; i < req.length; i++)
            if (req[i] === false)
            {
                reqId = i;
                break;
            }

        if (reqId == 0)
            reqId = req.length;
    }

    req[reqId] = createReq();

    if (req[reqId])
    {
        reqResultsId[reqId] = resultId;
        req[reqId].open('POST', serv, true);
        req[reqId].onreadystatechange = onReadyStateChange;
        req[reqId].setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1251");
        req[reqId].send(data);
    }
}

function SendMe()
{
  var resId = document.getElementById("mypage");
  resId.innerHTML = "Загрузка....";
  newRequest("myscript.php", "name=" + document.getElementById("name").value + "&textarea=" + document.getElementById("textarea").value, resId);
}

Это будет у нас менеджер запросов.
Далее, допустим, страничка будет выглядеть вот так:
Код

<div id="mypage">
<input type="text" id="name"><br>
<input type="text" id="textarea"><br>
<input type="button" onclick="SendMe();">
</div>


А в php код добавляем вот чего: 
Код

<?php
  if(empty($_POST['name']))
      {
        echo "<div style='color: red'>*Не указано имя файла</div><br>";
        include("create.html");
      }
  elseif(empty($_POST['textarea']))
      {
        echo "<div style='color: red'>*Содержимое файла отсутсвует</div><br>";
        include("create.html");
      }
  else
      {
        $fh=fopen($_POST['name'], "a");
        fwrite($fh, $_POST['textarea']);
        fclose($fh);

        $x = file('a.txt');
    foreach($x as $value)
        echo($value.'<br>');
      }
?>


Надеюсь, ошибок не наделал smile

Добавлено @ 16:15 
Если же забить, что страница перезагрузится, то просто допиши:
Код

$x = file('a.txt');
foreach($x as $value)
echo($value.'<br>');

 smile 

Это сообщение отредактировал(а) NightmareZ - 29.11.2006, 16:14


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
bondarenko_a
Дата 29.11.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: 1
Всего: 1



Может я как то не так поняла, но притакой постановке задачи, я бы обшлась одной строкой:
Код

header("Location: ".$_POST['name']);

если в обработчике ничего до этого не выводится, то должно сработать

Это сообщение отредактировал(а) bondarenko_a - 29.11.2006, 17:25
PM MAIL   Вверх
NightmareZ
Дата 29.11.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 2
Всего: 13



Цитата(bondarenko_a @  29.11.2006,  17:15 Найти цитируемый пост)
если в обработчике ничего до этого не выводится, то должно сработать

Объясни, plz.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
bondarenko_a
Дата 29.11.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: 1
Всего: 1



NightmareZ, 

Если вопрос по поводу header() , то цитирую мануал:
Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле, или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании единого PHP/HTML-файла.
PM MAIL   Вверх
griker
Дата 29.11.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MDMA
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.7.2006
Где: Tallinn

Репутация: 2
Всего: 8



bondarenko_a, а для чего интересно нужен обработчик в котором ничего не обрабатывается smile 

NightmareZ, огромное вам спасибо +++ smile 


--------------------
I don't respect police
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.