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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Способы сохранения текста из формы, выбор между (w+) и (a+) 
V
    Опции темы
YurkaKursant
Дата 17.9.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть скрипт, который сохраняет текст из textarea в файлы, форматы которых выбираются выпадающим списком. Нумерация файлов начинается со значения, которое записано в файле "index". 

Нужно сделать так, чтобы была возможность выбора (например, выпадающим списком) сохранять в новый файл(w+) или дописывать в последний созданный(a+). Есть какие идеи? Подскажите, пожалуйста.


Код

<?php
$source = $_POST['source'];//имя textarea, из которого берется текст
$triad = $_POST['triad'];//расширение, с которым будет сохранен файл (в выпадающем списке)
$fh = fopen("./SMI/index",'r');//в этом файле находится число, с которого начинается нумерация
$i = fgets($fh);
fclose($fh);
$fh = fopen("./SMI/index",'w');
$i++;
fputs($fh, $i);
fclose($fh);
$file = $i.".".$triad;
$Saved_file = fopen("./SMI/".$file, 'w+');//директория для записи
fwrite($Saved_file, $source);
fclose($Saved_file);
header("Location: index.php");
?>

PM MAIL   Вверх
Sam3000
Дата 18.9.2009, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Используем <input type="checkbox" name="action"/>
Затем:
Код

$action = $_POST['action'];
if($action == "on") {
     Выполняем нужную операцию
}


П.С. значение off не передает...
PM MAIL   Вверх
YurkaKursant
Дата 18.9.2009, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

$action = $_POST['action'];
if($action == "on") {
     Выполняем нужную операцию
}

А вот на счет нужной операции, поподробней, пожалуйста.

Это сообщение отредактировал(а) YurkaKursant - 18.9.2009, 05:59
PM MAIL   Вверх
Sam3000
Дата 18.9.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(YurkaKursant @ 18.9.2009,  05:59)
Цитата

$action = $_POST['action'];
if($action == "on") {
     Выполняем нужную операцию
}

А вот на счет нужной операции, поподробней, пожалуйста.

...
$action = $_POST['action'];
if($action == "on") {
     твой код, допустим для создания нового файла
}
Цитата(YurkaKursant)
Нужно сделать так, чтобы была возможность выбора (например, выпадающим списком) сохранять в новый файл(w+) или дописывать в последний созданный(a+). Есть какие идеи? Подскажите, пожалуйста.

Собсна я тебе дал идею, или тебе нужен полный пример?
PM MAIL   Вверх
YurkaKursant
Дата 18.9.2009, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не мог бы связать мной приведенный пример со своим предложением, спасибо.

Я так понимаю, это вот так выглядит: Или нет?
Код

<?php
$action = $_POST['action'];
if($action == "on"
{
$source = $_POST['source'];//имя textarea, из которого берется текст
$triad = $_POST['triad'];//расширение, с которым будет сохранен файл (в выпадающем списке)
$fh = fopen("./SMI/index",'r');//в этом файле находится число, с которого начинается нумерация
$i = fgets($fh);
fclose($fh);
$fh = fopen("./SMI/index",'w');
$i++;
fputs($fh, $i);
fclose($fh);
$file = $i.".".$triad;
$Saved_file = fopen("./SMI/".$file, 'w+');//директория для записи
fwrite($Saved_file, $source);
fclose($Saved_file);
header("Location: index.php");
}
?>


Это сообщение отредактировал(а) YurkaKursant - 18.9.2009, 23:26
PM MAIL   Вверх
Sam3000
Дата 19.9.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(YurkaKursant @ 18.9.2009,  23:23)
Не мог бы связать мной приведенный пример со своим предложением, спасибо.

Я так понимаю, это вот так выглядит: Или нет?
Код

<?php
$action = $_POST['action'];
if($action == "on"
{
$source = $_POST['source'];//имя textarea, из которого берется текст
$triad = $_POST['triad'];//расширение, с которым будет сохранен файл (в выпадающем списке)
$fh = fopen("./SMI/index",'r');//в этом файле находится число, с которого начинается нумерация
$i = fgets($fh);
fclose($fh);
$fh = fopen("./SMI/index",'w');
$i++;
fputs($fh, $i);
fclose($fh);
$file = $i.".".$triad;
$Saved_file = fopen("./SMI/".$file, 'w+');//директория для записи
fwrite($Saved_file, $source);
fclose($Saved_file);
header("Location: index.php");
}
?>

Уху примерно.
Теперь тебе надо обработать вариант если action не указан или пуст (либо через else), и выполнить запись в новый файл или дописывание.
П.С. только не if($action == "on", а if($action == "on")

Пример
Код

<?php
print "<form action='' method='post'>
<input type='checkbox' name='action'/> Делать?<br/>
<button style='width: 200px; color:#fff3bd; border:solid 1px #ef041d; background-color: #8a0e1b;' type='submit'>угу</button>
</form>";
$action = $_POST['action'];
// 1ый вариант
if (empty($action)) { print "lol"; }
else { print $action; }
print "<br/>";
// 2ой вариант
if ($action == "on") { print $action; }
else { print "lol"; }
print "<br/>";
?>


Это сообщение отредактировал(а) Sam3000 - 19.9.2009, 00:55
PM MAIL   Вверх
YurkaKursant
Дата 20.9.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот, что у меня получилось:

Код

<?php
// Принимаем и обрабатываем сообщение из TEXTAREA
if(isset($_POST[source])&& !empty($_POST[source])){
    $source = trim($_POST[source]);
        // Удаляем ненужные переводы строк
    $source = preg_replace("/[\r\n]{2,}/i", "\n", $source);
    // Ограничение количества вводимых символов
    $source = substr($source,0,1024);

if(isset($_POST[add])){
// Нажата кнопка добавления записи к последнему сохранённому файлу
    // Считываем имя последнего сохранённого файла из last.txt
    if(file_exists('last.txt')){
    // Открываем файл для чтения и записи в режиме r+t 
    // некоторые версии FreeBSD имеют проблемы с режимом а+ 
    // и не могут установить указатель на начало файла при помощи fseek 
        $f1=fopen('last.txt', 'r+t') or die("Невозможно открыть файл"); 
    // Блокируем файл (блокировка с запретом "подвисания") 
        while(!flock($f1, LOCK_EX+LOCK_NB)) 
            { 
            sleep(1);    // ждём одну секунду 
            } 
    // Файл заблокирован, можно производить чтение и запись
    // считываем имя последнего сохранённого файла
    $file=explode("\n",fread($f1,filesize('last.txt')));
    if(file_exists($file[0])){
        $f2=fopen($file[0], 'r+t') or die("Невозможно открыть файл");
        // Блокируем файл (блокировка с запретом "подвисания") 
            while(!flock($f2, LOCK_EX+LOCK_NB)) 
                { 
                sleep(1);    // ждём одну секунду 
                } 
          $position = filesize($file[0]);
          fseek($f2, $position-1);
        fwrite ($f2,$source."\n") ;
        fclose($f1);
        fclose($f2);
    }
    }else{
        echo "Отсутствует файл содержащий информацию о последнем сохранённом файле.";
    }
}
if(isset($_POST[save])){
// Нажата кнопка добавления записи в новый файл
    switch ($_POST[triad]) {
    case 0: $triad='txt'; break;
    case 1: $triad='xml'; break;
    case 2: $triad='smi'; break;
    case 3: $triad='doc'; break;
    default: $triad='txt';
    }
    // Считываем счётчик нумерации из count.txt
    if(file_exists('count.txt')){
        $f1=fopen('count.txt', 'r+t') or die("Невозможно открыть файл"); 
    // Блокируем файл (блокировка с запретом "подвисания") 
        while(!flock($f1, LOCK_EX+LOCK_NB)) 
            { 
            sleep(1);    // ждём одну секунду 
            } 
    // Файл заблокирован, можно производить чтение и запись
    // считываем счётчик
    $n=explode("\n",fread($f1,filesize('last.txt')));
    $new=$n[0]+1;
     $file=($new).".$triad";
         ftruncate($f1, 0); // очищаем файл
         fseek($f1, 0, SEEK_SET); // переходим в начало файла
        fwrite ($f1, $new) ; // записываем строку из массива    
    if(!file_exists($file)){
        fclose(fopen($file, "a+t"));
        $f2=fopen($file, 'r+t') or die("Невозможно открыть файл");
        fputs ($f2,$source."\n") ;
        fclose($f2);
        fclose($f1);
    if(file_exists('last.txt')){
    $f3=fopen('last.txt', 'r+t') or die("Невозможно открыть файл"); 
    // Блокируем файл (блокировка с запретом "подвисания") 
        while(!flock($f3, LOCK_EX+LOCK_NB)) 
            { 
            sleep(1);    // ждём одну секунду 
            }
         ftruncate($f3, 0); // очищаем файл
         fseek($f3, 0, SEEK_SET); // переходим в начало файла
        fwrite ($f3, $file) ; // записываем строку из массива
        fclose($f3);
    }else{
        echo "Отсутствует файл содержащий информацию о последнем сохранённом файле.";
    }    
    }else{
        echo "Фйл с таким именем уже существует";
    exit;
    }
    }else{
        echo "Отсутствует файл счётчика.";
    }    
}
}else{
echo "Отсутствует текстовое сообщение";
}
?> 

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.