The easy way is to add another controller "edit_image" and add a link to
this in each image.
(controller/default.py)
def edit_image():
row_id = request.args[0]
form = SQLFORM(db.ref, row_id)
if form.process().accepted:
response.flash = "Image uploaded"
else:
response.flash = form.vars.id
(view)
{{for img in images:}}
<image><img width="85px"
src="{{=URL('download', args=img.file)}}" /><br></image>
<br><br><br><br><br>
{{=img}}
{{=img.id}}
{{=A('Edit', _href=URL('default', 'edit_image',
args=[img.id]))}}
{{pass}}{{pass}}
2012/3/12 juvi1 <[email protected]>
> this code work but i need create form in controller but how i send the
> img_id variable in controller (form)?
>
> {{for img in images:}}
> <image><img width="85px"
> src="{{=URL('download', args=img.file)}}" /><br></image>
> <br><br><br><br><br>
> {{=img}}
> {{=img.id}}
> {{row_id=img.id}}
> {{form = SQLFORM(db.ref, row_id)
> if form.process().accepted:
> response.flash = "Image uploaded"+str(form.vars)
> else:
> response.flash = form.vars.id}}
> {{=form}}
> {{pass}}{{pass}}
>
> maanantaina 12. maaliskuuta 2012 14.02.10 UTC+2 juvi1 kirjoitti:
>
>>
>> <https://lh4.googleusercontent.com/-C5e04mE4s8I/T13jl7HXizI/AAAAAAAAAAU/ngyK-9pCkAA/s1600/Screenshot%2520at%25202012-03-12%252013%253A51%253A57.png>
>> Sry. I dont understand. now all forms update same image (image_id1)
>> can i send img_id (in view) to form (in controller)?
>> I also try this code, but that insert always image_id variable = last
>> image id in database.
>> def jobs():
>> images=db().select(db.ref.id,**db.ref.file)
>> for img in images:
>> form = SQLFORM(db.ref, img.id)
>>
>> if form.process().accepted:
>> response.flash = "Image uploaded"+str(form.vars)
>> else:
>> response.flash = form.vars.id
>>
>> return dict(form=form, images=images)
>>
>> maanantaina 12. maaliskuuta 2012 12.23.36 UTC+2 Martin.Mulone kirjoitti:
>>>
>>> To edit an image you need to pass the id of the row to SQLFORM.
>>>
>>> Ex.:
>>> row_id = 1
>>> form = SQLFORM(db.ref, row_id)
>>>
>>> 2012/3/11 juvi1 <[email protected]>
>>>
>>>> thanks, but now form create always new image in database, and i want
>>>> update image.
>>>> how it can be done??
>>>>
>>>> sunnuntaina 11. maaliskuuta 2012 13.37.36 UTC+2 Martin.Mulone kirjoitti:
>>>>
>>>>> I don't know why you have two {{pass}} in your view. I think you can
>>>>> do:
>>>>>
>>>>> def jobs():
>>>>> images=db().select(db.ref.id,**d**b.ref.file)
>>>>> form = SQLFORM(db.ref)
>>>>> if form.process().accepted:
>>>>> response.flash = "Image uploaded"
>>>>>
>>>>> return dict(form=form, images=images)
>>>>>
>>>>> in views:
>>>>> {{for img in images:}}
>>>>> <image><img width="85px"
>>>>> src="{{=URL('download', args=img.file)}}" /><br></image>
>>>>> <br><br><br><br><br>
>>>>> {{=img}}
>>>>> {{=img.id}}
>>>>> {{=form}}
>>>>> {{pass}}
>>>>>
>>>>> 2012/3/11 juvi1 <[email protected]>
>>>>>
>>>>>> Hello sorry my bad english and i hope that you understand my problem.
>>>>>>
>>>>>> I want show in one page all pictures which are saved in database.
>>>>>> In page i want that i can upload new picture and update it whit forms
>>>>>> (override old one)
>>>>>> My code are
>>>>>>
>>>>>> in controller:
>>>>>> def jobs():
>>>>>> images=db().select(db.ref.id,**d**b.ref.file)
>>>>>> for img in images:
>>>>>> formname = "upload_f_%s"%img.id
>>>>>> form = FORM(INPUT(_type="file",_name=****formname),
>>>>>> INPUT(_type='submit'))
>>>>>>
>>>>>> if form.accepts(request.vars, _name=formname):
>>>>>> response.flash = form.vars
>>>>>>
>>>>>> return dict(form=form, img=img, formname=formname, images=images)
>>>>>>
>>>>>> in views:
>>>>>> {{for img in images:}}
>>>>>> <image><img width="85px"
>>>>>> src="{{=URL('download', args=img.file)}}" /><br></image>
>>>>>> <br><br><br><br><br>
>>>>>> {{=img}}
>>>>>> {{formname=img.id}}
>>>>>> {{=formname}}
>>>>>> {{=form}}
>>>>>> {{pass}}{{pass}}
>>>>>>
>>>>>> please help!
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> http://www.tecnodoc.com.ar
>>>>>
>>>>>
>>>
>>>
>>> --
>>> http://www.tecnodoc.com.ar
>>>
>>>
--
http://www.tecnodoc.com.ar