Шаблон голосования

Дается текст вопроса. Дается три варианта ответа (максимальное число ответов можно увеличить). Посетитель должен выбрать один из вариантов и проголосовать. Когда количество голосований станет достаточно большим, пользователь системы управления может переключить блок в режим отображения результатов опроса.

Шаблон (poll.tpl):
<?php echo "
    
{$dat['edit']}
<div>$dat[1]</div>

<form action='?update&block={$block}&rec={$dat['rec']}' method='post'>
<table>
    <tr>
        <td><input type='checkbox' name='answer[4]' value='1'></td>
        <td>$dat[3]</td>
    </tr>
    <tr>
        <td><input type='checkbox' name='answer[6]' value='1'></td>
        <td>$dat[5]</td>
    </tr>
    <tr>
        <td><input type='checkbox' name='answer[8]' value='1'></td>
        <td>$dat[7]</td>
    </tr>
    <tr>
        <td colspan='2'><input type='submit' value='ok'>
    </tr>
</table>
</form>

"; ?>


Дескриптор шаблона (poll.tdd):
<?php
    
    # Вводная часть
    $titles[1]  = 'Вопрос';        
    $types[1]  = 'varchar(255)';


    # Поля для ответов
    $titles[3]  = "Вариант ответа 1";
    $titles[5]  = "Вариант ответа 2";
    $titles[7]  = "Вариант ответа 3";
    
    $titles[4]  = "Количество проголосовавших за ответ 1";
    $titles[6]  = "Количество проголосовавших за ответ 2";
    $titles[8]  = "Количество проголосовавших за ответ 3";

    $types[3]  = 'varchar(255)';
    $types[5]  = 'varchar(255)';
    $types[7]  = 'varchar(255)';    
    
    $types[4]  = 'int(8) unsigned';
    $types[6]  = 'int(8) unsigned';
    $types[8]  = 'int(8) unsigned';

    # Параметры
    $params['public']['editing-allowed'] = true;

?>


Предобработчик обновления данных (poll.tuh):
<?php
    if ($_POST['answer'])
    {
        foreach ($_POST['answer'] as $field => $val)
        {
            # считать старые данные
            $num = getDat($_GET['block'], $_GET['rec'], $field);
            # Увеличить значение поля на 1
            $_POST['dat'][$field] = $num + $val; 
        }
    }
?>

См. также