table export naar xml: via mac wel, via windows niet
Om de gegevens van een mysql-table te kunnen verwerken in een andere database applicatie heb ik een php script gemaakt. Dat werkt volledig naar tevredenheid, mits ik dat via mijn mac doe. Op deze machine heb ik het script ontwikkeld en getest met localhost. Voordat ik het script daadwerkelijk inzet op mijn website heb ik het eerst nog getest op een windows machine. Daar heb ik eerst een apache/mysql/php omgeving opgezet met WAMP. Helaas is het onder windows zo dat ik een onbruikbaar xml bestand krijg waar allerlei html 'troep' in staat.
Mijn vraag aan jullie is hoe dit kan gebeuren. Kan een php-script zich op een mac anders gedragen dan op windows? Nee toch?
Omdat ik een vermoeden heb dat het aan de headers kan liggen post ik hierbij ook de headers mee waar het script mee begint:
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($out));
header("Content-Description: File Transfer");
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/xml");
//header("Content-type: text/x-xml");
//header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.xml");
Wie kan mij op het goede spoor zetten?
Is er niemand die mij op het goede spoor kan zetten?
Wat voor troep komt erbij?
Hoe maak je die xml aan?
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: out in C:\wamp\www\cursisten\mysql2xml.php on line <i>5</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0007</td><td bgcolor='#eeeeec' align='right'>365576</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\cursisten\connectforexport.php' bgcolor='#eeeeec'>..\connectforexport.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0295</td><td bgcolor='#eeeeec' align='right'>439896</td><td bgcolor='#eeeeec'>require( <font color='#00bb00'>'C:\wamp\www\cursisten\mysql2xml.php'</font> )</td><td title='C:\wamp\www\cursisten\connectforexport.php' bgcolor='#eeeeec'>..\connectforexport.php<b>:</b>9</td></tr>
</table></font>
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: tussenvoegsel in C:\wamp\www\cursisten\mysql2xml.php on line <i>38</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0007</td><td bgcolor='#eeeeec' align='right'>365576</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\cursisten\connectforexport.php' bgcolor='#eeeeec'>..\connectforexport.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0301</td><td bgcolor='#eeeeec' align='right'>435592</td><td bgcolor='#eeeeec'>exportMysql2XML( )</td><td title='C:\wamp\www\cursisten\connectforexport.php' bgcolor='#eeeeec'>..\connectforexport.php<b>:</b>15</td></tr>
</table></font>
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: jaarcursus in C:\wamp\www\cursisten\mysql2xml.php on line <i>51</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0007</td><td bgcolor='#eeeeec' align='right'>365576</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\cursisten\connectforexport.php' bgcolor='#eeeeec'>..\connectforexport.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0301</td><td bgcolor='#eeeeec' align='right'>435592</td><td bgcolor='#eeeeec'>exportMysql2XML( )</td><td title='C:\wamp\www\cursisten\connectforexport.php' bgcolor='#eeeeec'>..\connectforexport.php<b>:</b>15</td></tr>
</table></font>
Hieronder het script dat het xml bestand maakt:
Code (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
46
47
48
49
50
51
52
53
54
55
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
46
47
48
49
50
51
52
53
54
55
<?php
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($out));
header("Content-Description: File Transfer");
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/xml");
//header("Content-type: text/x-xml");
//header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.xml");
function exportMysql2XML($table,$filename = 'export.xml')
{ //function start
// Step 1
$sql = "SELECT * FROM cursisten WHERE status='nieuw' ";
$result = mysql_query($sql) or die ( mysql_error() );
$xml_output = "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\n";
$xml_output .= "<DataList>";
$xml_output .= "<WebRegistrationList>";
$xml_output .= "<TableID>" . "11064476" . "</TableID>";
$xml_output .= "<FormID>" . "0" . "</FormID>";
while ($row = mysql_fetch_assoc($result) )
{
$code = $row['muziekkortcode'];
$code.= $row['danscode'];
$code.= $row['beeldendcode'];
$code.= $row['mediacode'];
$code.= $row['theatercode'];
$xml_output .= "\n"; //zet elke 'row' op een nieuwe regel
$xml_output .= "<WebRegistration>";
$xml_output .= "<No>" . $row['id'] . "</No>";
$xml_output .= "<ContNo>" . "</ContNo>";
$xml_output .= "<ContFirstName>" . $row['voornaam'] . "</ContFirstName>";
$xml_output .= "<ContName>" . $row['achternaam'] . "</ContName>";
$xml_output .= "<ContMiddleName>" . $row['tussenvoegsel'] . "</ContMiddleName>";
$xml_output .= "</WebRegistration>";
}
$xml_output .= "\n";
$xml_output .= "</WebRegistrationList>";
$xml_output .= "</DataList>";
//Zet het veld status op 'oud'
mysql_query("UPDATE Cursisten SET Status = 'oud' " );
echo $xml_output;
exit;
} //function end
?>
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($out));
header("Content-Description: File Transfer");
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/xml");
//header("Content-type: text/x-xml");
//header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.xml");
function exportMysql2XML($table,$filename = 'export.xml')
{ //function start
// Step 1
$sql = "SELECT * FROM cursisten WHERE status='nieuw' ";
$result = mysql_query($sql) or die ( mysql_error() );
$xml_output = "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\n";
$xml_output .= "<DataList>";
$xml_output .= "<WebRegistrationList>";
$xml_output .= "<TableID>" . "11064476" . "</TableID>";
$xml_output .= "<FormID>" . "0" . "</FormID>";
while ($row = mysql_fetch_assoc($result) )
{
$code = $row['muziekkortcode'];
$code.= $row['danscode'];
$code.= $row['beeldendcode'];
$code.= $row['mediacode'];
$code.= $row['theatercode'];
$xml_output .= "\n"; //zet elke 'row' op een nieuwe regel
$xml_output .= "<WebRegistration>";
$xml_output .= "<No>" . $row['id'] . "</No>";
$xml_output .= "<ContNo>" . "</ContNo>";
$xml_output .= "<ContFirstName>" . $row['voornaam'] . "</ContFirstName>";
$xml_output .= "<ContName>" . $row['achternaam'] . "</ContName>";
$xml_output .= "<ContMiddleName>" . $row['tussenvoegsel'] . "</ContMiddleName>";
$xml_output .= "</WebRegistration>";
}
$xml_output .= "\n";
$xml_output .= "</WebRegistrationList>";
$xml_output .= "</DataList>";
//Zet het veld status op 'oud'
mysql_query("UPDATE Cursisten SET Status = 'oud' " );
echo $xml_output;
exit;
} //function end
?>
De in dit script gedefinieerde functie wordt aangeroepen via een ander script.
XMLWriter
Maar je krijgt niet zomaar HTML, maar foutmeldingen. Of eigenlijk notices. Ongeacht hoe je je XML gaat genereren, die notices oplossen kan geen kwaad:
.. of Maar je krijgt niet zomaar HTML, maar foutmeldingen. Of eigenlijk notices. Ongeacht hoe je je XML gaat genereren, die notices oplossen kan geen kwaad:
Quote:
Notice: Undefined variable: out in C:\wamp\www\cursisten\mysql2xml.php on line 5
Notice: Undefined index: jaarcursus in C:\wamp\www\cursisten\mysql2xml.php on line 51
Notice: Undefined index: tussenvoegsel in C:\wamp\www\cursisten\mysql2xml.php on line 38
Notice: Undefined index: jaarcursus in C:\wamp\www\cursisten\mysql2xml.php on line 51
Notice: Undefined index: tussenvoegsel in C:\wamp\www\cursisten\mysql2xml.php on line 38
Die foutmeldingen (notices) krijg ik niet vanuit de mac-omgeving. Hoe kan dat dan?
Toevoeging:
Wanneer je dit stukje code bovenaan het script zet moet je ze op mac hoogstwaarschijnlijk ook krijgen.
Gewijzigd op 09/04/2011 15:22:22 door Niels K
Niels Kieviet op 09/04/2011 14:34:23:
(...)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
error_reporting( E_ALL );
ini_set( 'display_errors', '1' );
[/quote]
Sorry hoor, maar dit toont wel hoe slecht jou kennis van php is. Waarvoor zou je een integer tussen quotes doen?
error_reporting( E_ALL );
ini_set( 'display_errors', '1' );
[/quote]
Sorry hoor, maar dit toont wel hoe slecht jou kennis van php is. Waarvoor zou je een integer tussen quotes doen?
Quote:
Sorry hoor, maar dit toont wel hoe slecht jou kennis van php is
Dank u voor het compliment... Ik had het gekopieerd van een site en het niet gezien..
Aangepast .., tevreden?
Dank mensen voor het meedenken en aandragen van oplossingen. De bewuste error code heb ik toegevoegd en inderdaad, op mijn mac verschijnen ook de notices.