Ik heb een script verschreven wat de resultaten van een query uitvoert als Excel bestand.
Dit script werkt al een tijd na behoren op een server (win2k,IIS). Nu moet ik noodgedwongen over naar een ander server welke op FreeBSD/Apache/Plesk draait.
Dit is het script
Het script gaat goed tot het moment dat de headers verzonden worden (op regel 37).
In plaats van dat het bestand "export.xls" heet, zoals op de bestaande server, krijgt het bestand de naam van het uitvoerende script (b.v. /rapportage/export_werknemers.php?werkgeverID=45
Oja, nog iets wat mogelijk van belang is. De bestaande server draait zonder SSL, de nieuwe (waar het fout gaat) met.
Iemand een idee?
Alvast bedankt,
Marc
Dit script werkt al een tijd na behoren op een server (win2k,IIS). Nu moet ik noodgedwongen over naar een ander server welke op FreeBSD/Apache/Plesk draait.
Dit is het script
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| function toExcel($sql,$beschrijving){ define("NL", "\r\n"); // start with mysql_connect and all the obvius stuff $content = '<table cellpadding="3" cellspacing="0" border="1" frame="hsides" rules="groups" summary="Export Web-IVS."><caption>'.$beschrijving.'</caption>'; $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $content .= '<thead><tr>'; for ($i = 0; $i < $fields; $i++) { $content .= '<th>'.mysql_field_name($rs, $i).'</th>'; } $content .= '</tr></thead>'; $content .= '<tbody>'; for ($i = 0 ; $row = mysql_fetch_row($rs) ; $i++) { // Splits the table into five-row blocks, which // can be used together with CSS to make the table look realy nice. if (is_int($i / 5) AND $i != 0) { $content .= '</tbody>'.NL; $content .= '<tbody>'.NL; } $content .= '<tr>'; foreach($row as $value) { if ((!isset($value)) OR ($value == "")) { $value = " "; } $content .= '<td>'.$value.'</td>'; } $content .= '</tr>'; } $content.="<caption>dit overzicht is op ".date("d-m-Y",time())." gegenereerd door ".$_SESSION['gebruiker']."</caption>"; $content .= '</tbody>'; $content .= '</table>'; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=export.xls"); header("Content-Location: export.xls"); header("Accept-Ranges: bytes"); header("Content-Length: " . strlen($content)); header("Expires: 0"); header("Cache-Control: private"); echo $content; } |
Het script gaat goed tot het moment dat de headers verzonden worden (op regel 37).
In plaats van dat het bestand "export.xls" heet, zoals op de bestaande server, krijgt het bestand de naam van het uitvoerende script (b.v. /rapportage/export_werknemers.php?werkgeverID=45
Oja, nog iets wat mogelijk van belang is. De bestaande server draait zonder SSL, de nieuwe (waar het fout gaat) met.
Iemand een idee?
Alvast bedankt,
Marc