Публичные записи (редактирование сайта неавторизованными пользователями)

Механизм хранения и обновления данных, поступающих от посетителей, такой же, как и для данных, редактируемых пользователями с допуском. Отличие заключается, во-первых, в способе ввода данных. Если для изменения записи или создания новой записи пользователю предоставляется специальная форма (окно редактирования), то для посетителя код формы нужно писать в шаблоне блока. Особенности написания кода формы рассмотрим на примере гостевой книги.

Шаблон блока строится по такому же принципу, что и шаблон обычного блока. Добавляется только форма для ввода данных посетителями.

guestbook.tpl
<?php

    foreach ($tab as $dat)
    echo "
        {$dat['edit']}
        $dat[1]
        $dat[2]<br>
    ";

    echo "
    <form action='?update&block=$block&rec=new' method='post'>
        Ваше имя: <input type='text' name='dat[1]'>
        Комментарий: <input type='text' name='dat[2]'>
        <input type='submit'>
    </form>
    ";

?>

guestbook.tdd
<?php

$types[1] = 'varchar(50)';
$types[2] = 'varchar(50)';

$params['multi-record'] = true;
$params['public'] = [];

?>

Правила написания форм для публичных записей

  1. Атрибут action формы должен иметь один из следующих видов:
    action="?update&block=$block&rec=new"        (для создания новой записи, как в примере гостевой книги) или
    action="?update&block=$block&rec={$dat['rec']}"   (для обновления текущей записи),
    где update это имя скрипта.
  2. В качестве переменных формы необходимо применять массив dat, например: <input type='text' name='dat[2]'>.
    Естественно, дескриптор шаблона должен иметь структуру, соответствующую структуре данных формы.
  3. В дескрипторе шаблона должен быть объявлен массив $params['public'] = []. Без него данные посетителя в базу данных записаны не будут.

См. также