[dancer-users] list order from a hash

Richard Reina gatorreina at gmail.com
Wed Aug 26 19:09:50 BST 2015


Hi Attila,

 <% FOREACH ID IN Jobs.keys.sort %>

but multi-word lists do not appear exactly alphabetical as they do when
MySQL sorts them by name.



2015-08-26 12:43 GMT-05:00 Attila Bárdi <attila.bardi at gmail.com>:

> 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>:
>
>> 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
>> 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
>
>
>
> _______________________________________________
> 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/54d6aa46/attachment.html>


More information about the dancer-users mailing list