TCPDF - таблица печати из mysql

в моем php,

while($info3 = mysql_fetch_array($result3)){
$Name = $info3["Name"];
$Address = $info3["Address"];
$Age = $info3["Age"];
// -----------------------------------------------------------------------------
$tbl = '
<table style="width: 638px;" cellspacing="0">
    <tr>
        <td style="border: 1px solid #000000; width: 150px;">'.$Name.'</td>
        <td style="border: 1px solid #000000; width: 378px;">'.$Age.'</td>
        <td style="border: 1px solid #000000; width: 110px; text-align:center">'.$Address.'</td>
    </tr>
</table>
';

$pdf->writeHTML($tbl, true, false, false, false, '');
}

Всегда печатает всю таблицу в моем pdf. Но я хочу напечатать <table> и </table> для одного экземпляра, а затем хочу зациклить печать строк между ними. Как я могу это решить??


person Alfred    schedule 10.03.2011    source источник


Ответы (2)


Если вы имеете в виду, что вам нужна одна таблица, которая включает все результаты в виде строк, зацикливайте только печать строк и переносите открывающие и закрывающие теги за пределы цикла.

$tbl = '<table style="width: 638px;" cellspacing="0">';

    while($info3 = mysql_fetch_array($result3)){
    $Name = $info3["Name"];
    $Address = $info3["Address"];
    $Age = $info3["Age"];

    $tbl .= '<tr>
            <td style="border: 1px solid #000000; width: 150px;">'.$Name.'</td>
            <td style="border: 1px solid #000000; width: 378px;">'.$Age.'</td>
            <td style="border: 1px solid #000000; width: 110px; text-align:center">'.$Address.'</td>
            </tr>'
     }
$tbl .= '</table>';


$pdf->writeHTML($tbl, true, false, false, false, '');
person DeaconDesperado    schedule 10.03.2011
comment
не работает.. Это отображает только одну строку.. и я получаю результат, только если $pdf->writeHTML($tbl, true, false, false, false, ''); находится внутри цикла - person Alfred; 10.03.2011
comment
@blasteralfred - можете ли вы отредактировать свой оператор SQL, чтобы мы могли быть уверены, что он извлекает несколько строк? - person DeaconDesperado; 10.03.2011
comment
даже без sql, в простом виде, он застревает с использованием фиктивных данных. Я нашел ответ Андре полезным. Но все же я ищу предложение, подобное Дикону - person Alfred; 10.03.2011

Я бы определенно сделал что-то вроде этого:

$table = '<table style="width: 638px;" cellspacing="0">%s</table>'
$tr    = '
    <tr>
        <td style="border: 1px solid #000000; width: 150px;"> %s</td>
        <td style="border: 1px solid #000000; width: 378px;"> %s</td>
        <td style="border: 1px solid #000000; width: 110px; text-align:center">%s</td>
    </tr>
';

while($info3 =  = mysql_fetch_array($result3)){
    $trs[] = sprintf($tr, $info3["Name"], $info3["Age"], $info3["Address"]);
}

$tbl = sprintf($table, implode( $trs ));
$pdf->writeHTML($tbl, true, false, false, false, '');

Если вы не можете организовать уровень презентации с помощью шаблонов, по крайней мере, сделайте его как можно более отделенным от фактической логики.

Вы можете прочитать о sprintf здесь и взорваться здесь

person acm    schedule 10.03.2011