2013-04-23 5 views
-3

Привет всем, у вас хороший день. У меня есть вопрос относительно эхо формы значения базы данных MySQL Теперь у меня есть имя таблицы --->materialachievement Внутри таблицы я есть 3 колонки (глава, Подраздел и часть)данные эха из базы данных mysql

данные, как показано ниже:

chapter  subchapter   part 
------------------------------------- 
2    2.1    1 
2    2.1    2 
2    2.1    3 
2    2.2    1 
2    2.2    2 
3    3.1    1 
3    3.1    1 
------------------------------------- 

Теперь я хочу сделать таблицу эха главы 2 и 3 и в главе 2 имеет подраздел 2.1 и п 2,2 внутри подраздела 2.1 имеет часть 1, 2, 3 и в п 2,2 имеет часть 1, 2

структура, как:

2 
2.1 
    1 
    2 
    3 
2.2 
    1 
    2 

Так что мой вопрос, как я могу просто повторить главу 2 за один раз, а затем п 2,1 за один раз, а затем перейти к части 1, 2, 3? то же самое с солнечным светом 2.2.

$query="SELECT * FROM materialachievement WHERE sID=$id GROUP BY (chapter and subchapter) ORDER BY chapter ASC , subchapter ASC "; 

$result=mysql_query($query,$conn); 

if($result === FALSE) 
{ 
die(mysql_error()); // TODO: better error handling 
} 

while($row=mysql_fetch_array($result)) 
{ 
    $chapter = $row['chapter']; 
    $subchapter = $row['subchapter']; 

    echo "<br>Chapter :".$chapter."<br>"; 
    echo "<br>Subchapter :".$subchapter."<br>"; 
} 

теперь результат предположим быть: глава 2, п 2.1, п 2.2, п 2,3 и глава 3, п 3,1, п 3,2

+6

Покажите, что вы пробовали, и мы поможем вам исправить это. Вам просто нужно сохранить последнюю главу и подглаву в переменной и проверить, отличается ли новая строка. – Barmar

+0

$ query = "SELECT * FROM materialachievement WHERE sID = $ id GROUP BY (глава и подглав) ORDER BY chapter ASC, подглав ASC"; \t \t \t \t \t $ result = mysql_query ($ query, $ conn); if ($ result === FALSE) { die (mysql_error()); // TODO: лучше обработки } \t то время как ошибка ($ строка = mysql_fetch_array ($ результат)) \t \t \t \t \t \t \t \t \t { \t \t \t \t \t \t \t \t \t \t $ глава = $ строки [ 'глава']; \t \t \t \t \t \t \t \t \t \t $ = $ п строки [ 'п']; \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t эхо "
Глава:".$ chapter. "
"; \t \t \t \t \t \t \t \t \t \t эхо "
Глава:" $ п "
";.. } – boon

+0

Поместите его в свой вопрос, чтобы он был правильно отформатирован. – Barmar

ответ

0
$query="SELECT * FROM materialachievement WHERE sID=$id ORDER BY chapter ASC, subchapter ASC, part ASC "; 

$result=mysql_query($query,$conn); 

if($result === FALSE) 
{ 
die(mysql_error()); // TODO: better error handling 
} 

$last_chapter = null; 
while($row=mysql_fetch_array($result)) 
{ 
    $chapter = $row['chapter']; 
    $subchapter = $row['subchapter']; 
    $part = $row['part']; 
    if ($last_chapter !=== $chapter) { 
     echo "Chapter: $chapter<br>"; 
     $last_chapter = $chapter; 
     $last_subchapter = null; 
    } 
    if ($subchapter !== $last_subchapter) { 
     echo "Subchapter: $subchapter<br>"; 
     $last_subchapter = $subchapter; 
    } 
    echo "Part: $part<br>"; 
} 
+0

большое спасибо, про человек, и действительно профессионал u помогите решить эту проблему, которую я застрял много дней, еще раз спасибо за помощь, и я думаю, что нашел правильный канал, чтобы спросить мою проблему, спасибо Barmer. – boon

+0

Много дней для решения этой тривиальной проблемы? Как трудно просто установить переменную, чтобы увидеть, что вы уже что-то напечатали? – Barmar

+0

хе-хе, потому что я все еще новичок в php, mysql и мой базовый недостаточно силен что застрял на целый день последний раз у меня есть еще одна проблема, которая уже решила застрять на несколько недель, так грустно ... но, к счастью, u помогите мне решить проблему в течение секунды еще раз спасибо – boon

1

надеюсь, что это поможет

$data=array(); 
$data[] = array("chapter" => "2",    "subchapter" => "2.1",    "part" => "1"    ); 
$data[] = array("chapter" => "2",    "subchapter" => "2.1",    "part" => "2"    ); 
$data[] = array("chapter" => "2",    "subchapter" => "2.1",    "part" => "3"    ); 

$data[] = array("chapter" => "2",    "subchapter" => "2.2",    "part" => "1"    ); 
$data[] = array("chapter" => "2",    "subchapter" => "2.2",    "part" => "2"    ); 

$data[] = array("chapter" => "3",    "subchapter" => "3.1",    "part" => "1"    ); 
$data[] = array("chapter" => "3",    "subchapter" => "3.1",    "part" => "1"    ); 

$new_array=array(); 

foreach($data AS $v){ 

    if(!array_key_exists($v['chapter'],$new_array)){ 
     $new_array[$v['chapter']]=array(); 
    } 
    if(!array_key_exists($v['subchapter'],$new_array[$v['chapter']])){ 
     $new_array[$v['chapter']][$v['subchapter']]=array(); 
    } 
    $new_array[$v['chapter']][$v['subchapter']]=$v['part']; 

} 

print_r($new_array); 

выход

Array 
(
    [2] => Array 
     (
      [2.1] => 3 
      [2.2] => 2 
     ) 

    [3] => Array 
     (
      [3.1] => 1 
     ) 

) 
+0

спасибо за помощь, но моя проблема заключается в том, что данные в базе данных mysql не статичны. Например: теперь моя база данных имеет только главы 2 и 3, а затем заголовок ..... , но позже пользователь может добавить еще главу, как главу 4, 5 .... так ... – boon

+0

так что у вас есть другое представление об этом? спасибо – boon

+0

$ data просто образец, sql запрос к массиву, затем от него к 2D-массиву, затем используйте ... так что глава 4, 5 ...... может отображать –

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