0

データベースからデータをフェッチしたテーブルに数値を生成するにはどうすればよいですか。私の状況は次のとおりです。

//アクションファイルデータの呼び出し

$loads = array();
$loadno = $_GET['eig'];
$result = mysql_query("SELECT * FROM task_load WHERE load_no='$loadno' ORDER BY inv ASC");

while($row = mysql_fetch_assoc($result))
{
    $loads[] = new VerifyLoads($row);
}
        foreach($loads as $c){
             echo $c->markup_print();
        }

//クラスファイル受信リクエスト

    public function markup_print()
    {
    $d = &$this->data;

    return '
        <tr id="line-'.$d['id'].'">
            <td class="iprint">'.GENERATE_NUMBER_HERE.'</td>
            <td class="cprint">'.$d['customer_name'].'</td>
            <td class="cprint">'.$d['inv'].'</td>
            <td class="rprint">'.$d['value'].'</td>
            <td class="cprint">'.$d['ctn'].'</td>
            <td class="iprint"></td>
            <td class="iprint"></td>
            <td class="iprint"></td>
        </tr>       
        ';
    }
4

1 に答える 1

0

どのような種類の番号を生成しようとしているのかはかなりわかりませんが、出力に基づいて、表示されている現在のレコードの単純な行番号が必要であると想定しています。この場合の問題は、各行がVerifyLoadsクラスの個別のインスタンスであるためです。

これを処理するには、いくつかの方法のいずれかを取ることができます。作成した順序で表示するため、最も迅速で簡単な方法が機能します。VerifyLoadsこのメソッドには、クラスに 2 つの新しい変数が含まれます。1 つ目は総行数を保持する静的変数で、2 つ目は現在のインスタンスの数を保持する非静的変数です。

class VerifyLoads {
    private $_lineTotal = 1;
    private $_lineNumber = -1;

    public function __construct() {
        $this->_lineNumber = self::$_lineTotal++;
    }

    public function markup_print() {
        $d = &$this->data;

        return '
            <tr id="line-'.$d['id'].'">
            <td class="iprint">'.$this->_lineNumber.'</td>
            <td class="cprint">'.$d['customer_name'].'</td>
            <td class="cprint">'.$d['inv'].'</td>
            <td class="rprint">'.$d['value'].'</td>
            <td class="cprint">'.$d['ctn'].'</td>
            <td class="iprint"></td>
            <td class="iprint"></td>
            <td class="iprint"></td>
            </tr>       
        ';
    }
}

レコードを作成したのと同じ順序で表示しなかった場合の別の方法は、クラスに静的変数を保持し、現在の行を返すローカル メソッドを使用することです。

class VerifyLoads {
    private static $_lineNumber = 1;

    private function _currentLine() {
        return self::$_lineNumber++;
    }

    // .. code as normal ..
    // .. to access, just call $this->_currentLine()
}

2 番目の方法を使用し、それを使用して同じページに複数のテーブルを表示する必要がある場合はresetLineNumber()、静的変数を元に戻す方法を実装することもでき1ます。

反対に、私はあなたの質問を完全に誤解しているかもしれません。その場合は、どのような数字を表示する必要があるかを詳しく教えていただければ修正いたします。

于 2012-11-02T02:54:36.473 に答える