-1

少しランダムな演習ですが、既存のテーブルからコンテンツを取得し、取得したエントリに基づいて新しいテーブルを作成したいと考えています。

ここに画像の説明を入力

上の画像で、左側のテーブルは、私がすでに作業しなければならないものです。右側の青いテーブルは、作成したいものです。左の表のデータを使用します。

これはjQueryまたはいくつかの基本的なPHPで実行できますか?

SQL データベースにアクセスできず、Google Charts API を使用して各月のユーザー登録総数を表示したいので、なぜこれを行っているのか疑問に思われているかもしれません。

いつものように、あなたの助けに感謝します。

4

3 に答える 3

1

JQueryを使用すると、この方法で実行できます

//initialize monthArray
var monthArr = [{month:'April', occ:0}, {month:'May', occ:0},{month:'June', occ:0}];

//read occurrences for MonthNames in your existing table
$.each(monthArr, function(n,i){
    var _occ = $("td:contains('"+monthArr[n].month+"')").size();
    monthArr[n].occ = _occ;
});

// create new table and show the values
$.each(monthArr, function(index, value) {
  //alert(value.occ+ ': ' + value.month);
    $('#inTable').append('<tr><td>'+value.month+'</td><td>'+value.occ+'</td></tr>');
});

ここにフィドルがあります:http://jsfiddle.net/A3WeJ/38/

注: このソリューションでは、表のルック アンド フィールの書式設定は行われていません。

于 2012-10-12T18:59:21.933 に答える
0

jQueryとPHPのどちらを使用するかは、ページの読み込み後にこれらのテーブルのコンテンツが変更される可能性があるかどうかによって異なります。ページが変更されない場合は、PHPを使用する必要があります。

whileテーブルがまたはループを使用して作成されていると仮定すると、テーブルにあるforeach各オプションのカウントを簡単に設定できます。ループ内で、この列の内容を確認し、適切な任意の数に追加すると、それぞれの数を数えることができます。

内容が何であるか、そしてそれがすでに配列にあるかどうかを確認するのはおそらく良いことです。

それがこの質問の背後にある考え方にいくつかの最初の助けを提供することを願っています!

于 2012-10-12T18:02:34.510 に答える
0

これを試すことができます(詳細情報を提供していないため、単なるアイデアかもしれません)

HTML idmaintableは別の id/class で変更することも、単に変更することもできますtable

​&lt;table id="maintable">
    <thead><th>Name</th><th>Join Month</th><th>Join Year</th></thead>
    <tbody>
        <tr><td>Joe Blogs</td><td>April</td><td>2012</td></tr>
        <tr><td>Mr. X</td><td>April</td><td>2012</td></tr>
        <tr><td>Andrew Xmen</td><td>April</td><td>2012</td></tr>
        <tr><td>Matt Bblogs</td><td>may</td><td>2012</td></tr>
        <tr><td>Malcom McGuiness</td><td>June</td><td>2012</td></tr>
       <tr><td>Friday Needavodka</td><td>June</td><td>2012</td></tr>
    </tbody>
</table>
<div id="myTblDiv"></div>

JS

​$(function(){
    var rows={};
    $('table#maintable tbody tr').each(function(){
        var item=$('td:eq(1)', $(this));
        if(rows.hasOwnProperty(item.text()))
            rows[item.text()]=parseInt(rows[item.text()])+1;
        else rows[item.text()]=1;
    });

    var myTable=$('<table />', {'id':'myNewtable', 'class':'table table-striped'});
    var th=$('<thead><th>Total</th><th>Month</th></thead>');
    var tbody=$('<tbody></tbody>');
    myTable.append(th).append(tbody);
    $.each(rows, function(k, v){
        var row=$('<tr><td>'+v+'</td><td>'+k+'</td></tr>');
        myTable.find('tbody').append(row);
    });
    $('div#myTblDiv').append(myTable);
});​

デモまたは異なるスタイル

Google によって生成されたテーブルの ID(maintable)を使用したことに注意してください。この場合、idまたはclass(ある場合)を変更する必要があります。tableまた、ID やクラス名を使用せずに使用することもできますが、テーブルが 1 つだけであることを確認してください。のみを使用している場合$('table')、また、親 div 内でテーブルをラップできる場合は、 を使用できます$('div#parentDivId table')

于 2012-10-12T18:37:06.970 に答える