Основы PHP. Запись в файл методом POST. Часть 1.

В прошлый раз мы с вами изучили функцию

подключения файлов в php

, и создал итак называемый файл базы данных, где будет храниться передаваемая информация, между панелью управления и монитором.  Теперь нам необходимо доработать файл controlpanel.php, что бы он мог перезаписывать информацию в нашей базе.

Открываем файл controlpanel.php, в редакторе Notepad++ и после тега body открываем код PHP и пишем:

//переменная ошибок
$error=array();

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

//обработчик формы
if (!empty($_POST))
{
    //проверка параметра
                $name = $_POST['name'];
                $amt = $_POST['amt'];
                $year = $_POST['year'];
                $sales = $_POST['sales'];
                $goods = $_POST['goods'];
               
                $name1 = $_POST['name1'];
                $amt1 = $_POST['amt1'];
                $year1 = $_POST['year1'];
                $sales1 = $_POST['sales1'];
                $goods1 = $_POST['goods1'];

Для записи в базу данных (файл db.php) нам необходимо создать переменную назовём её $var и создадим значение. В значение нам необходимо прописать всё то, что будет передано в базу. Это пожалуй самое большое значение переменной, из всех наших занятий, выглядит она следующим образом:

 $var= "
<?php
                \$name =\"$name\";
                \$amt =\"$amt\";
                \$year =\"$year\";
                \$sales =\"$sales\";
                \$goods =\"$goods\";
                \$name1 =\"$name1\";
                \$amt1 =\"$amt1\";
                \$year1 =\"$year1\";
                \$sales1 =\"$sales1\";
                \$goods1 =\"$goods1\";
?>";

Чтобы значение переменной не выдало ошибку, косым слешем экранируем все переменные и двойные кавычки, как показано в верхнем коде.

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

if (empty($name))
    $error['empty']='не введен параметр';

Открытие (fopen) и запись в файл.

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

Таблица №1.

Режим

Обозначение

'r'

Открытие на чтение (является значением по умолчанию).

'w'

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

'x'

Открытие на запись, если файла не существует, иначе исключение.

'a'

Открытие на до запись. Информация добавляется в конец файла.

'b'

открытие в двоичном режиме.

't'

открытие в текстовом режиме (является значением по умолчанию).

'+'

открытие на чтение и запись

 

Теперь давайте добавим полный код который будет отвечать за запись и разберём его:

//если все нормально пишем в файл
    if (empty($error))
    {
        //открываем
        $f=fopen('db.php','w');
          //блокируем
        flock($f,2);
        
        //запись с переводом строки
        fwrite($f,$var."\n");
        
        //закрытие
        fclose($f);
        
        /*переадресация , чтобы сбросить пост, это нужно чтобы при нажатии кнопки обновить
         данные не добавились вновь*/
        header('Location: '.$_SERVER['SCRIPT_NAME'].'?ok=1');
        die();
    }
}
 
//если есть ошибки выводим
if (!empty($error))
echo '<p>'.implode('',$error).'</p>';
 
if (isset($_GET['ok']))
echo '<p>данные записаны</p>';

И так первая функция:

if (empty($error)) - Будет проверять ошибки при добавлении записи в файл.

$f=fopen('db.php','w'); - Здесь открываем файл для записи, или если быть точнее для полной перезаписи. С указанием пути к файлу.

flock($f,2); - Эта функция позволяет блокировать файл, во время записи. Например, если во время записи страница будет, обновляется пользователем, (db.php) то запись не будет произведена.

fwrite($f,$var."\n"); - Запись с переводом строки, что бы весь код, не выстроился в одну линию.

fclose($f); - И закрываем файл после записи.

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

header('Location: '.$_SERVER['SCRIPT_NAME'].'?ok=1');
        die();

которая не даёт перезаписывать файл при обновлении страницы, а только после нажатия кнопки отправить.

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



PHP
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.