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类中的两个新变量;第一个是保持总行数的静态变量,第二个是保持当前实例计数的非静态变量:

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()
}

如果您需要使用第二种方法并使用它在同一页面上显示多个表,您可以实现一个resetLineNumber()方法来设置静态变量1

另一方面,我可能完全误解了你的问题。如果是这种情况,请详细说明您需要显示什么样的数字,我会修改。

于 2012-11-02T02:54:36.473 回答