Visualizzazione risultati 1 fino 1 di 1

Discussione: Creare array multidimensionale per dividere in categorie il contenuto

  1. #1
    Guest

    Predefinito Creare array multidimensionale per dividere in categorie il contenuto

    Come da titolo ho esigenza di creare un array multidimensionale in modo da poter dividere il contenuto in base a dei valori uguali nelle tabella. Ho una struttura della tabella così:
    Codice:
    Campo  		Tipo   		Null  	Predefinito
    lyric_id 	mediumint(8) 	No
    lyric_name 	varchar(255) 	No
    lyric_album 	mediumint(8) 	No   	0
    lyric_text 	text 		No
    lyric_music 	varchar(255) 	No
    lyric_by 	varchar(255) 	No
    lyric_cd 	tinyint(1) 	No   	0
    lyric_order 	tinyint(1) 	No   	0
    Dove l'indice della'array sarà lyric_cd, in modo da dividere il tutto per CD. Poi estraggo i dati con questa query:
    Codice PHP:
    $sql = 'SELECT lyric_id, lyric_name, lyric_album, lyric_cd, lyric_order
    FROM '
    . BANDS_LYRICS_TABLE . '
    WHERE lyric_album = '
    . $album . '
    ORDER BY lyric_cd, lyric_order'
    ;
    Cerco di creare l'array in questo modo:
    Codice PHP:
    while($row = $db->sql_fetchrow($result))
    {
    $lyric[$row['lyric_cd']] = array(
    'id' => $row['lyric_id'],
    'name' => $row['lyric_name'],
    );
    }
    Poi faccio due foreach in questo modo:
    Codice PHP:
    foreach ($lyric as $cd => $data)
    {
    echo
    'CD: ' . $cd . "\n";
    foreach (
    $data as $item => $value)
    {
    echo
    $item . ' ' . $value . " - ";
    }
    }
    ma stampa tutto sbagliato, perchè l'array generato è questo:
    Codice:
    Array
    (
        [1] => Array
            (
                [id] => 1
                [name] => Blank File
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 2
                [name] => My Land
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 3
                [name] => 8th Commandment
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 4
                [name] => Replica
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 5
                [name] => Kingdom for a Heart
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 6
                [name] => Fullmoon
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 6
                [name] => Fullmoon
            )
    
        [2] => Array
            (
                [id] => 7
                [name] => Letter to Dana
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 6
                [name] => Fullmoon
            )
    
        [2] => Array
            (
                [id] => 8
                [name] => UnOpened
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 6
                [name] => Fullmoon
            )
    
        [2] => Array
            (
                [id] => 9
                [name] => Picturing the Past
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 6
                [name] => Fullmoon
            )
    
        [2] => Array
            (
                [id] => 10
                [name] => Destruction Preventer
            )
    
    )
    
    Array
    (
        [1] => Array
            (
                [id] => 6
                [name] => Fullmoon
            )
    
        [2] => Array
            (
                [id] => 11
                [name] => Mary-Lou
            )
    
    )
    Come devo strutturare nel while() per la creazione dell'array correttamente in modo da poterlo poi scorrere e stampare per CD il contenuto?
    Grazie in anticipo

    Ho risolto così:
    Codice PHP:
    $sql = 'SELECT lyric_id, lyric_name, lyric_album, lyric_cd, lyric_order, LEFT(TRIM(lyric_text), 1) AS s_link
    FROM '
    . BANDS_LYRICS_TABLE . '
    WHERE lyric_album = '
    . $album . '
    ORDER BY lyric_cd, lyric_order'
    ;
    $result = $db->sql_query($sql);

    while(
    $row = $db->sql_fetchrow($result))
    {
    $lyric[$row['lyric_cd']][$row['lyric_id']] = $row['lyric_name'];
    }

    foreach(
    $lyric as $cd => $data)
    {
    echo
    'CD: ' . $cd . "\n";

    foreach (
    $data as $item => $value)
    {
    echo
    $item . ' ' . $value . " - ";
    }
    }
    Ultima modifica di biccheddu : 19-12-2009 alle ore 15.59.39 Motivo: Risolto

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •