I added some lines and marked with #####

def byplace():
    response.functionname=T('Club locator op plaats')
    form=FORM('Type een plaatsnaam:',
        INPUT(_type='text',_name='plaatsnaam',requires=IS_NOT_EMPTY
()),
        INPUT(_type='submit'))
    if form.accepts(request.vars,session):
        clubs=db((db.bedrijf.id==db.adres.bedrijf)&
(db.bedrijf.id==db.bedrijfbranche.bedrijf)&\
        (db.adres.plaatsnaam==request.vars.plaatsnaam)&
(db.adres.adressoort==2)&(db.bedrijfbranche.branche==2))\
        .select
(db.bedrijf.id,db.bedrijf.bedrijfsnaam,db.bedrijf.ranking,db.adres.straatnaam,
\
        orderby=db.bedrijf.ranking|db.bedrijf.bedrijfsnaam)
        response.flash='Clubs in'
    else:
        clubs=[] #######################
        response.flash='Formuleer een zoekopdracht'
    return dict(form=form,clubs=clubs)

And the view reads like this:

<div id="leftcolumn">
        {{=form}}
        {{include 'functionnavigation.html'}}
    </div> <!-- leftcolumn -->
    <div id="mainright">
        {{if response.flash:}}
        <div class="flash">
            {{=response.flash}}
        </div> <!-- flash -->
        {{pass}}
        <div id="dt_example">
            {{ if not clubs:}}  {{################}}
             <h1> No clubs </h1>
            {{else:}}  {{################}}
            <table id="example" class="display">
                <thead>
                    <tr>
                        <th>bedrijfsnaam</th>
                        <th>straatnaam</th>
                    </tr>
                </thead>
                <tbody>
                {{for club in clubs:}}
                    <tr>
                        <td>{{=A(club.bedrijf.bedrijfsnaam,_href=URL
(r=request,f='clubdetails',
                            args=
[club.bedrijf.id]),_target="_blank")}}
</td>
                        <td>{{=club.adres.straatnaam}}</td>
                    </tr>
                {{pass}}
                </tbody>
            </table>
            {{pass}} {{################}}
        </div> <!-- dt_example -->
    </div> <!-- mainright -->

On Nov 25, 11:04 am, annet <[EMAIL PROTECTED]> wrote:
> I took up replacing my HTML forms with FORMs.
>
> My first use case is a page on which a visitor types in a city and
> submits the page by clicking a submit button (a form in the left
> column of the page). The controller function should query the database
> for leisure clubs in that city and the result should be displayed in a
> table in the right column of the same page. The function reads like
> this:
>
> def byplace():
>     response.functionname=T('Club locator op plaats')
>     form=FORM('Type een plaatsnaam:',
>         INPUT(_type='text',_name='plaatsnaam',requires=IS_NOT_EMPTY
> ()),
>         INPUT(_type='submit'))
>     if form.accepts(request.vars,session):
>         clubs=db((db.bedrijf.id==db.adres.bedrijf)&
> (db.bedrijf.id==db.bedrijfbranche.bedrijf)&\
>         (db.adres.plaatsnaam==request.vars.plaatsnaam)&
> (db.adres.adressoort==2)&(db.bedrijfbranche.branche==2))\
>         .select
> (db.bedrijf.id,db.bedrijf.bedrijfsnaam,db.bedrijf.ranking,db.adres.straatnaam,
> \
>         orderby=db.bedrijf.ranking|db.bedrijf.bedrijfsnaam)
>         response.flash='Clubs in'
>     else:
>         response.flash='Formuleer een zoekopdracht'
>     return dict(form=form,clubs=clubs)
>
> And the view reads like this:
>
> <div id="leftcolumn">
>         {{=form}}
>         {{include 'functionnavigation.html'}}
>     </div> <!-- leftcolumn -->
>     <div id="mainright">
>         {{if response.flash:}}
>         <div class="flash">
>             {{=response.flash}}
>         </div> <!-- flash -->
>         {{pass}}
>         <div id="dt_example">
>             <table id="example" class="display">
>                 <thead>
>                     <tr>
>                         <th>bedrijfsnaam</th>
>                         <th>straatnaam</th>
>                     </tr>
>                 </thead>
>                 <tbody>
>                 {{for club in clubs:}}
>                     <tr>
>                         <td>{{=A(club.bedrijf.bedrijfsnaam,_href=URL
> (r=request,f='clubdetails',
>                             args=[club.bedrijf.id]),_target="_blank")}}
> </td>
>                         <td>{{=club.adres.straatnaam}}</td>
>                     </tr>
>                 {{pass}}
>                 </tbody>
>             </table>
>         </div> <!-- dt_example -->
>     </div> <!-- mainright -->
>
> Exposing the function results in the following error:
>
> Traceback (most recent call last):
>   File "/Library/Python/2.5/site-packages/web2py/gluon/restricted.py",
> line 62, in restricted
>     exec ccode in environment
>   File "/Library/Python/2.5/site-packages/web2py/applications/b2c/
> controllers/clubs.py", line 60, in <module>
>   File "/Library/Python/2.5/site-packages/web2py/gluon/globals.py",
> line 55, in <lambda>
>     self._caller=lambda f: f()
>   File "/Library/Python/2.5/site-packages/web2py/applications/b2c/
> controllers/clubs.py", line 26, in byplace
>     return dict(form=form,clubs=clubs)
> UnboundLocalError: local variable 'clubs' referenced before assignment
>
> I do understand why it does but I do not know how to solve this
> problem. I hope one of you does.
>
> Best regards,
>
> Annet.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to