http://www.youtube.com/watch?v=jGuW43sdv6E
On 21 ene, 00:38, Mandriluy <msr...@gmail.com> wrote: > I bought a screencast software last month, i use it today and made a > screencast of this but a simple version with some changes. Im > uploading right now to youtube, i hope you like it and i apologize for > my english.. im not pro :P > > Btw , i also publish the screencast code version in > web2pyslices.com ;-) and i love the website.. great idea!!! > > I will update this post and the slice when my video finish uploading.. > i live in Uruguay and my upload speed is 6kb/s yeah.. ISP in South > America is epic fail :-( > > Here is the web2pyslices link if someone is interested on: > > http://www.web2pyslices.com/main/slices/take_slice/51 > > Greetings ;-) > > On 20 ene, 16:40, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > Thank you. I suggest you post it as a slice on web2pyslices.com > > > On Jan 20, 12:16 pm, Mandriluy <msr...@gmail.com> wrote: > > > > Thank you very much massimo for your help :-) .. i did make some minor > > > changes to the code to make it work. > > > > I will post here the code translated to english because maybe it could > > > help someone with the same problem, this code is a working ajax live > > > search with web2py, if you dont have a multiple value field on your DB > > > it will be a lot simple. > > > > the controller : > > > ########### > > > def ajaxlivesearch(): > > > partialResult = request.vars.values()[0] > > > array = partialResult.split() > > > query = reduce(lambda a,b:a&b, [db.Pacient.name.like('%'+a+'%') > > > for a in array]) > > > > pacients = db(query).select(db.Pacient.name,limitby=(0,7)) > > > j = 0 > > > items = [DIV(A(pacient.name, > > > _id="res%s"%j, > > > _href="#", > > > _onclick="copyToBox($('#res%s').html > > > ())"%j),_id="resultLiveSearch") \ > > > for (j,pacient) in enumerate(pacients)] > > > > return TAG[''](*items) > > > > the view : > > > ######## > > > > <label for="pacient">Search for pacient:</label> > > > <input type="text" id="pacient" name="pacient" > > > autocomplete="off" onkeyup="getData(this.value);" /><input > > > type="submit" class="button_buscar" value="" /> > > > <div id="ajaxresults"></div> > > > > the JS in the view: > > > ############### > > > > function getData(value){ > > > if(value != ""){ > > > $("#ajaxresults").show(); > > > > > > $.post("{{=URL(r=request,c='pacient',f='ajaxlivesearch')}}", > > > {partialResult:value},function(result){ > > > $("#ajaxresults").html(result); > > > }); > > > }else{ > > > hide(); > > > } > > > } > > > > function hide(){ > > > $("#ajaxresults").hide(); > > > } > > > > function copyToBox(value){ > > > $("#pacient").val(value); > > > hide(); > > > } > > > > On 20 ene, 15:34, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > OK > > > > > items = [DIV(A(pacient.nombre, > > > > _href="res%s"%j, > > > > _onclick="copyToBox(jQuery('#res%s').html > > > > ()"%j),_id="resultLiveSearch") \ > > > > for (j,patience) in enumerate(pacientes)] > > > > return TAG[''](*items) > > > > > On Jan 20, 11:11 am, Mandriluy <msr...@gmail.com> wrote: > > > > > > Sorry to reply again, i correct some mistakes i found and now is > > > > > working :-) thing is.. with that method you make a hole div with the > > > > > items.. what i need is a div per item . [div]item[/div] > > > > > > On 20 ene, 14:45, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > > I rearranged your code to make is a little shorter, faster and > > > > > > eliminate XSS vulnerability: > > > > > > > def ajaxlivesearch(): > > > > > > resultadoParcial = request.vars.values()[0] > > > > > > array = resultadoParcial.split() > > > > > > query = reduce(lambda a,b:a&b, [db.Paciente.like('%'+a+'%') > > > > > > for a in array]) > > > > > > pacientes = > > > > > > db(query).select(db.Paciente.nombre,limitby=(0,7)) > > > > > > j = 0 > > > > > > items = [A(pacient.nombre, > > > > > > _href="res%s"%j, > > > > > > _onclick="copyToBox(jQuery('#res%s').html > > > > > > ()"%j) \ > > > > > > for (j,patience) in enumerate(pacientes)] > > > > > > return DIV(_id="resultLiveSearch",*items) > > > > > > > You code was not working probably because the you were returning a > > > > > > list, instead of one of a dict() or string. If you return an > > > > > > iterable > > > > > > (like a list) web2py thinks you want to do streaming. > > > > > > > Moreover every time you find yourself manipulating string to build > > > > > > HTML like in '<div...' some is wrong. You are putting yourself at > > > > > > risk > > > > > > of XSS vulnerabilities or just does not work because web2py escaped > > > > > > it > > > > > > by default: '%ltg;div...'. > > > > > > > Let us know if this fixes your problem. > > > > > > > On Jan 20, 9:57 am, Mandriluy <msr...@gmail.com> wrote: > > > > > > > > Hey guys, im new to Web2Py AND python ... my goal was to learn > > > > > > > python > > > > > > > while i move a site i did in php to web2py and im almost > > > > > > > finishing :D > > > > > > > > Im stuck a bit with ajax and partial queries , im going to detail > > > > > > > a > > > > > > > bit what i mean about partial queries. > > > > > > > > I have a field in the DB that has multiple text (yeah thats not > > > > > > > relational definition) ... imagine i have a field called Name > > > > > > > where i > > > > > > > store the full name of a person. First Name , Second Name, > > > > > > > Surname , > > > > > > > Second Surname, etc.. > > > > > > > > What i want is to live search with ajax that DB field so if i > > > > > > > write > > > > > > > the first name it matches and second name also, and so on. > > > > > > > > What i did for that an array splitted by spaces and then what i > > > > > > > need > > > > > > > is a way i can use AND with LIKE ... the way i saw in the > > > > > > > documentation > > > > > > > (db.Table.name.like('%array[0]%''))&(db.Table.name.like > > > > > > > ('%array[1]%'')) is not working for me.. im using ajax the same > > > > > > > way i > > > > > > > use it for PHP not using the ajax html file is providen.. im > > > > > > > using my > > > > > > > own files. > > > > > > > > I have to say its working without the AND so it works for the > > > > > > > first > > > > > > > name pretty well :-) . I will share my code commented because i > > > > > > > write > > > > > > > some part in spanish. > > > > > > > > def ajaxlivesearch(): > > > > > > > resultadoParcial = request.vars.values()[0] #I store the > > > > > > > partial > > > > > > > result the user is typing on the textbox > > > > > > > array_resultadoParcial = resultadoParcial.split(' ') # i > > > > > > > split with > > > > > > > spaces and store in a list / array > > > > > > > > #so if the user type his first name.. the array has 1 > > > > > > > item or > > > > > > > none and this works like a charm > > > > > > > if len(array_resultadoParcial) <= 1: > > > > > > > query = > > > > > > > db.Paciente.nombre.like('%'+array_resultadoParcial[0]+'%') > > > > > > > else: #if the array has more items i will iterate it > > > > > > > but i need to > > > > > > > use the AND to "join" every iteration > > > > > > > for index in > > > > > > > range(0,len(array_resultadoParcial)-1): > > > > > > > query = query & > > > > > > > db().Paciente.nombre.like('%'+array_resultadoParcial > > > > > > > [index]+'%') > > > > > > > > pacientes = > > > > > > > db(query).select(db.Paciente.nombre,limitby=(0,7)) > > > > > > > j = 0 > > > > > > > retorno = [] > > > > > > > for paciente in pacientes: #i iterate into the query > > > > > > > result object > > > > > > > and return a list of data > > > > > > > retorno.append('<div id="resultLiveSearch"><a > > > > > > > href="#" id="res'+str > > > > > > > (j)+'" onclick="copyToBox(document.getElementById(\'res'+str(j) > > > > > > > +'\').innerHTML)">'+paciente.nombre+'</a></div>') > > > > > > > j+=1 > > > > > > > return retorno > > > > > > > > Thanks in advanced :-)
-- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.