2016-11-25 1 views
0

MySQL에서 pdf로 테이블을 내보내려고합니다.MySQL에서 PDF로 테이블 생성 (PHP 사용)

여기서 중요한 문제는 모든 결과를 인쇄하는 대신 목록의 마지막 결과 만 인쇄한다는 것입니다.

다른 코드를 시도했지만 여전히 동일한 결과가 나타납니다. 내 코드에 어떤 문제가 있는지 알지 못합니다.

<?php 
include("configsample.php"); 
?> 
<?php 

$string=$_GET['string']; 
$course=$_GET['course']; 
$category=$_GET['category']; 
$from=$_GET['from']; 
$to=$_GET['to']; 

if ($_REQUEST["string"]<>'') { 
$search_string = " AND restu_title LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%'"; 
} 
if ($_REQUEST["course"]<>'') { 
$search_course = " AND restu_course='".mysql_real_escape_string($_REQUEST["course"])."'"; 
} 
if ($_REQUEST["category"]<>'') { 
$search_category = " AND category='".mysql_real_escape_string($_REQUEST["category"])."'"; 
} 


if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_year BETWEEN '".mysql_real_escape_string($_REQUEST["from"])."' AND '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_course; 
} else if ($_REQUEST["from"]<>'') { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_year = '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_course; 
} else if ($_REQUEST["to"]<>'') { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_year = '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_course; 
} else { 
$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE restu_id>0".$search_string.$search_course.$search_category; 
} 
$html='<table> 
<tr style="color:#010101; font:bold 13px Times New Roman; height:40px;"> 
<th>Research Title</th> 
<th>Year</th> 
<th>Proponent(s)</th> 
<th>Adviser</th> 
<th>Research Panel</th> 
</tr>'; 
$sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
if (mysql_num_rows($sql_result)>0) { 
while ($row = mysql_fetch_assoc($sql_result)){ 
$html2='<tr> 
<td style="padding:10px;">'.$row['restu_title'].'</td> 
<td style="padding:10px;">'.$row['restu_year'].'</td> 
<td style="padding:10px;">'.$row['restu_by'].'</td> 
<td style="padding:10px;">'.$row['restu_ad'].'</td> 
<td style="padding:10px;">'.$row['restu_panel'].'</td> 
</tr> 
</table>'; 
} 
} 

include("mpdf60/mpdf.php"); 
$mpdf=new mPDF('c','Letter','','',20,20,18,16,9,9,'L'); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->AddPage('L'); 
$mpdf->WriteHTML($html); 
$mpdf->WriteHTML($html2); 
$mpdf->Output(); 
exit; 
?> 
+0

당신은 당신의 while 루프에서 $의 HTML2을 덮어 씁니다. 다른 레코드가있는 한 그것은 가져오고 html2는 항상 마지막 레코드의 값을 포함합니다. – Twinfriends

답변

0

append $ html2. 루프의 값을 지정하여 마지막 레코드 만 표시합니다. 이 같은

사용 ..

$html2=$html2.'<tr> 
    <td style="padding:10px;">'.$row['restu_title'].'</td> 
    <td style="padding:10px;">'.$row['restu_year'].'</td> 
    <td style="padding:10px;">'.$row['restu_by'].'</td> 
    <td style="padding:10px;">'.$row['restu_ad'].'</td> 
    <td style="padding:10px;">'.$row['restu_panel'].'</td> 
    </tr>'; 
+0

제안 해 주셔서 감사합니다. 나는 코드를 바꾸려고했지만 나에게이 오류를 준다 : "mPDF 오류 : 일부 데이터는 이미 브라우저에 출력되었으므로 PDF 파일을 보낼 수 없다 : –

2

당신은 당신의 텍스트 문자열을 concatenate 할 필요가 $html2을 피하기는 다음 값으로 덮어 쓸 수 있습니다.

루프가 실행될 때마다 $html2을 새 값으로 덮어 씁니다. 귀하의 경우에는, 당신은 단지 동일한 기호 앞에 점을 추가해야

while ($row = mysql_fetch_assoc($sql_result)){ 
    $html .='<tr> 
      <td style="padding:10px;">'.$row['restu_title'].'</td> 
      <td style="padding:10px;">'.$row['restu_year'].'</td> 
      <td style="padding:10px;">'.$row['restu_by'].'</td> 
      <td style="padding:10px;">'.$row['restu_ad'].'</td> 
      <td style="padding:10px;">'.$row['restu_panel'].'</td> 
    </tr>'; 
} 

올바르게 </table> 배치주의하십시오. SQL 요청에 결과가 없으면 표가 닫히지 않고 HTML이 유효하지 않게됩니다.

당신은 이런 식으로 작업을 수행해야합니다

$html='<table> 
    <tr style="color:#010101; font:bold 13px Times New Roman; height:40px;"> 
    <th>Research Title</th> 
    <th>Year</th> 
    <th>Proponent(s)</th> 
    <th>Adviser</th> 
    <th>Research Panel</th> 
    </tr>'; 
$sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
if (mysql_num_rows($sql_result)>0) { 
    while ($row = mysql_fetch_assoc($sql_result)){ 
     $html .='<tr> 
      <td style="padding:10px;">'.$row['restu_title'].'</td> 
      <td style="padding:10px;">'.$row['restu_year'].'</td> 
      <td style="padding:10px;">'.$row['restu_by'].'</td> 
      <td style="padding:10px;">'.$row['restu_ad'].'</td> 
      <td style="padding:10px;">'.$row['restu_panel'].'</td> 
      </tr>'; 
    } 
} 
$html .= '</table>'; 
+0

제안 해 주셔서 감사합니다. 코드를 바꾸려고 시도했지만이 오류가 발생합니다. "mPDF 오류 : 일부 데이터가 이미 브라우저에 출력되었으므로 PDF 파일을 보낼 수 없습니다. –

+0

이 메시지는 $ mpdf-> 이전에 var_dump 또는 오류가있을 때 발생합니다. pdf를 만들지 않고 var_dump ($ html)하여 오류가 없는지, SQL 요청인지 확인하십시오. – Benoti