0

データベースからデータを引き出しています。配列と多次元配列に問題があるように見えるので、助けが必要です。

データベースでは、次の情報を取得しています: ID、小隊、名前、位置、ステータス

これをすべて配列に入れる必要があります。

150以上の名前があり、多くは同じ役職に就いています。

ここに私が使用しているコードがあります:

    $sql='SELECT  id, position, platoon, name, status FROM ost_platoon_assignments';
    $users=db_query($sql);
    $num=db_num_rows($users);
    while ($row = db_fetch_array($users)) {
        $info = array(
           $row['position'] => array(
            $row['platoon'] => array("name" =>$row['name'], "status" => $row['status']),
          ),
        );
     } 

特定の位置にある人によって表を介してリストしたい:

例:

    <table border="1">
    <?
    foreach ($info as $position => $names) {
        echo "<tr>";
        echo "<td> {$position} </td>";
       foreach ($names as $name) {
        if ($name[name] =="") {$name[name] = "Vacant"; }
        echo "<td class=\"status{$name[status]}\"> {$name[name]} </td>";
       }
        echo "</tr>";
     }
    ?>
    </table>

私は何が欠けていますか?これを実行すると、最後のエントリのみが表示されます。

ご協力いただきありがとうございます

4

2 に答える 2

0

while ステートメントの繰り返しごとに $info の値を上書きしています。すべてのデータを次のような配列構造に格納する場合:

$info = array(
    'general' => array(
        array( /* general 1 */ ),
        array( /* general 2 */ ),
        array( /* general 3 */ )
    ),
    'colonel' => array(
        array( /* colonel 1 */ ),
        array( /* colonel 2 */ ),
    ),
    // .....
)

次に、次のようなプロセスを使用します。

$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$result = $conn->query('SELECT  id, position, platoon, name, status FROM ost_platoon_assignments');

$info = array();
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
    $info[$row['position']][] = $row;
}

次に、このように位置ごとに各ユーザーをループできます

foreach ($info as $position => $users) {
    foreach ($users as $user) {
        // ....
    }
}
于 2013-04-28T16:14:40.233 に答える