Advertisement
Guest User

Help !!1

a guest
May 4th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.12 KB | None | 0 0
  1. <?php
  2.  
  3. //hopefully gets data from url then returns the data
  4. $url = "http://www.thepowerof10.info/rankings/rankinglist.aspx?event=60&agegroup=U20&sex=M&year=2015";
  5. /**$event ;
  6. $agegroup;
  7. $sex;
  8. $year;
  9. $newUrl = "http://www.thepowerof10.info/rankings/rankinglist.aspx?event=$event&agegroup=$agegroup&sex=$sex&year=$year"
  10. $urlInput = array
  11. (
  12. array("ALL","M",60),
  13. array("ALL","M",100),
  14. array("ALL","M",200),
  15. array("ALL","M",400),
  16. array("ALL","M",800),
  17. array("ALL","M",1500),
  18. array("ALL","M",3000),
  19. array("ALL","M",5000),
  20. array("ALL","M",10000),
  21. array("ALL","M","10K"),
  22. array("ALL","M","HM"),
  23. array("ALL","M","Mar"),
  24. array("ALL","M","60H"),
  25. array("ALL","M","110H"),
  26. array("ALL","M","400H"),
  27. array("ALL","M","HJ"),
  28. array("ALL","M","PV"),
  29. array("ALL","M","LJ"),
  30. array("ALL","M","TJ"),
  31. array("ALL","M","SP7.26K"),
  32. array("ALL","M","DT2K"),
  33. array("ALL","M","HT7.26K"),
  34. array("ALL","M","JT800"),
  35. array("ALL","M","HepI"),
  36. array("ALL","M","Dec"),
  37. array("ALL","M","20KW"),
  38. array("ALL","M","50KW"),
  39. array("ALL","M","4x100"),
  40. array("ALL","M","4x400"),
  41. array("U20","M",60),
  42. array("U20","M",100),
  43. array("U20","M",200),
  44. array("U20","M",400),
  45. array("U20","M",800),
  46. array("U20","M",1500),
  47. array("U20","M",3000),
  48. array("U20","M",5000),
  49. array("U20","M","2000SC"),
  50. array("U20","M","60HU20M"),
  51. array("U20","M","110HU20M"),
  52. array("U20","M","400H"),
  53. array("U20","M","HJ"),
  54. array("U20","M", "PV"),
  55. array("U20","M","LJ"),
  56. array("U20","M","TJ"),
  57. array("U20","M","SP6K"),
  58. array("U20","M","DT1.75K"),
  59. array("U20","M","HT6K"),
  60. array("U20","M","JT800"),
  61. array("U20","M","HepIU20M"),
  62. array("U20","M","DecU20M"),
  63. array("U20","M","4x100"),
  64. array("U20","M","4x400"),
  65. array("U17","M",60),
  66. array("U17","M",100),
  67. array("U17","M",200),
  68. array("U17","M",400),
  69. array("U17","M",800),
  70. array("U17","M",1500),
  71. array("U17","M",3000),
  72. array("U17","M","1500SC"),
  73. array("U17","M","60HU17M"),
  74. array("U17","M","100HU17M"),
  75. array("U17","M","400HU17M"),
  76. array("U17","M","HJ"),
  77. array("U17","M", "PV"),
  78. array("U17","M","LJ"),
  79. array("U17","M","TJ"),
  80. array("U17","M","SP5K"),
  81. array("U17","M","DT1.5K"),
  82. array("U17","M","HT5K"),
  83. array("U17","M","JT700"),
  84. array("U17","M","HepIU17M"),
  85. array("U17","M","OctU17M"),
  86. array("U17","M","DecU17M"),
  87. array("U17","M","4x100"),
  88. array("U17","M","4x400"),
  89. array("U15","M",60),
  90. array("U15","M",100),
  91. array("U15","M",200),
  92. array("U15","M",300),
  93. array("U15","M",800),
  94. array("U15","M",1500),
  95. array("U15","M",3000),
  96. array("U15","M","60HU15M"),
  97. array("U15","M","80HU15M"),
  98. array("U15","M","HJ"),
  99. array("U15","M", "PV"),
  100. array("U15","M","LJ"),
  101. array("U15","M","TJ"),
  102. array("U15","M","SP4K"),
  103. array("U15","M","DT1.25K"),
  104. array("U15","M","HT4K"),
  105. array("U15","M","JT600"),
  106. array("U15","M","PenIU15M"),
  107. array("U15","M","PenU15M"),
  108. array("U15","M","4x100"),
  109. array("U15","M","4x300"),
  110. array("U13","M",60),
  111. array("U13","M",100),
  112. array("U13","M",200),
  113. array("U13","M",800),
  114. array("U13","M",1500),
  115. array("U13","M","60HU13M"),
  116. array("U13","M","75HU13M"),
  117. array("U13","M","HJ"),
  118. array("U13","M", "PV"),
  119. array("U13","M","LJ"),
  120. array("U13","M","TJ"),
  121. array("U13","M","SP3.25K"),
  122. array("U13","M","DT1K"),
  123. array("U13","M","HT4K"),
  124. array("U13","M","JT400"),
  125. array("U13","M","PenU13M"),
  126. array("U13","M","4x100"),
  127. array("DIS","M",60),
  128. array("DIS","M",100),
  129. array("DIS","M","100WC"),
  130. array("DIS","M",200),
  131. array("DIS","M","200WC"),
  132. array("DIS","M",400),
  133. array("DIS","M","400WC"),
  134. array("DIS","M",800),
  135. array("DIS","M","800WC"),
  136. array("DIS","M",1500),
  137. array("DIS","M","1500WC"),
  138. array("DIS","M",5000),
  139. array("DIS","M","5000WC"),
  140. array("DIS","M",10000),
  141. array("DIS","M","10000WC"),
  142. array("DIS","M","MarWC"),
  143. array("DIS","M","LJ"),
  144. array("DIS","M","TJ"),
  145. array("DIS","M","SP%"),
  146. array("DIS","M","DT%"),
  147. array("DIS","M","JT%"),
  148. array("DIS","M","CT"),
  149.  
  150.  
  151.  
  152.  
  153.  
  154. );
  155. **/
  156. // 2014 simple running errors
  157. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  158.  
  159. function get_data($url) {
  160. $ch = curl_init($url);
  161. $timeout = 5;
  162. curl_setopt($ch, CURLOPT_URL, $url);
  163. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  164. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  165. $data = curl_exec($ch);
  166. curl_close($ch);
  167. return $data;
  168. }
  169.  
  170. function get_links(){
  171. //NOT BEING USED RIGHT NOW
  172. // Empty array to hold all links to return
  173. $links = array();
  174. //Loop through each <a> and </a> tag in the dom and add it to the link array
  175. for ($i=0; $i < $counter; $i++) {
  176. # code...
  177. foreach($table->getElementsByTagName('a') as $link) {
  178.  
  179. $links[] = array('url' => $link->getAttribute('href'), 'text' => $link->nodeValue);
  180. }
  181. }
  182. }
  183.  
  184.  
  185. function main($url) {
  186. //put html data in variable
  187. $html = get_data($url);
  188. // A new dom object
  189. global $dom;
  190. $dom = new DOMDocument();
  191. //load the html into the object if rankings are updated
  192. @$dom ->loadHTML($html);
  193. //Save the unsorted html data locally
  194. $dom ->saveHTMLFile("data.html");
  195. //load data.html back in to dom
  196. @$dom ->loadHTMLFile("data.html");
  197.  
  198.  
  199. /* Remove the banners */
  200. //FIll array with elements we will remove
  201. $domElemsToRemove = array();
  202.  
  203. //find the columns with a td tag in them
  204. $dom->getElementsByTagName("td");
  205.  
  206.  
  207. foreach ( $dom->getElementsByTagName("td") as $domElement ) {
  208. // check if the td has the colspan attribute.
  209. //The banners are contained in a colspan attribute with the value being 14
  210. if ( $domElement->hasAttribute('colspan') ) {
  211. $domElemsToRemove[] = $domElement;
  212. }
  213. }
  214.  
  215. //Go through each element in the array and remove the element from the dom
  216. foreach( $domElemsToRemove as $domElement ){
  217. $domElement->parentNode->removeChild($domElement);
  218. }
  219.  
  220. // Discard Whitespace
  221. $dom-> preserveWhiteSpace = false;
  222.  
  223. //Save stripped html
  224. $dom ->saveHTMLFile("data.html");
  225.  
  226. //Fill an array with required attributes
  227. $x = 0;
  228. //Initialise an array called athletes
  229. global $athletes;
  230.  
  231. $athletes = array (
  232.  
  233. 'rank' => array($x),
  234. 'perf' => array($x),
  235. 'pb' => array($x),
  236. 'dump' => array($x),
  237. 'name' => array($x),
  238. 'dob' => array($x),
  239. 'coach' => array($x),
  240. 'club' => array($x),
  241. 'venue' => array($x),
  242. 'dpb' => array($x),
  243. 'athlink' =>array($x),
  244. 'coachlink' =>array($x),
  245. 'pbvenuelink'=>array($x),
  246.  
  247. );
  248. }
  249.  
  250. function parse($dom, $athletes) {
  251.  
  252. global $counter;
  253. $counter = 0;
  254.  
  255. $table = $dom ->getElementById('ctl00_cphBody_lblCachedRankingList');
  256. $tr = $table ->getElementsByTagName('tr');
  257.  
  258. //Gets all info in table
  259. for ($i=0; $i< $tr ->length; $i++) {
  260.  
  261. //get the plaintext of what's in the td's
  262. $cols = $tr->item($i)->getElementsByTagName("td");
  263. $counter++;
  264.  
  265. //put info in right place
  266. for ($j = 0; $j < $cols->length; $j++) {
  267.  
  268. //getting everything else
  269. //Assign what is in td to appropriate array attr.
  270. if ($j == 0){
  271. $athletes['rank'][$i-3] = $cols->item($j)->nodeValue;
  272. }
  273.  
  274. if($j == 1){
  275. $athletes['perf'][$i-3] = $cols->item($j)->nodeValue;
  276. }
  277.  
  278. if ($j == 4) {
  279. $athletes['pb'][$i-3] = $cols->item($j)->nodeValue;
  280. }
  281.  
  282.  
  283. if($j == 6){
  284. $athletes['name'][$i-3] = $cols->item($j)->nodeValue;
  285. }
  286.  
  287. if ($j == 8) {
  288. $athletes['dob'][$i-3] = $cols->item($j)->nodeValue;
  289. }
  290.  
  291. if ($j == 9){
  292. $athletes['coach'][$i-3] = $cols->item($j)->nodeValue;
  293. }
  294.  
  295. if($j == 10){
  296. $athletes['club'][$i-3] = $cols->item($j)->nodeValue;
  297. }
  298.  
  299. if ($j == 11) {
  300. $athletes['venue'][$i-3] = $cols->item($j)->nodeValue;
  301. }
  302.  
  303. if ($j == 12) {
  304. $athletes['dpb'][$i-3] = $cols->item($j)->nodeValue;
  305. }
  306. $x++;
  307. }
  308.  
  309. echo "\n";
  310. }
  311. return $athletes;
  312. }
  313.  
  314.  
  315.  
  316. function display($allVals, $counter) {
  317.  
  318. //print rank, perf, pb, name, dob, coach, club, venue, dpb
  319. for ($i=-1; $i < $counter; $i++) {
  320.  
  321. if( $allVals['name'][$i] == '') {
  322. $i++;
  323. }
  324. echo $allVals['rank'][$i];
  325. echo ".", " ";
  326. echo $allVals['name'][$i];
  327. echo ",";
  328. echo $allVals['perf'][$i];
  329. echo ",";
  330. echo $allVals['pb'][$i];
  331. echo ",";
  332. echo $allVals['dob'][$i];
  333. echo ",";
  334. echo $allVals['coach'][$i];
  335. echo ",";
  336. echo $allVals['club'][$i];
  337. echo ",";
  338. echo $allVals['venue'][$i];
  339. echo nl2br("\n");
  340.  
  341. }
  342. }
  343.  
  344. function sqlDb($allVals, $counter) {
  345.  
  346. $servername = "localhost";
  347. $username = "root";
  348. $password = "bleach390";
  349. $dbname = "mydb";
  350. $table = 'rankData';
  351.  
  352. //Connecting to DB using PDO
  353. try {
  354. $dbh = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  355. /*** echo a message saying we have connected ***/
  356. echo "Connected to DB \n";
  357. }
  358. catch(PDOException $e){
  359. echo $e->getMessage();
  360. }
  361.  
  362. try {
  363. //Create Table
  364. $sql = "CREATE TABLE rankData (
  365. rank INT(4),
  366. name VARCHAR(30),
  367. perf VARCHAR(10),
  368. pb VARCHAR(10),
  369. dob VARCHAR(10),
  370. coach VARCHAR(10),
  371. club VARCHAR(30),
  372. venue VARCHAR(30),
  373. pbdate VARCHAR(30)
  374. )";
  375.  
  376. $dbh->exec($sql);
  377. print("Created rankData Table. \n");
  378. } catch (PDOException $e){
  379. echo $e->getMessage();
  380. }
  381. /*** INSERT data***/
  382.  
  383. if (is_array($allVals)) {
  384.  
  385. $sql2 = "INSERT INTO rankData (rank, name, perf, pb, dob, coach, club, venue, pbdate) VALUES ";
  386.  
  387. foreach ($allVals as $row) {
  388.  
  389. $rank = (int) $row['rank'];
  390. $name = ($row['name']);
  391. $perf = ($row['perf']);
  392. $pb = ($row['pb']);
  393. $dob = ($row['dob']);
  394. $coach = ($row['coach']);
  395. $club = ($row['club']);
  396. $venue = ($row['venue']);
  397. $pbdate = ($row['pbdate']);
  398.  
  399. $valuesArr[] = "([0],[1],[2],[3],[4],[5],[6],[7],[8])";
  400. }
  401.  
  402. $sql2 .= implode(',', $valuesArr);
  403.  
  404. $dbh->exec($sql2);
  405. //mysql_query($sql2) or exit(mysql_error());
  406. }
  407.  
  408.  
  409. /*** close the database connection ***/
  410. try {
  411. $dbh = null;
  412. }
  413. catch(PDOException $e)
  414. {
  415. echo $e->getMessage();
  416. }
  417.  
  418. }
  419.  
  420.  
  421. //Get everything ready
  422. main($url);
  423. //parse then store all the information in arrays
  424. $allVals = parse($dom, $athletes);
  425. //print all of the info for one person
  426. display($allVals, $counter);
  427.  
  428. sqlDb($allVals, $counter);
  429. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement