table export naar xml: via mac wel, via windows niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cees D

Cees D

05/04/2011 11:15:03
Quote Anchor link
Beste PHP-ers,

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?
 
PHP hulp

PHP hulp

25/12/2024 21:38:39
 
Cees D

Cees D

08/04/2011 08:56:19
Quote Anchor link
Ik ben er nog steeds niet uit.
Is er niemand die mij op het goede spoor kan zetten?
 

08/04/2011 09:01:47
Quote Anchor link
Het kan aan de instellingen liggen.
Wat voor troep komt erbij?
Hoe maak je die xml aan?
 
Cees D

Cees D

08/04/2011 14:05:28
Quote Anchor link
Dit is de HTML 'troep' die door het script gemaakt wordt. Nogmaals: vanuit mijn mac krijg ik wel het schone, bruikbare xml bestand. Windows gooit roet in het eten!


<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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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

?>


De in dit script gedefinieerde functie wordt aangeroepen via een ander script.
 

09/04/2011 09:40:22
Quote Anchor link
Gebruik simplexml of dom.
 
Jelmer -

Jelmer -

09/04/2011 11:49:20
Quote Anchor link
.. of 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:
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
 
Cees D

Cees D

09/04/2011 14:04:10
Quote Anchor link
Die foutmeldingen (notices) krijg ik niet vanuit de mac-omgeving. Hoe kan dat dan?
 
Niels K

Niels K

09/04/2011 14:34:23
Quote Anchor link
Daar worden waarschijnlijk de fouten onderdrukt. (Wat overigens niet de bedoeling is)

Toevoeging:

Wanneer je dit stukje code bovenaan het script zet moet je ze op mac hoogstwaarschijnlijk ook krijgen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php

error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
Gewijzigd op 09/04/2011 15:22:22 door Niels K
 

09/04/2011 15:18:43
Quote Anchor link
Niels Kieviet op 09/04/2011 14:34:23:
(...)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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?
 
Niels K

Niels K

09/04/2011 15:22:12
Quote Anchor link
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?
 
Cees D

Cees D

18/04/2011 13:46:12
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.