[dancer-users] list order from a hash

Attila Bárdi attila.bardi at gmail.com
Wed Aug 26 18:43:29 BST 2015


Hey,

I’m using hash and sorting it from the template toolkit.
I would advise to try it then later you can play with the speed.

Best regards,
Attila


> On 26 Aug 2015, at 19:39, Richard Reina <gatorreina at gmail.com> wrote:
> 
> Andrew and Attilla,
> 
> Thank you for the replies.  I am guessing that keeping the sorting in the SQL instead of the HTML would mean the page would load faster so I trying to go that route.
>  
> However, when I switch my code above to:
> 
>     <% FOREACH job in Jobs %>
>         <option value="<% job.ID %>"><% Job.NAME %></option>
>         <% END %>
> 
> I get an empty dropdown. I am using $sth->fetchall_arrayref(); with no arguments. Sorry to ask, but been playing with it for over an hour and still have it figured it out.
> 
> 
> 2015-08-26 9:04 GMT-05:00 Andrew Beverley <andy at andybev.com <mailto:andy at andybev.com>>:
> On Wed, 2015-08-26 at 08:51 -0500, Richard Reina wrote:
> > I have this table data that I load into a template as follows.
> >
> >   $q = "SELECT ID, NAME
> >                 FROM jobs
> >                 ORDER BY NAME";
> >        $sth = $dbh->prepare($q);
> >        $sth->execute();
> >        my $Jobs_ref = $sth->fetchall_hashref('ID');
> 
> use fetchall_arrayref() instead.
> 
> > To display it in the template as a drop-down select I do:
> >
> >     <select class="selectpicker" name="jobselect" id="jobselect"
> > style="width: 500px;">
> >               <% FOREACH ID IN Jobs.keys %>
> 
> Here you just need something like
> 
>     FOREACH job in Jobs
> 
> >         <option value="<% Jobs.$ID.ID <http://id.id/> %>"><% Jobs.$ID.NAME <http://id.name/> %></option>
> 
> And then here use job.ID, job.NAME etc.
> 
> > And it works great. Except for one thing, the list is not in order by name.
> > I have read more than a few posts about how once you save a query as a
> > hashref that the order is lost.
> 
> Yes, in Perl arrays are ordered, hashes are not. If you want to retain order, you
> must use an array (or sort the hash before use, which is expensive).
> 
> >  Most of those posts suggested fetching as a
> > arrayref instead. However, I have no idea how to do that and then display
> > it in a select like the above code does.
> 
> See above.
> 
> 
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm <mailto:dancer-users at dancer.pm>
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users <http://lists.preshweb.co.uk/mailman/listinfo/dancer-users>
> 
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20150826/5e768874/attachment.html>


More information about the dancer-users mailing list