2014-12-02 3 views
0

Задумывался, может ли кто-нибудь помочь мне в построении многомерного массива, застрял на нем уже довольно давно. Я использую базу данных PHP и MySQL У меня есть 3 таблицы «Трофеи» «Победители» и «LinkTable» (Полная структура ниже) Мне нужно отобразить все данные трофеев (изображение описания имени) и таблицу ниже, показывающую всех предыдущих победителей трофей;Вывод многомерных массивов php mysql

Это требуемый выход ...

Trophy1Name     [Trophy1Image] 
Trophy1Description 
Year FirstName SecondName 

мне это нужно, чтобы петли для всех остальных трофеев в БД (9 всего), следовательно, почему мне нужен массив, проблема им с, я могу показать все трофеи с их изображением и описанием в цикле, но я не могу понять, как добавить всех предыдущих победителей в таблицу.

Ближайший iv придет, чтобы закрепить каждого победителя, но это также повторяет детали трофеев снова и снова, не совсем идеально, когда у меня более 300 разных победителей.

Это моя MySQL структура таблицы и присоединиться:

Trophies  Winners  LinkTable 
-------- --------- --------- 
TrophyID  WinnerID LT_WinnerID 
TrophyName FirstName LT_TrophyID 
Description SecondName 
Image   Year 

Регистрация:

$trophylist = mysql_query(" 
SELECT TrophyID, TrophyName, Description, Image, WinnerID, FirstName, SecondName, Year 
FROM LinkTable 
INNER JOIN Winners ON (LinkTable.LT_WinnerID = Winners.WinnerID) 
INNER JOIN Trophies ON (LinkTable.LT_TrophyID = Trophies.TrophyID)"); 

ответ

0

Это не звучит как проблема запроса. Звучит скорее как проблема с дисплеем. БД будет естественно возвращать всех победителей трофея, что требует, чтобы результирующий набор повторял название этого трофея в каждой записи. Вы должны написать PHP-код, чтобы правильно интерпретировать это.

например. в коде псевдо-иш:

$prev_trophy = null; 
while($row = fetch_from_db($query_result)) { 
    if ($row['TrophyID'] != $prev_trophy) { 
     ... got a new trophy, so output trophy header stuff here 
     $prev_trophy = $row['TrophyID']; 
    } 
    ... output winner information 
} 

До тех пор, пока у вас есть соответствующий order by пункт в вашем запросе, вышеупомянутый стиль кода будет выводить детали трофея один раз в качестве заголовка. Для последующих записей одного и того же трофея будет выводиться только информация победителя

+0

Работало отлично! Спасибо! – user3527102

Смежные вопросы