Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Usean valinnaisen parametrin multisort

tsuriga [20.03.2006 08:54:39]

#

Järjestyskäskyt osoiterivillä muotoa: sort=2A-5D-3
Tämän olisi tarkoitus järjestää tietokannasta saatu kaksiulotteinen taulukko ensin taulukon kakkosindeksin mukaan nousevasti, sitten vitosindeksin mukaan laskevasti ja lopuksi kolmosindeksin mukaan nousevasti. Järkeilin tätä niin, että toisin sanoen skriptin tulisi suorittaa käsky

array_multisort($arr_sort[2], $arr_sort[5], SORT_DESC, $arr_sort[3], $arr)

(missä $arr_sort on lowercase-ilmentymä taulukosta $arr). Sain muodostettua merkkijonon multisortin parametreista, joka oli esim. muotoa

$multisortquery = '$arr_sort[4], 3, $arr'

vaan evalin kanssa sain aina jotakin virhettä aikaiseksi (lähinnä parse-erroria). Kokeilin mm. tällaisen kaltaisia:

eval("array_multisort($multisortquery);");
eval('array_multisort($multisortquery);');
array_multisort(eval($multisortquery));

Olisikohan jollain parempaa tietoa evalin oikeaoppisesta käytöstä tai jotakin vaihtoehtoista lähestysmistapaa ongelmaan? Mietin myös usean multisortin ajoa loopilla vaan kuinkas skripti sitten muistaa säilyttää jo tehdyt järjestykset seuraavan kierroksen sorttauksessa.

Ps. Tarvittavat varotoimenpiteet evalin käytössä on tehty.

folio [20.03.2006 14:23:01]

#

No tähän tapaan se ainakin toimii:

$es = 'array_multisort($arr_sort[4], 3, $arr);';

eval($es);

tsuriga [20.03.2006 17:47:53]

#

Nojuu, taisin testata tuotakin, virheilmoitus on ainakin tuttu:

Warning: array_multisort(): Array sizes are inconsistent in /ftphome/animelegacy/REQUIRE/al_functions.inc.php(131) : eval()'d code on line 1

Indeksien taulukot tosiaan ovat eri kokoa kuin koko taulukko, selkeä virhe siis sinänsä. Tosin ei auta puusta pitkään ko pitäisi $arr_sort sortata ja saada $arr-taulukon muokkaamattomat tekstirivit samoille paikoille kuin multisortatussa $arr_sortissa. On kyllä mahdollisimman käyttäjäepäystävällinen funktio koko array_multisort, olkoon miten hip'n'cool hyvänsä äärettömine parametreineen.

folio [20.03.2006 19:45:16]

#

Mielestäni tuossa funktiossa ei olisi mitään järkeä jos nuo taulukot voisivat olla erikokoiset. Voitko hieman selventää tuota tietokannan rakennetta ja tapaa millä luot tuon arr_sort-taulukon.

tsuriga [20.03.2006 19:58:49]

#

Luovuin PHP-purkasta kun voi tehdä suoraan kyselyssä. Ratkaisu löytyi vähän (turhan) myöhään kun en SQL:ää vielä niin hyvin tunne.

Ratkaisu:
Tietokantakyselyssä sorttaus "ORDER BY $indeksi1 $suunta1, $indeksi2 $suunta2..". (Ja niin etiäpäin kunnes kyselystä löytyy kaikki annetut järjestyssäännöt)

ajv [20.03.2006 20:10:32]

#

Hehee... meinasin heti alussa jo kysyä, että mikset tee sorttausta kyselyssä, mutta ajattelin, että kait tarkotat tietokannalla kluitenkin tekstitiedostoa. :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta