-3

こんにちは。mysqlデータベースから値をエコーすることについて質問があります。テーブル名があります--->materialachievement テーブル内に3つの列があります(チャプター、サブチャプター、およびパート)

データは次のようになります。

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章を1回エコーし、次にサブチャプター2.1を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

4

2 に答える 2

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
        )

)
于 2013-04-23T02:16:54.830 に答える