> -----Original Message----- > From: Justin Patrin [mailto:[EMAIL PROTECTED] > Sent: Sunday, December 14, 2003 2:55 AM > To: [EMAIL PROTECTED] > Subject: Re: [PHP] Sorting arrays > > > Jake McHenry wrote: > > >>-----Original Message----- > >>From: Bronislav Klucka [mailto:[EMAIL PROTECTED] > >>Sent: Sunday, December 14, 2003 2:22 AM > >>To: Jake McHenry > >>Cc: 'Php-general' > >>Subject: RE: [PHP] Sorting arrays > >> > >> > >> > >>>>Try to explain a little bit more how the arrays could be sorted > >>>>asscending and by hitting back and submitting form > >> > >>suddnely sorted > >> > >>>>descending... > >>>> > >>>> > >>>>Brona > >>>> > >>>> > >>>>>Does anyone know of a way to keep sort from reversing the > >>>> > >>>>array order? > >>>> > >>>>>That is kinda fuzzy, let me explain. > >>>>> > >>>>>I have a couple arrays that I am sorting. If the user hits the > >>> > >>>back > >>> > >>>>>button in their browser, and hits submit again without > > > > changing > > > >>>>>anything, the array is sorted again, now in decending order > >>>> > >>>>instead of > >>>> > >>>>>ascending as it was the first time around. > >>>>> > >>>>>The arrays contain dates, and I want them in ascending order. > >>>>> > >>>>>Is there a way to limit any of the sort routines to ascending > >>> > >>>only? > >>> > >>>>>Thanks, > >>>>> > >>>>>Jake McHenry > >>>>>Nittany Travel MIS Coordinator http://www.nittanytravel.com > >>>>> > >>>>>-- > >>>>>PHP General Mailing List (http://www.php.net/) > >>>>>To unsubscribe, visit: http://www.php.net/unsub.php > >>>>> > >>>> > >>>This page is for adding / editing / removing airline reservations. > > > > > >>>What I have done so far is when the user first gets to this > >> > >>specific > >> > >>>page, they enter their info. If they put a check in the add next > >>>flight checkbox, then the same form comes up again, each > >> > >>time adding > >> > >>>the new info to the same array, building upon the old info. > >> > >>The arrays > >> > >>>are then displayed back into form fields where the user can > >> > >>edit any > >> > >>>info submitted. > >>> > >>>I'm sorting the arrays by the flight dates. Each time the > >> > >>user enters > >> > >>>a new flight, the array is sorted by date. This is where I'm > > > > seeing > > > >>>the problem. The first flight is fine, of course. The > >> > >>second is fine. > >> > >>>The third flight entered and all of the flights are now in reverse > > > > > >>>order. Then the next flight entered, they're all in the > >> > >>correct order, > >> > >>>etc, etc. > >>> > >>>This problem will most likely happen to my other arrays > >> > >>further on in > >> > >>>the project. > >>> > >>>Is there any way I can make sure that the dates are always in the > >>>correct order? > >>> > >> > >>I'm pretty confused.... so user puts information into form, > >>he/she submits it, and you have 1 date, he press back button, > >>fill the same form again submits form, new date is added and > >>it's in correct order, he/she does it for the third and it's > >>in reverse order, he/she does it for the fourth and it's in > >>correct order... funny... could you paste here the sorting > >>part of code? > >> > >> > >>Brona > >> > > > > > > The user doesn't even have to hit back, each time the form is > > submitted, the data is rearranged in opposite order. Too > keep my data > > together, here is what the data in the arrays looks > > like: > > > > Array > > ( > > [0] => 01-30-2004|Wilkes-Barre|PA|Salt Lake|UT||Yes|Yes > > [1] => 01-16-2004|Wilkes-Barre|PA|Salem|WA||Yes|Yes > > [2] => 01-02-2004|Wilkes-Barre|PA|Denver|CO||Yes|Yes > > [3] => 01-08-2004|Denver|CO|Wilkes-Barre|PA||No|No > > [4] => 01-23-2004|Salem|WA|Wilkes-Barre|PA||No|No > > [5] => 02-11-2004|Salt Lake|UT|Wilkes-Barre|PA||No|No > > ) > > > > > > Then, in my script, after the new data is merged with the existing
> > array, I sort: > > > > $array = $_SESSION['Air_Reservations']; > > sort($array) > > > > New output: > > > > Array > > ( > > [0] => 02-11-2004|Salt Lake|UT|Wilkes-Barre|PA||No|No > > [1] => 01-23-2004|Salem|WA|Wilkes-Barre|PA||No|No > > [2] => 01-08-2004|Denver|CO|Wilkes-Barre|PA||No|No > > [3] => 01-02-2004|Wilkes-Barre|PA|Denver|CO||Yes|Yes > > [4] => 01-16-2004|Wilkes-Barre|PA|Salem|WA||Yes|Yes > > [5] => 01-30-2004|Wilkes-Barre|PA|Salt Lake|UT||Yes|Yes > > ) > > > > > > See now? I didn't add a new record this time, but it > happens with our > > without adding anything new. Each time the array is sorted, this > > happens. > > > > > > > > Thanks, > > Jake > > It may be that because those are strings they are being sorted > strangely. I have two suggestions. > > 1) Use a sub-associative array or an object for those > entries. Delimited > strings are ok, but actual structures are generally better. > > 2) use usort() and specify a function which sorts those dates > correctly > (sorting those won't sort by year, only month). OR you could convert > those dates to UNIX timstamps (with strtotime() possibly) and > sort them > that way (this may also require using usort()). > > Try making an array with ONLY dates in it (not the extra > info) and see > if it sorts those correctly. > > One more thing: how are you passing these values between pages? > > -- > paperCrane <Justin Patrin> > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > The data is being passed via POST arrays, then I'm taking the POST data, running through a foreach loop, and creating the string, then putting back into an array. The sort is only called once, after everything is done, right before the array is stored in the session variable. I really don't want to change the way I have the arrays, I have a lot of time put into this. I'll try creating a new array with just the dates and try sorting, let you know what happens. Thanks, Jake McHenry Nittany Travel MIS Coordinator http://www.nittanytravel.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php