How to deal with client input your site? Our client wants a poll on the website.
How can I deal with client input and update the entry?
I found the Entry-Form example, but this doesn't work. 

The title field is the question and the admin can add answers with a matrix field. Within the matrix fields there are 2 fields: answer and totalVotes 

This is my code:

&lt;form class="poll__questions" method="post" action="" accept-charset="UTF-8"&gt;
    &lt;input type="hidden" name="action" value="entries/saveEntry"&gt;
    &lt;input type="hidden" name="redirect" value="{{ craft.request.getPath }}?success=√"&gt;
    &lt;input type="hidden" name="sectionId" value="38"&gt;
    &lt;input type="hidden" name="entryId" value="{{ pollentry.id }}"&gt;
    &lt;input type="hidden" name="enabled" value="1"&gt;

    &lt;ul&gt;
    {{% for answer in pollentry.answers %}
        &lt;li&gt;&lt;label&gt;&lt;input type="radio" name="fields[answers][{{ answer.id }}][fields][totalVotes]" value="{{ answer.totalVotes + 1 }}"&gt; {{ answer.answer }}&lt;/label&gt;&lt;/li&gt;
    {% endfor %}}
    &lt;/ul&gt;
    &lt;button type="submit" class="button button--third"&gt;Vote&lt;/button&gt;
&lt;/form&gt;


Does anybody know why this doesn't work. It submits the form without visible errors, but it doens't update the entry.
Not an answer, but one thing that might help you diagnose the problem, is to output all the return errors (without having to define it on each field as the example templates do).

{% macro errorList(errors) %}
    {% if errors %}
        &lt;ul class="errors"&gt;
            {% for error in errors %}
                &lt;li&gt;{{ error }}&lt;/li&gt;
            {% endfor %}
        &lt;/ul&gt;
    {% endif %}
{% endmacro %}

{% from _self import errorList %}

{% if account is defined %}
    {{ errorList(account.getAllErrors()) }}
{% endif %}

{% if entry is defined %}
    {{ errorList(entry.getAllErrors()) }}
{% endif %}


A User Model named 'account' is returned by default from a failed users/saveUser post action, and an Entry Model named 'entry' is returned by default from a failed entries/saveEntry post action.

I have also found the Inpector plug-in extremely helpful. You can then add {{ account | inspect }} or {{ entry | inspect }} within the if statements above to get more info.