Reputation: 183
I am getting this error:
Catchable fatal error: Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode, null given, called in /home/emscompl/public_html/pdf_email/dompdf/include/table_frame_decorator.cls.php on line 304 and defined in /home/emscompl/public_html/pdf_email/dompdf/include/frame.cls.php on line 726
Here is the dompdf code.
<?php
/*$dir = dirname(__FILE__);
require_once($dir.'/dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html_file("http://ems-complete.com/pdf_email/patient-report.php");
$dompdf->render();
$dompdf->stream("file.pdf");*/
$course = $_REQUEST['course'];
$dir = dirname(__FILE__);
require_once($dir.'/dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html(file_get_contents("http://ems-complete.com/courseroster/courseroster.php?course=".$course));
$dompdf->render();
// $dompdf->set_paper(2412, 3222);
$dompdf->stream("courseroster.pdf");
// exit(0);
?>
Here is the PHP HTML
<html>
<head>
<link type="text/css" media="screen" rel="stylesheet" href="stylesheets/courseroster.css" />
<link type="text/css" media="print" rel="stylesheet" href="stylesheets/print.css" />
</head>
<body>
<SCRIPT LANGUAGE="JavaScript">
function PrintDivData(crtlid)
{
var ctrlcontent = document.getElementById(crtlid);
var printscreen = window.open('','','left=1,top=1,width=1,height=1,toolbar=0,scrollbars=0,status=0');
printscreen.document.write(ctrlcontent.innerHTML);
printscreen.document.close();
printscreen.focus();
printscreen.print();
printscreen.close();
}
</script>
<input type="button" name="Print" value="Print" onClick="javascript:PrintDivData('container');" Runat="Server" />
<?php
$course = $_REQUEST['course'];?>
<?php
$connect = mysql_connect('localhost','db','pass') or die(mysql_error());
$selectdb = mysql_select_db('emscompl_joom1283',$connect);
?>
<?php
$qry = "SELECT * FROM courses
WHERE id = $course";
$result = mysql_query($qry);
$row = mysql_fetch_array($result);
$qry2 = "SELECT s.fullname, cs.* FROM registered_users AS `s`
LEFT OUTER JOIN course_students AS cs ON s.userid = cs.userid
WHERE cs.courseid = $course
ORDER BY s.fullname";
$result2 = mysql_query($qry2);
echo "<a href=http://www.ems-complete.com/pdf_email/form_courseroster.php?course=".
$course.">Display PDF</a>";?>
<div class="container" id ="container">
<div class="header"><?php echo $row['coursename'];?> Roster</div>
<div class="coursestatus"><p>Course Status</p>
<p><?php echo $row['status'];?></p>
</div>
<div class="startdate"><p>Start Date</p>
<p><?php echo $row['startdate'];?></p>
</div>
<div class="enddate"><p>End Date</p>
<p><?php echo $row['enddate'];?></p>
</div>
<div class="dayofweek"><p>Class Held on:</p>
<p><?php echo $row['dayofweek'];?></p>
</div>
<div class="leadinstructor"><p>Lead Instructor</p>
<p><?php echo $row['leadinstructor'];?></p>
</div>
<div class="assistantinstructor"><p>Assistant Instructors</p></div>
<div class="enrolledstudents">
<p>Enrolled Sutdents</p>
<table width="760" border="0">
<tr>
<th width="223">Student Name</th>
<th width="102">Phone</th>
<th width="90">Email</th>
<th width="100">Status</th>
<th width="220">Document Report</th>
</tr>
<tr>
<?php while ($row2 = mysql_fetch_array($result2)) { ?>
<td><?php echo $row2['fullname'];?></td>
<td><?php echo $row2[''];?></td>
<td><?php echo $row2[''];?></td>
<td><?php if ($row2['studentstatus']== 0 ){
echo "Interested";
}
else if ($row2['studentstatus']== 1 ){
echo "Entrance Process";
}
else if ($row2['studentstatus']== 2 ){
echo "Incomplete Entrance Process";
}
else if ($row2['studentstatus']== 3 ){
echo "Enrolled";
}
else if ($row2['studentstatus']== 4 ){
echo "Course Completed";
}
else if ($row2['studentstatus']== 5 ){
echo "NREMT Skills Complete";
}
else if ($row2['studentstatus']== 6 ){
echo "NREMT Cognitive Complete";
}
else if ($row2['studentstatus']== 7 ){
echo "State Certified";
}?></td>
<td><?php echo "<a href=http://www.ems-complete.com/courseroster/studentdocuments.php?id=".$row2['id'].">Document Report</a>"
;?>
</td>
</tr>
<?php } ?>
</table>
<p> </p>
</div>
<div class="footer">
<p> </p>
</div>
</div>
</body>
</html>
Upvotes: 2
Views: 5671
Reputation: 13914
In your HTML-generating script you have an opening TR
outside the while loop that looks like it should be inside the loop (the closing tag is inside the loop). This will cause an invalid document structure, and apparently one which dompdf is unable to parse.
FYI, the first thing to do if dompdf won't parse a document is to run it through a validator.
Upvotes: 4