Avatar billede mrfunder Nybegynder
10. september 2008 - 13:33 Der er 3 kommentarer og
1 løsning

Liste funktion med fortegn?

Hej Eksperter.

Jeg har en lang række film titler i min database. Jeg vil så gerne liste dem således jeg trækker dem ud via en while og kategorisere dem efter filmens fortegn taget fra titlen:

Eksempel:

A
- Alien VS Predator
- American Gangstars

C
- Chile is a country
- Chinese pangdang
- Chop Chopper

R
- Run away Bride

Er der nogle der har ideer til hvorledes dette kan laves? Jeg er umiddelbart selv blank.

Hvis muligt eventuelt i vil illustrere med et kode eksempel.

På forhånd mange tak-
Avatar billede j4k0b Nybegynder
10. september 2008 - 13:47 #1
Det kunne gøres sådan her (er ikke testet så beklager tastefejl):


function _getItems() {
    $res = mysql_query("SELECT * FROM tblMovies ORDER BY title ASC") or die(mysql_error());
    $items = array();
    while($row = mysql_fetch_array($res)) {
        array_push($items[], $row);
    }
    return $items;
}

function _sortItems($items) {
    $sortedItems = array();
    if(!count($items)) {
        return array();
    }
    foreach($items as $movie) {
        $first = strtolower(substr($movie['title'], 0, 1));
        if(!array_key_exists($first, $sortedItems)) {
            $sortedItems[$first] = array();
        }
        array_push($sortedItems[$first], $movie);
    }
    return $sortedItems;
}



// Eksempel

$items = _sortItems(_getItems());
foreach($items as $first => $movies) {
    print strtoupper($first).'<br>';
    foreach($movies as $movie) {
        print '- '.$movie['title'].'<br>';
    }
    print '<br>';
}
Avatar billede j4k0b Nybegynder
10. september 2008 - 13:51 #2
et par småting rettet;)


function _getItems() {
    $res = mysql_query("SELECT * FROM tblMovies ORDER BY title ASC") or die(mysql_error());
    $items = array();
    while($row = mysql_fetch_array($res)) {
        array_push($items, $row);
    }
    return $items;
}

function _sortItems($items) {
    if(!count($items)) {
        return array();
    }
    $sortedItems = array();
    foreach($items as $movie) {
        $first = strtoupper(substr($movie['title'], 0, 1));
        if(!array_key_exists($first, $sortedItems)) {
            $sortedItems[$first] = array();
        }
        array_push($sortedItems[$first], $movie);
    }
    return $sortedItems;
}



// Eksempel

$items = _sortItems(_getItems());

if(count($items)) {
    foreach($items as $first => $movies) {
        print $first.'<br>';
        foreach($movies as $movie) {
            print '- '.$movie['title'].'<br>';
        }
        print '<br>';
    }
} else {
    print 'Ingen film :-(';
}
Avatar billede mrfunder Nybegynder
10. september 2008 - 16:29 #3
Perfekt.. jeg takker mange gange :))

Smid et svar
Avatar billede j4k0b Nybegynder
10. september 2008 - 19:33 #4
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester