Редактирование посетителями уже созданных ими записей

Перед отправкой данных посетитель должен конечно проверить свой текст. Но часто ошибки бывают видны только после опубликования записи. Чтобы дать посетителю возможность исправить ошибки, добавим дополнительные формы для каждой записи (дескриптор, как в первом примере):

guestbook2.tpl
<?php

    foreach ($tab as $dat)
    {
        echo "
        {$dat['edit']}
        $dat[1]
        $dat[2]
        ";
        if ($_SESSION['fresh-recs'][$blockInfo['src-block-id']][$dat['rec']])
        echo "
            <form action='?update&block=$block&rec={$dat['rec']}' method='post'>
                Ваше имя: <input type='text' name='dat[1]' value='$dat[1]'>
                Комментарий: <input type='text' name='dat[2]' value='$dat[2]'>
                <input type='submit'>
            </form>
        ";
    }

    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>
    ";

?>

Здесь нужно отметить, что, посетитель может обновлять только собственные записи, сделанные во время текущей сессии (свежие записи). Поэтому при переборе записей оператором foreach, имеет смысл отображать формы редактирования только, для свежих записей, информация о которых хранится в массиве $_SESSION['fresh-recs'][][].

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

Формы для редактирования сделанных записей рекомендуется скрывать средствами JavaScript, поставив кнопку "Редактировать/Скрыть".

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