login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > XML en PHP > Rss Maker

Rss Maker

Auteur: Rens - 21 oktober 2005 - 21:23 - Gekeurd door: nemesiskoen - Hits: 9175 - Aantal punten: 4.00 (6 stemmen)




Er valt niet veel aan te doen.
In het script zelf hoef je maar 4 dingen te veranderen, de MySQL host, username, password en database.

Verder moet je zelf maar even een beveiliging erop maken als je dat nodig vind.

Als je het script gebruikt, moet je niet vergeten om een .xml-bestand aan te maken in de map files van de tabel waaruit je de gegevens haalt.
Als je dit wel vergeet kan het script misschien niet werken.

Dus als je uit de tabel "nieuws" gegevens wilt halen, moet je het bestand files/nieuws.xml aanmaken.

Verder valt er denk ik niet veel over te vertellen, er staan comments in het script...
Vragen? Kunt altijd PM'en of hier bij de reacties neerzetten.

Je kunt het script kopiëren en downloaden.

Hij is trouwens ook XHTML 1.0 strict^^

Code:
rss.php:
  1. <?PHP
  2. // sessie starten
  3. // we slaan alle gegevens op in een sessie
  4. // ob_start
  5. // we gebruiken af en toe een header()
  6. // error reporting op E_ALL zetten
  7. // zo krijgen we alle fouten te zien
  8. // en kunnen we ze makkelijk oplossen
  9.  
  10. // verbinding maken met de MySQL server
  11. // ik gebruik hier "or die()" voor als de verbinding
  12. // niet gelukt is
  13. // dit i.v.m. dat de pagina toch afgebroken MOET worden
  14. MySQL_Connect("host", "username", "password") or die("Error!- Kan geen verbinding maken met de server!<br />".MySQL_Error()."<br />".MySQL_Errno());
  15. // verbinding maken met de database
  16. // hier hetzelfde als bij MySQL_Connect met de "or die()"
  17. MySQL_Select_DB("") or die("Error!- Kan geen verbinding maken met de database!<br />".MySQL_Error()."<br />".MySQL_Errno());
  18. ?>
  19. <!DOCTYPE html
  20. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  21. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  22. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
  23. <head>
  24. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  25. <title> -= Rss Maker =- </title>
  26. </head>
  27. <body>
  28. <?PHP
  29. // actie includen die ervoor zorgt dat we opnieuw kunnen
  30. // beginnen met het maken van een rss
  31. include("action/opnieuw.php");
  32. // kijken of er een action is geset in de url
  33. if(!IsSet($_GET['action']))
  34. {
  35. // nee, niet het geval
  36.  
  37. // kijken of er al een sessie geset is om daar mee
  38. // verder te kunnen gaan
  39. if(!IsSet($_SESSION['aantal']) && !IsSet($_SESSION['tabel']) && !IsSet($_SESSION['velden']))
  40. {
  41. // er is nog geen sessie geset
  42. // dus we gaan nu eens vragen hoeveel velden de gebruiker
  43. // wil hebben in zijn/haar rss bestand
  44.  
  45. // er is op de verstuur knop gedrukt
  46. if($_SERVER['REQUEST_METHOD'] == "POST")
  47. {
  48. // kijken of het getal ook echt een getal is d.m.v. "regex"
  49. if(Is_Numeric($_POST['aantal']))
  50. {
  51. // ja, het is echt een getal dus zetten we het aantal in
  52. // de sessie
  53. $_SESSION['aantal'] = $_POST['aantal'];
  54. // pagina refreshen
  55. header("Location: ".$_SERVER['REQUEST_URI']);
  56. } else
  57. {
  58. // het getal bleek geen getal te zijn
  59. // error weergeven en een "Keer terug-link"
  60. echo "Je hebt geen (juist) aantal ingevuld!<br />";
  61. echo "<a href='javascript:history.go(-1);'>Keer terug</a>.";
  62. }
  63. } else
  64. {
  65. // er is nog niet op de knop gedrukt
  66. ?>
  67. <form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  68. <table border="1" width="800">
  69. <tr>
  70. <th colspan="2">
  71. Velden met een * zijn verplicht!
  72. </th>
  73. </tr>
  74. <tr>
  75. <td width="200">
  76. Aantal velden: *
  77. </td>
  78. <td width="600">
  79. <input type="text" name="aantal" value="" />
  80. </td>
  81. </tr>
  82. <tr>
  83. <td colspan="2">
  84. <input type="submit" name="submit" value="Volgende" />
  85. <input type="reset" name="reset" value="Leeg velden" />
  86. </td>
  87. </tr>
  88. </table>
  89. </form>
  90. <?PHP
  91. // einde van het eerste formulier + posten
  92. }
  93. } else if(IsSet($_SESSION['aantal']) && !IsSet($_SESSION['tabel']) && !IsSet($_SESSION['velden']) && !IsSet($_SESSION['order']) && !IsSet($_SESSION['ascdesc']) && !IsSet($_SESSION['limit']['begin']) && !IsSet($_SESSION['limit']['eind']))
  94. {
  95. // de sessie aantal is geset, de andere sessies nog niet
  96. // dus we gaan nu een formulier neerzetten voor de andere waarden
  97. // van de sessies
  98. if($_SERVER['REQUEST_METHOD'] == "POST")
  99. {
  100. // er is op de verstuur knop gedrukt
  101.  
  102. // variabele $sError aanmaken voor het opslaan v.d. errors
  103. $sError = "";
  104.  
  105. // veld 'tabel' is leeg
  106. if(empty($_POST['tabel']))
  107. {
  108. $sError .= "Je hebt geen tabelnaam ingevuld!<br />";
  109. }
  110. // veld 'order' is leeg
  111. if(empty($_POST['order']))
  112. {
  113. $sError .= "Je hebt niet ingevuld waarop geordend moet worden!<br />";
  114. }
  115. // veld 'limit_begin' is leeg of geen getal
  116. if(strLen($_POST['limit_begin']) < 1 || !Is_Numeric($_POST['limit_begin']))
  117. {
  118. $sError .= "Je hebt geen begin voor de limit ingesteld!<br />";
  119. }
  120. // veld 'limit_eind' is leeg of geen getal
  121. if(empty($_POST['limit_eind']) || !Is_Numeric($_POST['limit_eind']))
  122. {
  123. $sError .= "Je hebt geen eind voor de limit ingesteld!<br />";
  124. }
  125. // veld 'ascdesc' is leeg
  126. if(empty($_POST['ascdesc']))
  127. {
  128. $sError .= "Je hebt de manier niet geselecteerd waarop geordend moet worden!<br />";
  129. }
  130. // onze velden ophalen
  131. for($i = 0; $i < $_SESSION['aantal']; $i++)
  132. {
  133. // veld 'veld_$i' is leeg
  134. if(empty($_POST['veld_'.$i]))
  135. {
  136. $sError .= "Je hebt veldnaam ".($i+1)." niet ingevuld!<br />";
  137. }
  138. }
  139. // er is een error
  140. if(strLen($sError) > 0)
  141. {
  142. // error weergeven met "Keer terug-link"
  143. echo $sError."<br />";
  144. echo "<a href='javascript:history.go(-1);'>Keer terug</a>.";
  145. } else
  146. {
  147. // geen error
  148. // onze veldnamen in een array zetten
  149. for($i = 0; $i < $_SESSION['aantal']; $i++)
  150. {
  151. $aVelden[] = $_POST['veld_'.$i];
  152. }
  153. // onze tabel naam in een sessie zetten
  154. $_SESSION['tabel'] = htmlEntities($_POST['tabel'], ENT_QUOTES);
  155. // velden in een sessie zetten
  156. // let op de implode, deze zet een ", " tussen alle waarden v.d. array
  157. $_SESSION['velden'] = htmlEntities(implode(", ", $aVelden), ENT_QUOTES);
  158. // onze order in een sessie zetten
  159. $_SESSION['order'] = htmlEntities($_POST['order'], ENT_QUOTES);
  160. // onze ASC of DESC in een sessie zetten
  161. $_SESSION['ascdesc'] = strToUpper(htmlEntities($_POST['ascdesc'], ENT_QUOTES));
  162. // limit begin in de sessie zetten
  163. $_SESSION['limit']['begin'] = htmlEntities($_POST['limit_begin'], ENT_QUOTES);
  164. // limit einde in de sessie zetten
  165. $_SESSION['limit']['eind'] = htmlEntities($_POST['limit_eind'], ENT_QUOTES);
  166. // pagina refreshen
  167. header("Location: ".$_SERVER['REQUEST_URI']);
  168. }
  169. } else
  170. {
  171. // het formulier voor de waardes in te vullen
  172. ?>
  173. <form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  174. <table border="1">
  175. <tr>
  176. <th colspan="2">
  177. Velden met een * zijn verplicht!
  178. </th>
  179. </tr>
  180. <tr>
  181. <td width="200">
  182. Tabelnaam: *
  183. </td>
  184. <td width="600">
  185. <input type="text" name="tabel" value="" />
  186. </td>
  187. </tr>
  188. <tr>
  189. <td width="200">
  190. Ordenen op: *
  191. </td>
  192. <td width="600">
  193. <input type="text" name="order" value="" />
  194. <select name="ascdesc">
  195. <option value="asc">Oplopend</option>
  196. <option value="desc">Aflopend</option>
  197. </select>
  198. </td>
  199. </tr>
  200. <tr>
  201. <td width="200">
  202. Limit begin: *
  203. </td>
  204. <td width="600">
  205. <input type="text" name="limit_begin" value="" />
  206. </td>
  207. </tr>
  208. <tr>
  209. <td width="200">
  210. Limit eind: *
  211. </td>
  212. <td width="600">
  213. <input type="text" name="limit_eind" value="" />
  214. </td>
  215. </tr>
  216. <?PHP
  217. for($i = 0; $i < $_SESSION['aantal']; $i++)
  218. {
  219. ?>
  220. <tr>
  221. <td width="200">
  222. Veldnaam <?=$i+1;?>: *
  223. </td>
  224. <td width="600">
  225. <input type="text" name="veld_<?=$i;?>" value="" />
  226. </td>
  227. </tr>
  228. <?PHP
  229. }
  230. ?>
  231. <tr>
  232. <td colspan="2">
  233. <a href="<?=$_SERVER['REQUEST_URI'];?>?action=opnieuw">Opnieuw beginnen</a>
  234. </td>
  235. </tr>
  236. <tr>
  237. <td colspan="2">
  238. <input type="submit" name="submit" value="Volgende" />
  239. <input type="reset" name="reset" value="Leeg velden" />
  240. </td>
  241. </tr>
  242. </table>
  243. </form>
  244. <?PHP
  245. }
  246. } else if(IsSet($_SESSION['aantal']) && IsSet($_SESSION['tabel']) && IsSet($_SESSION['velden']) && IsSet($_SESSION['order']) && IsSet($_SESSION['ascdesc']) && IsSet($_SESSION['limit']['begin']) && IsSet($_SESSION['limit']['eind']))
  247. {
  248. // al onze waarden van de sessie zijn geset
  249. // nu gaan we de query maken
  250.  
  251. // variabele voor de query
  252. $sQuerySelect = "SELECT ".$_SESSION['velden']." FROM ".$_SESSION['tabel']." ORDER BY ".$_SESSION['order']." ".$_SESSION['ascdesc']." LIMIT ".$_SESSION['limit']['begin'].", ".$_SESSION['limit']['eind'];
  253.  
  254. // query uitvoeren
  255. // ook hier weer "or die()" achter het uitvoeren
  256. // pagina MOET worden
  257. $rResultSelect = MySQL_Query($sQuerySelect) or die("Error!- Kan de gegevens niet ophalen!<br />".MySQL_Error()."<br />".MySQL_Errno());
  258.  
  259. // onze variabele maken voor de output
  260. // die in het bestand moet komen
  261. $sOutput = '<rss version="2.0">'."\n";
  262. $sOutput .= "<channel>\n";
  263. $sOutput .= "<type>".ucFirst($_SESSION['tabel'])."</type>\n";
  264. $sOutput .= "<generator> -= Rss Maker V1 =- </generator>";
  265.  
  266. // while loop om overal door heen te lopen
  267. while($aFetchSelect = MySQL_Fetch_Assoc($rResultSelect))
  268. {
  269. // explode op ", " in onze sessie 'velden'
  270. $aVelden = explode(", ", $_SESSION['velden']);
  271. $sOutput .= "<item>\n";
  272. // for loopje om door de array 'velden' heen te wandelen
  273. for($i = 0; $i < count($aVelden); $i++)
  274. {
  275. // output erbij schrijven
  276. $sOutput .= "<".$aVelden[$i].">".$aFetchSelect[$aVelden[$i]]."</".$aVelden[$i].">\n";
  277. }
  278. // item stoppen
  279. $sOutput .= "</item>\n";
  280. }
  281. $sOutput .= "</channel>\n";
  282. $sOutput .= "</rss>";
  283. // einde van de output
  284.  
  285. // bestand openen om naar te schrijven
  286. if(!$rFile = fopen("files/".$_SESSION['tabel'].".xml", "w+"))
  287. {
  288. // bestand kan niet worden geopend
  289. echo "Error!- Kan het bestand niet openen!";
  290. } else
  291. {
  292. // bestand is geopend
  293.  
  294. // kijken of we de output kunnen schrijven
  295. if(!fWrite($rFile, $sOutput))
  296. {
  297. // nee, output kan niet geschreven worden
  298. echo "Error!- Kan de output niet in het bestand schrijven!";
  299. } else
  300. {
  301. // output is succesvol geschreven
  302. echo "De output is succesvol in het bestand geschreven!<br />";
  303. echo opnieuw();
  304. }
  305. }
  306. }
  307. } else
  308. {
  309. // er is een action geset
  310. switch($_GET['action'])
  311. {
  312. // action is "opnieuw"
  313. case "opnieuw":
  314. // functie "opnieuw" uitvoeren
  315. echo opnieuw();
  316. break;
  317. }
  318. }
  319. ?>
  320. </body>
  321. </html>


action/opnieuw.php:
  1. <?PHP
  2. // function "opnieuw" maken
  3. function opnieuw()
  4. {
  5. // "?pagina=opnieuw" uit de URL strippen
  6. $sPagina = str_replace("?action=opnieuw", "", $_SERVER['REQUEST_URI']);
  7. // sessies legen
  8. // sessies verwijderen
  9. session_delete();
  10. // variabele voor de output aanmaken
  11. $sReturn = "De variabelen zijn gewist.<br />";
  12. $sReturn .= "<a href='".$sPagina."'>Opnieuw beginnen</a><br />";
  13. // output terugsturen
  14. return $sReturn;
  15. }
  16. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (12)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.07s