-----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?
This page is for adding / editing / removing airline reservations.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
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