Is there a way to display matching values or fields with matching
values in different color?
For example: red

I was thinking on doing this via css but don't know how to verify that
for instance: one or two - particular values - out of 4 (from search
form) matched those in DB.




On 22 Wrz, 06:18, mdipierro <[email protected]> wrote:
> replace
>
>         s=[int(form.vars['no_%i'%i]) for i in keys if form.vars['no_
> %i'%i]!=None]
>         query=reduce(lambda a,b:a|b,[db.numbers['no_%i'%i].belongs(s)
> for i in keys])
>
> with
>
>         query=reduce(lambda a,b:a&b,[db.numbers['no_
> %i'%i]==form.vars['no_%i'%i])
> for i in keys])
>
> On Sep 21, 8:35 pm, elfuego1 <[email protected]> wrote:
>
>
>
> > Thank you Massimo!!!
>
> > It works on my end as well! ;-)
>
> > Could you yet tell me how to modify query part, if I'd like to have
> > results shown ONLY, if the numbers are in exactly the same order as
> > they are stored in DB?
>
> > no_1 == db.numbers['no_1'] &
> > no_2 == db.numbers['no_2'] &
> > no_3 == db.numbers['no_3'] &
> > no_4 == db.numbers['no_4']
>
> > Is there a way to display matching values or fields with matching
> > values in different color?
> > For example: red
>
> > On 21 Wrz, 17:11, mdipierro <[email protected]> wrote:
>
> > > Model:
>
> > > db.define_table('numbers',
> > >                 Field('no_1', 'integer',
> > > requires=IS_INT_IN_RANGE(0,10000)),
> > >                 Field('no_2', 'integer',
> > > requires=IS_INT_IN_RANGE(0,10000)),
> > >                 Field('no_3', 'integer',
> > > requires=IS_INT_IN_RANGE(0,10000)),
> > >                 Field('no_4', 'integer',
> > > requires=IS_INT_IN_RANGE(0,10000)),
> > >                 Field('date', 'date'))
>
> > > Controller:
>
> > > def search():
> > >     form=SQLFORM.factory(
> > >       Field('no_1','integer',label="No 1"),
> > >       Field('no_2','integer',label="No 2"),
> > >       Field('no_3','integer',label="No 3"),
> > >       Field('no_4','integer',label="No 4"))
> > >     if form.accepts(request.vars,keepvalues=True):
> > >         keys=(1,2,3,4)
> > >         s=[int(form.vars['no_%i'%i]) for i in keys if form.vars['no_
> > > %i'%i]!=None]
> > >         query=reduce(lambda a,b:a|b,[db.numbers['no_%i'%i].belongs(s)
> > > for i in keys])
> > >         items=db(query).select()
> > >         if not items: response.flash="There are no matching records in
> > > Database."
> > >     else:
> > >         items=[]
> > >     return dict(form=form,items=items)
>
> > > View: default/search.html
>
> > > {{extend 'layout.html'}}
> > > {{=form}}
> > > {{=SQLTABLE(items,headers="fieldname:capitalize") if items else
> > > "Nothing to see here."}}
>
> > > This works for me.
>
> > > On Sep 21, 9:21 am, elfuego1 <[email protected]> wrote:
>
> > > > Hello,
>
> > > > Did you manage to find a cause of the problem?
> > > > Why the db search is not working?
>
> > > > Best wishes,
>
> > > > On 19 Wrz, 18:26, mdipierro <[email protected]> wrote:
>
> > > > > My office email server appears to be done. Maintenance perhaps.
>
> > > > > On Sep 19, 11:13 am, elfuego1 <[email protected]> wrote:
>
> > > > > > Ok. I've sent it again.
> > > > > > Should be there right now.
>
> > > > > > On 19 Wrz, 16:42, mdipierro <[email protected]> wrote:
>
> > > > > > > nope
>
> > > > > > > On Sep 19, 4:52 am, elfuego1 <[email protected]> wrote:
>
> > > > > > > > Has my message reached your e-mail?
> > > > > > > > The email topic: "Simple search form"
>
> > > > > > > > On 17 Wrz, 23:37, elfuego1 <[email protected]> wrote:
>
> > > > > > > > > I did as you suggested.
> > > > > > > > > The mail should be in your mail box.
>
> > > > > > > > > On 17 Wrz, 15:55, mdipierro <[email protected]> wrote:
>
> > > > > > > > > > You need to help some bore with debugging. Looks to me 
> > > > > > > > > > there simply is
> > > > > > > > > > no matching data.
> > > > > > > > > > Try search by one single filed, Try print the values of 
> > > > > > > > > > form.vars.
>
> > > > > > > > > > or send me the app and I will take a look.
>
> > > > > > > > > > On Sep 17, 8:47 am, elfuego1 <[email protected]> wrote:
>
> > > > > > > > > > > OK. Both parts are there in the view.
> > > > > > > > > > > The input fields are not evaluated against Database 
> > > > > > > > > > > though.
> > > > > > > > > > > Even if I enter numbers that are there in DB, form 
> > > > > > > > > > > responses with:
> > > > > > > > > > > "There are no matching records in Database."
>
> > > > > > > > > > > If the numbers are matching they should be displayed in 
> > > > > > > > > > > the result
> > > > > > > > > > > part of the search page.
>
> > > > > > > > > > > I tried something like this aslo:
>
> > > > > > > > > > > items=db(db.numbers.no_1==form.vars.no_1|\
> > > > > > > > > > >             db.numbers.no_2==form.vars.no_2|\
> > > > > > > > > > >             db.numbers.no_3==form.vars.no_3|\
> > > > > > > > > > >             db.numbers.no_4==form.vars.no_4).select()
>
> > > > > > > > > > > But it's not working either.
>
> > > > > > > > > > > Can I count on some hint?
>
> > > > > > > > > > > Best wishes.
>
> > > > > > > > > > > On 16 Wrz, 23:19, mdipierro <[email protected]> 
> > > > > > > > > > > wrote:
>
> > > > > > > > > > > > somewhere you still have in it
>
> > > > > > > > > > > > {{=SQLTABLE(items,headers="fieldname:capitalize")}}
>
> > > > > > > > > > > > which as we said only works {{if items:}}
>
> > > > > > > > > > > > Please remove everything from the view.
> > > > > > > > > > > > You should just have
>
> > > > > > > > > > > > {{extend 'layout.html'}}
> > > > > > > > > > > > {{=form}}
> > > > > > > > > > > > {{=SQLTABLE(items,headers="fieldname:capitalize") if 
> > > > > > > > > > > > items else
> > > > > > > > > > > > "nothing to see here"}}
>
> > > > > > > > > > > > On Sep 16, 4:15 pm, elfuego1 <[email protected]> wrote:
>
> > > > > > > > > > > > > OK. Both parts are there in the view.
>
> > > > > > > > > > > > > Now, when I go from index.html to search.html I get 
> > > > > > > > > > > > > an error:
>
> > > > > > > > > > > > > Traceback (most recent call last):
> > > > > > > > > > > > >   File "gluon/restricted.py", line 188, in restricted
> > > > > > > > > > > > >   File 
> > > > > > > > > > > > > "F:\Programy\web2py\applications\myapp/views\default/
> > > > > > > > > > > > > search.html", line 88, in <module>
> > > > > > > > > > > > >   File "gluon/sqlhtml.py", line 1192, in __init__
> > > > > > > > > > > > > AttributeError: 'list' object has no attribute 
> > > > > > > > > > > > > 'colnames'
>
> > > > > > > > > > > > > Line 88:
> > > > > > > > > > > > > response.write(SQLTABLE(items,headers="fieldname:capitalize"))
>
> > > > > > > > > > > > > On 16 Wrz, 22:02, mdipierro <[email protected]> 
> > > > > > > > > > > > > wrote:
>
> > > > > > > > > > > > > > You have a form:
>
> > > > > > > > > > > > > > def search():
> > > > > > > > > > > > > >     form=SQLFORM.factory(INPUT('no_1','integer'),   
> > > > > > > > > > > > > >   <= line 57
> > > > > > > > > > > > > >       INPUT('no_2','integer'),
> > > > > > > > > > > > > >       INPUT('no_3','integer'),
> > > > > > > > > > > > > >       INPUT('no_4','integer'))
> > > > > > > > > > > > > >     if form.accepts(request.vars,keepvalues=True):
> > > > > > > > > > > > > >       
> > > > > > > > > > > > > > items=db(db.numbers.no_1.contains(form.vars.no_1)|\
> > > > > > > > > > > > > >             
> > > > > > > > > > > > > > db.numbers.no_2.contains(form.vars.no_2)|\
> > > > > > > > > > > > > >             
> > > > > > > > > > > > > > db.numbers.no_3.contains(form.vars.no_3)|\
> > > > > > > > > > > > > >             
> > > > > > > > > > > > > > db.numbers.no_4.contains(form.vars.no_4)).select()
> > > > > > > > > > > > > >     else: items=[]
> > > > > > > > > > > > > >     return dict(form=form,items=items)
>
> > > > > > > > > > > > > > you need to but both
>
> > > > > > > > > > > > > > {{=form}}
>
> > > > > > > > > > > > > > and
>
> > > > > > > > > > > > > > {{=SQLTABLE(items,headers="fieldname:capitalize") 
> > > > > > > > > > > > > > if items else
> > > > > > > > > > > > > > "nothing to see here"}}
>
> > > > > > > > > > > > > > in the view
>
> > > > > > > > > > > > > > On Sep 16, 2:25 pm, elfuego1 <[email protected]> 
> > > > > > > > > > > > > > wrote:
>
> > > > > > > > > > > > > > > I did as you told me. Now I don't have search 
> > > > > > > > > > > > > > > form on my search page.
> > > > > > > > > > > > > > > What do you mean by saying: >>it is only 
> > > > > > > > > > > > > > > producing "nothing to see
> > > > > > > > > > > > > > > here"
> > > > > > > > > > > > > > > because there is no data.<<
> > > > > > > > > > > > > > > There is data in DB waiting to be searched, but 
> > > > > > > > > > > > > > > how am I supposed to
> > > > > > > > > > > > > > > do that now when there is no input fields on 
> > > > > > > > > > > > > > > search page?!
> > > > > > > > > > > > > > > How do I get input fields and results for my 
> > > > > > > > > > > > > > > search below?
>
> > > > > > > > > > > > > > > This is some vicious circle...
>
> > > > > > > > > > > > > > > On 16 Wrz, 02:47, mdipierro 
> > > > > > > > > > > > > > > <[email protected]> wrote:
>
> > > > > > > > > > > > > > > > It is working just not being called. The output 
> > > > > > > > > > > > > > > > you see comes from
> > > > > > > > > > > > > > > > this code you have
>
> > > > > > > > > > > > > > > > {try:}}{{=H2(message)}}{{except:}}{{=BEAUTIFY(response._vars)}}
> > > > > > > > > > > > > > > > {{pass}}
>
> > > > > > > > > > > > > > > > and you should remove it.
>
> > > > > > > > > > > > > > > > The code I suggested:
>
> > > > > > > > > > > > > > > > {{=SQLTABLE(items,headers="fieldname:capitalize")
> > > > > > > > > > > > > > > >  if items else
> > > > > > > > > > > > > > > > "nothing to see here"}}
>
> > > > > > > > > > > > > > > > is working all right but it is only producing 
> > > > > > > > > > > > > > > > "nothing to see here"
> > > > > > > > > > > > > > > > because there is no data.
>
> > > > > > > > > > > > > > > > On Sep 15, 6:56 pm, elfuego1 
> > > > > > > > > > > > > > > > <[email protected]> wrote:
>
> > > > > > > > > > > > > > > > > Source code for search.html looks like that:
>
> > > > > > > > > > > > > > > > > {{extend 'layout.html'}}
> > > > > > > > > > > > > > > > > {{try:}}{{=H2(message)}}{{except:}}{{=BEAUTIFY(response._vars)}}
> > > > > > > > > > > > > > > > > {{pass}}
> > > > > > > > > > > > > > > > > {{=SQLTABLE(items,headers="fieldname:capitalize")
> > > > > > > > > > > > > > > > >  if items else
> > > > > > > > > > > > > > > > > "nothing to see here"}}
>
> > > > > > > > > > > > > > > > > The output page looks like that:
>
> > > > > > > > > > > > > > > > > form    :
> > > > > > > > > > > > > > > > > No 1:
> > > > > > > > > > > > > > > > > No 2:
> > > > > > > > > > > > > > > > > No 3:
> > > > > > > > > > > > > > > > > No 4:
>
> > > > > > > > > > > > > > > > > items   :
> > > > > > > > > > > > > > > > > numbers.id numbers.no_1 numbers.no_2 
> > > > > > > > > > > > > > > > > numbers.no_3 numbers.no_4
> > > > > > > > > > > > > > > > > nothing to see here...
>
> więcej »

Reply via email to