login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > XML en PHP > sql2xml

sql2xml

Auteur: DRUNK - 02 oktober 2004 - 16:23 - Gekeurd door: Dennisvb - Hits: 12813 - Aantal punten: 4.92 (6 stemmen)



Wat doet deze functie?
Deze functie krijgt een query (SELECT * FROM gastenboek ORDER BY id DESC LIMIT 0,5), alle resultaten hiervan worden in een xml document geschreven:

  1. <row id="0">
  2. <id>11</id>
  3. <naam>fdsb</naam>
  4. <emailadres>vcv@df.nl</emailadres>
  5. <website>http://</website>
  6. <bericht>pjkvm</bericht>
  7. <datum>2004-10-02</datum>
  8. <tijd>16:19</tijd>
  9. </row>
..... enz

Wat is het nut?
Nu kunnen mensen van buitenaf jou xml document openen/uitlezen en de inhoud op hun site zetten. Dus als je een nieuwssysteem heb laat je elke keer dat je nieuws toevoegd deze functie draaien, dan blijft het xml document ook nog uptodate. De gebruikers hebben geen toegang tot jou database nodig maar kunnen wel de laatste berichten van jou site op hun site zetten.

Hier heb ik ook een voobeeldje bij gemaakt, Gastenboek 2.0 van joel (http://sitemasters.be/index.php?pagina=scripts/scripts&cat=6&id=48) nadat er een nieuw bericht word toegevoegd zal deze functie worden aangeroepen en word het xml document opniew aangemaakt met het nieuwe bericht erin. Dit is natuurlijk bij elk systeem toe te passen. Om dit xml document te verwerken kun je 'Simpele xml parser' gebruiken ( http://sitemast...amp;id=300 ).

groeten Tim

Code:
  1. # xml.php
  2. <?php
  3.  
  4. /**
  5.  * functie: xml_write
  6.  * auteur: T. Jurcka <tim@fusionmedia.nl>
  7.  *
  8.  * Deze functie voerd $query uit en zal aan de hand
  9.  * van het resultaat een .xml document maken in /$dir/
  10.  * met de naam $file. Functie gaat ervan uit dat er
  11.  * al een database verbinding is gemaakt en dat
  12.  * er schrijf rechten zijn in $dir
  13.  */
  14. function xml_write($query, $dir = './', $file = 'sql2xml.xml') {
  15. if (substr($query, 0, 6) != 'SELECT') {
  16. die('De opgegeven query is niet geldig!');
  17. }
  18. $row = 0;
  19. $xml = '';
  20. $sql2xmlQ = mysql_query($query) or die(mysql_error());
  21. $num_fields = mysql_num_fields($sql2xmlQ);
  22. $xml .= "<?xml version=\"1.0\"?>\n<result>\n";
  23. while ($sqldata = mysql_fetch_array($sql2xmlQ)) {
  24. $xml .= "\t<row id=\"".$row."\">\n";
  25. for ($i = 0; $i < $num_fields; $i++){
  26. $tag = mysql_field_name($sql2xmlQ, $i);
  27. $xml .= "\t\t<" . $tag . ">" . $sqldata[$i] . "</" . $tag . ">\n";
  28. }
  29. $xml .= "\t</row>\n";
  30. $row++;
  31. }
  32. $xml .= "</result>";
  33. $fh = fopen($dir . $file, 'w');
  34. $fw = fwrite($fh, $xml);
  35.  
  36. return 0;
  37. }
  38. ?>


  1. # schrijven.php [aangepast!!!]
  2. <?php ob_start();
  3.  
  4. // Query om gegevens te selecteren voor in het xml document
  5. $write2xmlQ = "SELECT * FROM gastenboek ORDER BY id DESC LIMIT 0,5";
  6. ?>
  7. <script language="JavaScript">
  8. //Deze functie hebben we later nodig voor de UBB code
  9. function smiley() {
  10. return;
  11. }
  12. function Invoegen(Smiley) {
  13. var edit;
  14. var HuidigeTekst = document.gastenboek.bericht.value;
  15. edit = HuidigeTekst+Smiley+" ";
  16. document.gastenboek.bericht.value=edit;
  17. document.gastenboek.bericht.focus();
  18. return;
  19. }
  20. </script>
  21. <?php
  22.  
  23. include('config.php'); // De config includen voor MySQL gegevens en opmaak van de gastenboek
  24. include('xml.php'); // De extra functie voor het aanmaken van een .xml file op je server includeren
  25.  
  26. //Als men op Submit gedrukt heeft
  27. if ($_POST['Submit']) {
  28.  
  29. //Deze functie gebruiken we later om te checken of het e-mailadres wel
  30. //bestaat zodat mensen geen fake e-mailadres kunnen ingeven
  31. function check_email($address) {
  32. list($local, $host) = explode("@", $address);
  33. $pattern_local = "^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$";
  34. $pattern_host = "^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$";
  35. $match_local = eregi($pattern_local, $local);
  36. $match_host = eregi($pattern_host, $host);
  37.  
  38. if($match_local && $match_host) {
  39. return 1;
  40. } else {
  41. return 0;
  42. }
  43. }
  44.  
  45. //We gaan controleren of alle velden zijn ingevuld en dat e-mailadres bestaat
  46. //Ook checken we of dat de gebruiker al een bericht heeft gepost om Spam te vermijden
  47. if (!trim($_POST['naam']))
  48. $error="Je moet je naam invullen";
  49. elseif(!check_email($_POST['emailadres']))
  50. $error="Je moet een geldig e-mailadres invullen";
  51. elseif (!trim($_POST['bericht']))
  52. $error="Je moet een bericht invullen";
  53. elseif ($_COOKIE[Gastenboek] == "1") {
  54. $error="Je kan geen bericht posten omdat je er al &#65533;n hebt gepost";
  55. }
  56.  
  57. //Als er een veld niet is ingevuld of wanneer het e-mailadres niet bestaat komt er een error
  58. if ($error != "") {
  59.  
  60. echo "
  61. <center>
  62. <table class=\"gastenboek\" width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">
  63. <tr>
  64. <td align=\"center\">
  65. <b>$error</b>
  66. <br>
  67. <form method=\"post\" action=\"javascript:history.go(-1)\">
  68. <input type=\"submit\" name=\"Terug\" value=\"Terug\">
  69. </form>
  70. </td>
  71. </tr>
  72. </table>
  73. </center>";
  74.  
  75. //Als alles correct is ingevuld gaan we over naar het posten van de gegevens naar de database
  76. } else {
  77.  
  78. //De datum en de tijd maken we aan door de functie date()
  79. $datum = date("Y-m-d");
  80. $tijd = date("H:i:s");
  81.  
  82. //We maken een query en voeren die uit door mysql_query()
  83. $query="INSERT INTO gastenboek (naam, emailadres, website, bericht, datum, tijd)
  84. VALUES ('$_POST[naam]', '$_POST[emailadres]', '$_POST[website]', '$_POST[bericht]', '$datum', '$tijd')";
  85. mysql_query($query) or die (mysql_error());
  86.  
  87. //Om SPAM te vermijden maken we een COOKIE (zie config)
  88. setcookie(Gastenboek,"1",$tijd_cookie);
  89.  
  90. // Met deze functie word de inhoud van je database naar een .xml bestand geschreven.
  91. // de variabele $write2xmlQ moet een select query zijn, deze bepaald het aantal records
  92. // en de volgorde wat naar je .xml file geschreven word.
  93. xml_write($write2xmlQ, './xmlfile/');
  94.  
  95. //Na het verzenden sturen we de gebruiker terug naar het gastenboek
  96. header ("location: lezen.php");
  97.  
  98. }
  99.  
  100. //Als men nog niet op Submit gedrukt heeft krijgt men natuurlijk het formulier te zien
  101. } else {
  102. ?>
  103. <center>
  104. <form name="gastenboek" action="" method="post">
  105. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="2">
  106. <tr>
  107. <td height="20" colspan="2"><strong>Bericht posten in het gastenboek:</strong></td>
  108. </tr>
  109. <tr>
  110. <td width="44%">Naam:</td>
  111. <td width="56%">
  112. <input name="naam" type="text" id="naam" size="30" maxlength="50">
  113. </td>
  114. </tr>
  115. <tr>
  116. <td>Website:</td>
  117. <td>
  118. <input name="website" type="text" id="website" value="http://" size="30" maxlength="50">
  119. <br>
  120. <font color="#FF0000">(<strong>niets invullen</strong> als je<strong> geen website</strong> hebt)</font>
  121. </td>
  122. </tr>
  123. <tr>
  124. <td>E-mail adres:</td>
  125. <td>
  126. <input name="emailadres" type="text" id="emailadres" size="30" maxlength="50">
  127. </td>
  128. </tr>
  129. <tr>
  130. <td align="center" colspan="2">Bericht:</td>
  131. </tr>
  132. <tr>
  133. <td align="center" colspan="2">
  134. <table width="27%" border="0" cellspacing="0" cellpadding="0">
  135. <tr>
  136. <td align="center" height="21" colspan="4"><small><i><b>Ubb-code:</b></i></small>
  137. </td>
  138. </tr>
  139. <tr>
  140. <td align="center" height="27" colspan="4">
  141. <input type="button" name="b" value="B" style="font-weight: bold; width: 30px;" onClick="javascript:Invoegen('[B]...[/B]');">
  142. <input type="button" name="u" value="U" style="text-decoration: underline; width: 30px;" onClick="javascript:Invoegen('[U]...[/U]');">
  143. <input type="button" name="i" value="I" style="font-style: italic; width: 30px;" onClick="javascript:Invoegen('[I]...[/I]');">
  144. <input type="button" name="s" value="S" style="text-decoration: line-through; width: 30px;" onClick="javascript:Invoegen('[S]...[/S]');">
  145. <input type="button" name="url" value="http://" onClick="javascript:Invoegen('[URL=http://...]...[/URL]');">
  146. </td>
  147. </tr>
  148.  
  149. <tr>
  150. <td align="center" height="21" colspan="4">
  151. <input type="button" name="align" value="Align" onClick="javascript:Invoegen('[ALIGN=...]...[/ALIGN]');">
  152. <input type="button" name="color" value="Kleur" onClick="javascript:Invoegen('[COLOR=...]...[/COLOR]');">
  153. <input type="button" name="size" value="Grootte" onClick="javascript:Invoegen('[SIZE=...]...[/SIZE]');">
  154. <input type="button" name="e-mail" value="E-mail" onClick="javascript:Invoegen('[EMAIL=...]...[/EMAIL]');">
  155. </td>
  156. </tr>
  157. <tr>
  158. <td align="center" height="21" colspan="4"><small><i><b>Smileys:</b></i></small></td>
  159. </tr>
  160.  
  161. <tr>
  162. <td height="41" width="24%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':)');"><img src="smileys/blij.gif" width="20" border="0"></a></td>
  163. <td height="41" width="24%" align="center" valign="middle"><a href="javascript:smiley();" onClick="javascript:Invoegen(':D');"><img src="smileys/tanden.gif" width="20" height="20" border="0"></a></td>
  164. <td height="41" width="23%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':P');"><img src="smileys/tong.gif" width="20" height="20" border="0"></a></td>
  165. <td height="41" width="29%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(';)');"><img src="smileys/knipoog.gif" width="20" height="20" border="0"></a></td>
  166. </tr>
  167.  
  168. <tr>
  169. <td height="36" width="24%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':cool:');"><img src="smileys/cool.gif" width="20" height="20" border="0"></a></td>
  170. <td height="36" width="24%" align="center" valign="middle"><a href="javascript:smiley();" onClick="javascript:Invoegen(':s');"><img src="smileys/verward.gif" width="20" height="20" border="0"></a></td>
  171. <td height="36" width="23%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':omg:');"><img src="smileys/omg.gif" width="20" height="20" border="0"></a></td>
  172. <td height="36" width="29%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':(');"><img src="smileys/droevig.gif" width="20" height="20" border="0"></a></td>
  173. </tr>
  174. </table>
  175. <br>
  176. <textarea name="bericht" cols="50" rows="10" id="bericht"></textarea><br>
  177. </td>
  178. </tr>
  179. <tr>
  180. <td height="25" colspan="2" align="center">
  181. <input type="submit" name="Submit" value="Verzenden">&nbsp;
  182. <input name="Reset" type="submit" id="Reset" value="Opnieuw">
  183. </td>
  184. </tr>
  185. </table>
  186. </form>
  187. </center>
  188. <?php } ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Geen reacties (0)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.045s