2013-04-23 61 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?與sunchapter 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 2013-04-23 02:02:18

+0

$ query =「SELECT * FROM materialachievement WHERE sID = $ id GROUP BY(chapter and subchapter)ORDER BY chapter ASC,subchapter 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 2013-04-23 02:09:52

+0

把它放在你的問題,所以它的格式正確。 – Barmar 2013-04-23 02:10:29

回答

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真正的專業 ü幫助下解決這個問題,我再次堅持了很多天, 感謝您的幫助,我想我找到了正確的通道要問我的問題,謝謝巴爾梅爾。 – boon 2013-04-23 02:36:57

+0

許多天來解決這個微不足道的問題?只需設置一個變量以查看您是否已經打印了某些內容,這有多難? – Barmar 2013-04-23 02:39:17

+0

呵呵,因爲我在PHP還是新手,MySQL的 和我的基本不夠強 就是爲什麼卡住最後一次許多 一天我有一個已經解決卡住幾個星期,好難過... 但幸運的是另一個問題,你幫我解決了第二個問題 再次感謝 – boon 2013-04-23 02:47:54

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 2013-04-23 02:25:07

+0

那麼你對此另一個想法? 感謝 – boon 2013-04-23 02:27:19

+0

$數據只是抽樣,SQL查詢數組,那麼fromat它二維數組,然後用...所以第4章,5 ......能再次幫助顯示 – 2013-04-23 02:37:54