0

PHP 内に単純な html テーブルを作成しました。ここに私のコードがあります: チャート -->

    <div id="wrapper">
        <div class="chart">
            <h2>No. of Files Uploaded to Knowledge Base</h2>
            <table id="data-table" border="1" cellpadding="10"     cellspacing="0">


            <tr>
                    <td>Users</td>
                    <td>Project Files</td>
                    <td>Process Files</td>
                    <td>System Files</td>
                    <td>Total</td>
            </tr>   

                        <?php

                        $di = new RecursiveDirectoryIterator('upload/project/');
                        foreach (new RecursiveIteratorIterator($di) as $filename => $file) {

                        $pos = 15;
                        $file = substr("$filename", +$pos); 

                        $lenght = strlen($file);
                        $pos = strpos($file, "/");
                        $file = substr("$file",0,$pos);
                        if($file1 != '.DS_Store'){

                            $serverfiles = mysql_query("SELECT uploader FROM Project WHERE location = '$file'");

                            while($row = mysql_fetch_array($serverfiles)) {
                                $occurance1 = $row['uploader'];
                                $array1[] = $occurance1; 
                                }
                            }                           
                        }




                        $di = new RecursiveDirectoryIterator('upload/process/');
                        foreach (new RecursiveIteratorIterator($di) as $filename => $file) {

                        $pos = 15;
                        $file = substr("$filename", +$pos);                         
                        $lenght = strlen($file);
                        $pos = strpos($file, "/");
                        $file = substr("$file",0,$pos);

                        if($file != '.DS_Store'){

                            $serverfiles = mysql_query("SELECT uploader FROM Process WHERE processlocation = '$file'");

                            while($row = mysql_fetch_array($serverfiles)) {
                                $occurance2 = $row['uploader'];
                                $array2[] = $occurance2; 
                                }
                            }                           
                        }

                        $di = new RecursiveDirectoryIterator('upload/system/');
                        foreach (new RecursiveIteratorIterator($di) as $filename => $file) {

                        $pos = 14;
                        $file = substr("$filename", +$pos);                         
                        $lenght = strlen($file);
                        $pos = strpos($file, "/");
                        $file = substr("$file",0,$pos);
                        if($file != '.DS_Store'){

                            $serverfiles = mysql_query("SELECT uploader FROM System WHERE location = '$file'");

                            while($row = mysql_fetch_array($serverfiles)) {
                                $occurance3 = $row['uploader'];
                                $array3[] = $occurance3; 
                                }
                            }                           
                        }

                        $uploader = mysql_query("Select username from members");
                        while($Load = mysql_fetch_array($uploader)){
                        $value = $Load['username'];
                        $tmp = array_count_values($array1);
                        $cnt = $tmp[$value];
                        echo"<tr>";
                        echo"<td>$value</td>";
                        echo "<td>$cnt</td>";


                        $value2 = $Load['username'];
                        $tmp2 = array_count_values($array2);
                        $cnt2 = $tmp2[$value2];

                        echo "<td>$cnt2</td>";

                        $value3 = $Load['username'];
                        $tmp3 = array_count_values($array3);
                        $cnt3 = $tmp3[$value3];
                        $total = $cnt + $cnt2 + $cnt3;
                        echo "<td>$cnt3</td>";
                        echo "<td>$total</td>";
                        }
                    echo "</tr>";

                        ?>

            </table>
    </div>

          </body></html>

ユーザーは、データベース テーブルから入力されます。ファイルの数字は、ディレクトリ内のファイルの量を読み取ってカウントすることによって生成されます。合計数値でテーブルを自動的に並べ替えられるようにしたいので、合計数値が最も高いユーザーが一番上に表示されます..リーグテーブルのようになります。

これを行う方法がわかりません。誰かが私を正しい方向に導いてくれますか?

4

3 に答える 3

1

データベースにも保存してみませんか?

SELECT uploader FROM Project WHERE location = '$file' ORDER BY field

それ以外の場合は、 を使用してすべてのユーザーのデータベース クエリを配列に取得し、mysql_fetch_arrayそれらを反復処理してファイルを数え、この値を配列に格納します。

次に、配列を並べ替え(「多次元配列を値で並べ替える(2)」のように)、もう一度繰り返して出力します。

于 2013-01-08T16:01:05.290 に答える
0

すべてをインラインでエコーする代わりに、すべてのデータを配列に格納してから、usort()を使用して配列を並べ替えることができます。次に、配列をループして値をエコーし​​ます。

$table_rows = array(); //add this
$counter = 0; //add this
while($Load = mysql_fetch_array($uploader)){
    //...more code here but not going to put everything
    $counter++;
    $table_rows[$counter] = array();
    $table_rows[$counter]['username'] = $value;
    $table_rows[$counter]['project'] = $cnt;
    //...more code here but not going to put everything
}

function cmp_rows($a,$b) {
    if ($a['total'] == $b['total']) {
        return 0;
    }
    return ($a['total'] > $b['total']) ? -1 : 1;
}

usort($table_rows,'cmp_rows');

foreach($table_rows as $row) {
    echo "<tr>";
    echo "<td>{$row['username']}</td>";
    //...more code here but not going to put everything
}
于 2013-01-08T16:19:37.850 に答える
0

方法 1

要件によると、これを行うための最良の方法は、以下のようにデータベースからソートされた結果を取得することです。

SELECT * FROM table_name WHERE ORDER BY field_name desc

方法 2

などの PHP 関数を使用して、結果セットを並べ替えることができますarray_multisort。例については、以下のリンクを参照してください。以下にいくつかのリンクを示します。その他のリンクについては、Google をご覧ください。

http://shiflett.org/blog/2011/jun/sorting-multi-dimensional-arrays-in-php

多次元配列を値で並べ替える

PHP で多次元配列をソートする方法

PHP で多次元配列をソートする方法

方法 3 - オプション: 参考までに

jQuery Javascript ライブラリのプラグインであるDataTablesを使用して、必要に応じてテーブルを並べ替えることができます。

于 2013-01-08T16:21:11.983 に答える