On 04 March 2004 19:04, [EMAIL PROTECTED] wrote:

> On Thu, 4 Mar 2004 10:55:20 -0000, Ford, Mike               [LSS]
> <[EMAIL PROTECTED]> wrote:
> 
> > On 03 March 2004 17:07, [EMAIL PROTECTED] wrote:
> > 
> > > Here's the php code for the sort command:
> > > 
> > > echo "<td><div align='center'><font size='3'><b>CBC <a
> > > href='contributions22504.php?sort_field=cbc,
> > > net_receipts&sort_order=desc'
> > > target='_self'><font size='2'>Sort</a></b></font></div></td>\n";
> > > 
> > > Here's the basic setup that begins the script:
> > > 
> > > # get sort order (if any) passed to script
> > > $sort_field = $_REQUEST['sort_field'];
> > > if (! $sort_field) {$sort_field = "State";}
> > > $sort_order = $_REQUEST['sort_order'];
> > > if (! $sort_order) {$sort_order = "asc";}
> > 
> > Well, you're going to need an order phrase that looks like this:
> > 
> >     ORDER BY CBC DESC, NET_RECEIPTS ASC
> > 
> > so you may need a little rethink about how you're passing those
> > arguments. 
> > 
> > Cheers!
> > 
> > Mike
> > 
> Thanks, but you're past my level.  Can you show me the exact coding I
> should use?

Well, not really, as there are several ways you could approach this and the one you 
choose will depend on your exact application, personal preference, and whether there's 
an "r" in the month ;)

>  Apparently I can't just replace SORT_FIELD=CBC,
> NET_RECEIPTS&SORT_ORDER=DESC with ORDER BY CBC DESC, NET_RECEIPTS ASC

Well, you can, but the question is more whether that's what you want to do.

My original point was that if your URL has a query string that looks like

    ?sort_field=cbc, net_receipts&sort_order=asc

then you're going to get your variables set like this:

    $sort_field = 'cbc, net_receipt';
    $sort_order = 'asc';

but you need to interpolate an additional 'desc' into the sort order string to get the 
CBC column to sort the way you want, so that the query ends up like:

    SELECT ... ORDER BY cbc DESC, net_receipts asc

Whilst this is possible using PHP string functions (or regexes), it doesn't seem like 
the easiest or most flexible method.  A couple of alternatives off the top of my head 
might be:

(i) just pass the full ORDER BY phrase (...?sort_order=cbc desc, net_receipts asc)

(ii) pass multiple parameters each with one column name and sort order (either 
...?sort1=cbc desc&sort2=net_receipts asc, or ?sort[]=cbc desc&sort[]=net_receipts asc)

(iii) pass a parameter with a set of column names, and another with a matching set of 
sort orders (...?sort_field=cbc,net_receipts&sort_order=desc,asc).  This requires you 
to break each set apart (by explode()ing on the comma, say), then reassemble them into 
a suitable ORDER BY phrase.  This option probably also requires you to do the most 
validation, as you have to decide what happens when one set has more items in it than 
the other, or is misformed in some other way, and so on.

Of course, you might decide that column CBC always wants to be sorted descending 
regardless, in which case looking for it in the parameters and interpolating the 
required DESC keyword is probably the way to go after all...!!

At the end of the day, only you can decide which of these is appropriate (or if some 
other solution is), but I hope I've given you some pointers to help you make that 
decision.

Cheers!

Mike

---------------------------------------------------------------------
Mike Ford,  Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS,  LS6 3QS,  United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730      Fax:  +44 113 283 3211 

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to