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



Reply via email to