> -----Original Message----- > From: Jake McHenry [mailto:[EMAIL PROTECTED] > Sent: Sunday, December 14, 2003 3:14 AM > To: 'Justin Patrin' > Cc: 'Php-general' > Subject: RE: [PHP] Sorting arrays > > > > -----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 > > > > Ok, built the test array, here's the code and results: > > foreach ($_POST['Change_Date'] as $key => $value) > { > $build = "{$_POST['Change_Date'][$key]}|"; > $build .= "{$_POST['Change_Departure_City'][$key]}|"; > $build .= "{$_POST['Change_Departure_State'][$key]}|"; > $build .= "{$_POST['Change_Destination_City'][$key]}|"; > $build .= "{$_POST['Change_Destination_State'][$key]}|"; > $build .= > "{$_POST['Change_Preferred_Flight_Times'][$key]}|"; > $build .= "{$_POST['Change_Need_Car'][$key]}|"; > $build .= "{$_POST['Change_Need_Hotel'][$key]}"; > $old = array_merge($build, $old); > > $test = "{$_POST['Change_Date'][$key]}"; > $array = array_merge($test, $array); > } > $_SESSION['Air_Reservations'] = $old; > } > print_r($array); > > > I'm seeing that just the dates are doing the exact same thing, without > even being sorted. Could this be because of the foreach loop? > > The sorting function call is called later after all the arrays are > built, and I'm seeing the problem before sorting happens. > > What is causing this, and why isn't the sorting function working.. > Since it's called later after the arrays are built? Even if this > problem existed, the when sort is called, shouldn't it sort the data > into the correct order? > > Thanks, > Jake > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >
It was the way I was using array_merge. I was merging the old data with the new data, I switched the order of the merge and the problem seems to have gone away. I'm very tired.. Sorry about all this. Guess I just needed to talk my way through it. 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