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ì:
Dove l'indice della'array sarà lyric_cd, in modo da dividere il tutto per CD. Poi estraggo i dati con questa query: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
Cerco di creare l'array in questo modo: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';
Poi faccio due foreach in questo modo:Codice PHP:while($row = $db->sql_fetchrow($result))
{
$lyric[$row['lyric_cd']] = array(
'id' => $row['lyric_id'],
'name' => $row['lyric_name'],
);
}
ma stampa tutto sbagliato, perchè l'array generato è questo:Codice PHP:foreach ($lyric as $cd => $data)
{
echo 'CD: ' . $cd . "\n";
foreach ($data as $item => $value)
{
echo $item . ' ' . $value . " - ";
}
}
Come devo strutturare nel while() per la creazione dell'array correttamente in modo da poterlo poi scorrere e stampare per CD il contenuto?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 ) )
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 . " - ";
}
}

LinkBack URL
About LinkBacks
