0

結果をPDFファイルで表示したい。問題は、PDF ファイルが while ループの最初の行しかキャッチできないことです。row[0]['rates']1行目と2行目みたいなものはありrow[1]['rates']ますか?だから私は一度それを取得して表示することができrow[0]['rates']ますrow[1]['rates']...

PDF を作成:

<?php
session_start();

if( empty( $_POST['compare'] ) ) 
include"connect_to_mysql.php";
$packages = mysql_query("SELECT*FROM package_creation WHERE id IN (". implode(',', $_POST['compare']) ." ) LIMIT 4"); 

while($row=mysql_fetch_array($packages)){
 $compare ='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Compare Packages</title>
<style type="text/css">
.print_title{
    font-family:Arial, Helvetica, sans-serif;
    font-size:20px;
    font-weight:bold;
    color:#000; 
}
.print_text{
    font-family:Arial, Helvetica, sans-serif;
    font-size:10px;
    color:#000000;
}
.print_bold{
    font-family:Arial, Helvetica, sans-serif;
    font-size:10px;
    color:#000000;
    font-weight:bold;
}
.print_footer{
    font-family:Arial, Helvetica, sans-serif;
    font-size:9px;
    color:#000000;
}
.print_big{
    font-family:Arial, Helvetica, sans-serif;
    font-size:14px;
    color:#000000;
    font-weight:bold;
}
body{
    margin:0px;
}
table td{
    height:1px;
}
</style>
</head>

<body>
<table class="print_text" align="left">
<tr>
<td width="200px" class="print_bold" align="right">Package</td><td width="100px" class="print_bold" align="center">Package 1</td><td width="100px" class="print_bold" align="center">Package 2</td><td width="100px" class="print_bold" align="center">Package 3</td><td width="100px" class="print_bold" align="center">Package 4</td>
</tr>
<tr>
<td class="print_bold" align="right">Bank Code:</td><td width="100px" align="center">'.$row['bank_name'].'</td><td width="100px" align="center">display 2nd bank</td><td width="100px" align="center">display 3rd bank</td><td width="100px" align="center">display 4th bank</td>
</tr>
</table>
</body>
</html>';

}
include_once('dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html($compare);
$dompdf->render();
$dompdf->stream('Compare_Packages.pdf');

?>
4

2 に答える 2

1

問題はwhileループです。$ compareの値は、ループするたびに上書きされます。あなたがしたいことは次のようなものです

 $compare = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Compare Packages</title>
<style type="text/css">
....//you styles here
</style>
</head>

<body>
<table class="print_text" align="left">
<tr>
<td width="200px" class="print_bold" align="right">Package</td><td width="100px"  class="print_bold" align="center">Package 1</td><td width="100px" class="print_bold" align="center">Package 2</td><td width="100px" class="print_bold" align="center">Package 3</td><td width="100px" class="print_bold" align="center">Package 4</td>
</tr>';

while($row=mysql_fetch_array($packages)){

    $compare .= '<tr>
 <td class="print_bold" align="right">Bank Code:</td><td width="100px" align="center">'.$row['bank_name'].'</td><td width="100px" align="center">display 2nd bank</td><td width="100px" align="center">display 3rd bank</td><td width="100px" align="center">display 4th bank</td>
</tr>';
} //end while

$compare .= '</table>
 </body>
  </html>';


//rest of your code

このようにして、ループの結果を毎回上書きするのではなく、$compare文字列の中央に追加します。詳細については、文字列の連結を検索してくださいhttp://php.net/manual/en/language.operators.string.php。テストされていないため、ここにマイナーなコードの問題がある場合はお詫びします

于 2012-06-20T07:17:16.537 に答える
0

while ループ内で新しいドキュメント全体を作成する代わりに、テーブルの行をループできます。

最初に $compare 変数を設定します ([TABLE_ROWS]文字列変数 $compare 内に注意してください):

$compare = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Compare Packages</title>
<style type="text/css">
.print_title{
    font-family:Arial, Helvetica, sans-serif;
    font-size:20px;
    font-weight:bold;
    color:#000; 
}
.print_text{
    font-family:Arial, Helvetica, sans-serif;
    font-size:10px;
    color:#000000;
}
.print_bold{
    font-family:Arial, Helvetica, sans-serif;
    font-size:10px;
    color:#000000;
    font-weight:bold;
}
.print_footer{
    font-family:Arial, Helvetica, sans-serif;
    font-size:9px;
    color:#000000;
}
.print_big{
    font-family:Arial, Helvetica, sans-serif;
    font-size:14px;
    color:#000000;
    font-weight:bold;
}
body{
    margin:0px;
}
table td{
    height:1px;
}
</style>
</head>

<body>
<table class="print_text" align="left">
<tr>
<td width="200px" class="print_bold" align="right">Package</td><td width="100px" class="print_bold" align="center">Package 1</td><td width="100px" class="print_bold" align="center">Package 2</td><td width="100px" class="print_bold" align="center">Package 3</td><td width="100px" class="print_bold" align="center">Package 4</td>
</tr>
[TABLE_ROWS]
</table>
</body>
</html>';

次に、表示するすべての行を取得します。

while($row=mysql_fetch_array($packages)){
$table_rows .= '<tr>
<td class="print_bold" align="right">Bank Code:</td><td width="100px" align="center">'.$row['bank_name'].'</td><td width="100px" align="center">display 2nd bank</td><td width="100px" align="center">display 3rd bank</td><td width="100px" align="center">display 4th bank</td>
</tr>';
}

$compare = str_replace('[TABLE_ROWS]', $table_rows, $compare);

次に、残りのコードを呼び出します。

include_once('dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html($compare);
$dompdf->render();
$dompdf->stream('Compare_Packages.pdf');
于 2012-06-20T07:27:43.567 に答える