hallo,
Ik wil de inhoud van mijn sql blog nu naar xml verzenden.
ik heb dit met onderstaande code een poging gedaan maar als ik dit php bestand open.
Dan krijg ik geen xml.
Hopelijk kunnen jullie me helpen.
PHP Code:
<?php
$host = "host";
$user = "user";
$pass = "pass";
$database = "database";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT * FROM blog ORDER BY date DESC";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
$xml_output = "<?xml version=\"1.0\"?>\n";
$xml_output .= "<entries>\n";
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<entry>\n";
$xml_output .= "\t\t<date>" . $row['date'] . "</date>\n";
// Escaping illegal characters
$row['text'] = str_replace("&", "&", $row['text']);
$row['text'] = str_replace("<", "<", $row['text']);
$row['text'] = str_replace(">", ">", $row['text']);
$row['text'] = str_replace("\"", """, $row['text']);
$xml_output .= "\t\t<text>" . $row['text'] . "</text>\n";
$xml_output .= "\t</entry>\n";
}
$xml_output .= "</entries>";
echo $xml_output;
?>
- php naar sql
-
28-03-2013, 21:31 #1
- Berichten
- 40
- Lid sinds
- 13 Jaar
php naar sql
-
In de schijnwerper
-
28-03-2013, 22:41 #2
- Berichten
- 796
- Lid sinds
- 16 Jaar
Re: php naar sql
Volgens mij moet je de PRE-tags gebruiken, zie hieronder:
PHP Code:<?php
$host = "host";
$user = "user";
$pass = "pass";
$database = "database";
$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die("Could not find database.");
$query = "SELECT * FROM blog ORDER BY date DESC";
$resultID = mysql_query($query, $linkID) or die("Data not found.");
$xml_output = "<?xml version=\"1.0\"?>\n";
$xml_output .= "<entries>\n";
for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
$row = mysql_fetch_assoc($resultID);
$xml_output .= "\t<entry>\n";
$xml_output .= "\t\t<date>" . $row['date'] . "</date>\n";
// Escaping illegal characters
$row['text'] = str_replace("&", "&", $row['text']);
$row['text'] = str_replace("<", "<", $row['text']);
$row['text'] = str_replace(">", ">", $row['text']);
$row['text'] = str_replace("\"", """, $row['text']);
$xml_output .= "\t\t<text>" . $row['text'] . "</text>\n";
$xml_output .= "\t</entry>\n";
}
$xml_output .= "</entries>";
echo '<pre>';
echo $xml_output;
echo '</pre>';
?>
-
28-03-2013, 22:53 #3
- Berichten
- 39
- Lid sinds
- 13 Jaar
Re: php naar sql
Je moet een xml header toevoegen: header ("Content-Type:text/xml");
Ik denk dat het probleem daarmee opgelost is.
-
28-03-2013, 22:57 #4
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: php naar sql
Wat Thomas zegt. Pre tags zijn in elk geval geen oplossing, dit is gewoon een "preformatting" methode die door elke browser ondersteund wordt in een makkelijk leesbaar lettertype met vaste ruimtes tussen tekens, regels en tabs. Wordt vaak gebruikt om onopgemaakte tekst makkelijker leesbaar te maken (denk bijv aan de uitkomst van var_dump() in PHP).
Wat je vraag betreft:
Je browser herkent het niet als XML omdat de header waarschijnlijk gewoon text/html meestuurt, wat als gevolg heeft dat je pagina blanco blijft (hij herkent namelijk wel de tags, maar weet niet hoe hij die moet tonen op het scherm). Dit kun je testen door de broncode te bekijken, daar zie je waarschijnlijk wel netjes alles staan.
Het toevoegen van de header text/xml zorgt ervoor dat het script wordt uitgevoerd ware het een .xml bestand en daar heeft je browser weer een eigen soort "styling" voor. (Of je krijgt een download aangeboden, dat kan ook).
-
28-03-2013, 23:01 #5
- Berichten
- 796
- Lid sinds
- 16 Jaar
Re: php naar sql
Mooie duidelijke uitleg! Hiermee heb ik ook weer wat bijgeleerd! :-)
-
28-03-2013, 23:32 #6
- Berichten
- 39
- Lid sinds
- 13 Jaar
Re: php naar sql
Dankjewel voor het geven van een toelichting op mijn reactie Joshua, had ik net zelf even de tijd niet voor. ;)
-
29-03-2013, 07:41 #7
- Berichten
- 750
- Lid sinds
- 15 Jaar
Re: php naar sql
Nog een verbetering
Mysql_num_rows niet in je for zetten maar er boven initialiseren. Dit zal aanzienlijk efficiënter wezen bij het ophalen van een grote dataset
-
29-03-2013, 21:06 #8
- Berichten
- 40
- Lid sinds
- 13 Jaar
Re: php naar sql
bedankt allemaal voor de hulp.
Maar op de 1ste lijn heb ik nu dit toegevoegd header("Content-type: text/xml; charset=utf-8");
dan krijg ik deze Warning: Cannot modify header information - headers already sent by (output started at app.php:1) in app.php on line 1
-
29-03-2013, 21:12 #9
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: php naar sql
Zoals je in je code ziet staat er een spatie voor de <?php tag. Bij het gebruik van header() mag je absoluut GEEN output hebben op het moment dat je deze functie inschakelt. De spatie verwijderen is een oplossing.
Als de error blijft bestaan dan heb je een zgn. "BOM" erin zitten (Byte Order Mark), zie hier: http://stackoverflow.com/questions/3...ning-of-a-file
De BOM is een onzichtbaar teken dat wel een aantal bytes in beslag neemt, PHP ziet dit weer als output voordat je de header() functie aanroept en geeft een foutmelding.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic