It worked! Thanks Bruno.After this I just needed to add the 
post_vars.iteritems() because without it were giving the 'Too many values 
to unpack' error

This kind of data manipulation cleared many things to me.
Em quarta-feira, 22 de agosto de 2012 18h07min23s UTC-3, rochacbruno 
escreveu:
>
> You have to give id and name to form inputs, and select needs options.
>
> Ttry this on web2py shell
>
> print SELECT(*[OPTION(option, **{"_value": option, "_selected":"selected" 
> if option == 1 else None}) for option in (0, 1)], _name="1", _id="1")
> <select id="1" name="1"><option value="0">0</option><option 
> selected="selected" value="1">1</option></select>
>
> Adapting to your case:
>
>  {{for row in rows:}}
>         <tr><td>{{=row.descricao}}</td><td>{{=SELECT(*[OPTION(option, 
> **{"_value": option, "_selected":"selected" if option == row.nivel else 
> None}) for option in (0, 1)], _name=row.id, _id=row.id) }}
>    {{pass}}
>
> On Wed, Aug 22, 2012 at 5:47 PM, Fabiano Faver <far...@gmail.com<javascript:>
> > wrote:
>
>> I changed the previous model a little:
>> MODEL:
>> db.define_table('erro_impressora',
>>                           Field('descricao','string'),
>>                           Field('nivel', 'integer' )
>> )
>>
>>
>>
>> Controllers:
>>
>> def teste():
>>     rows = db(db.erro_impressora).select()
>>     return dict(rows=rows)
>>
>> def update_nivel():
>>     for key, value in request.post_vars:
>>         try:
>>             db.erro_impressora[key].update_record(nivel=value)
>>         except:
>>             pass
>>     db.commit()
>>     
>>     redirect(URL('teste'))
>>
>>
>> VIEW:
>> {{extend 'layout.html'}}
>>
>> <form action="{{=URL('update_nivel')}}" method="POST">
>>     <table>
>>     {{for row in rows:}}
>>         <tr><td>{{=row.descricao}}</td><td>{{= SELECT(0,1, 
>> value=row.nivel ) }}
>>     {{pass}}
>>     <tr><td colspan='2'>{{=INPUT(_type='submit') }}</td></tr>
>>     </table>
>> </form>
>>
>> I`ve done what you suggested but i couldn`t put it to update. action 
>> update_nivel() is receiving a empty request.post_vars
>>
>> Em quarta-feira, 22 de agosto de 2012 15h36min52s UTC-3, rochacbruno 
>> escreveu:
>>
>>> You can try something like this:
>>>
>>> def test():
>>>     rows = db(db.test).select()
>>>     return dict(rows=rows)
>>>
>>> def update_level():
>>>     for key, value in request.post_vars:
>>>         try:        
>>>             db.table[key].update_record(**level=value)
>>>         except:
>>>             # do something if key is invalid.
>>>     db.commit()
>>>     redirect("URL TO REDIRECT AFTER UPDATES")  # or use ajax
>>>
>>> Now in views/controller/test.html
>>>
>>> <form action="{{=URL("update_level")**}}" method="POST">
>>>    <table>   
>>>    {{for row in rows:}}
>>>    <tr> <td>{{=row.name}}</td><td> *<input type="text" value="" id="{{=
>>> row.id}}" name="{{=row.id}}" />*</td></tr>       
>>>    {{pass}}
>>>    </table>
>>> </form>
>>>
>>>
>>> On Wed, Aug 22, 2012 at 3:16 PM, Fabiano Faver <far...@gmail.com> wrote:
>>>
>>>> |     name      |          level          |
>>>> ------------------------------**----
>>>>       test 1      |    combobox(0)   |
>>>>       test 2      |    combobox(1)   | 
>>>>       test 3      |    combobox(0)   |
>>>>              ________
>>>>              |  Submit  |
>>>>              ------------- 
>>>>
>>>
>>>  -- 
>>  
>>  
>>  
>>
>
>

-- 



Reply via email to