Advertisement
Destiny_1

Untitled

Nov 1st, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.70 KB | None | 0 0
  1. <html>
  2.   <head>
  3.     <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  4.     <meta name="keywords" content="Slevy, slevvý portál, zboží, obchod, zlevněné zboží, slevněné zboží, slevy, slevi, slevnit, zlevnit" />
  5.     <meta name="description" content="SLEVY - slevový portál">
  6.     <title>SLEVY</title>
  7.     <link rel="stylesheet" type="text/css" href="style.css">
  8.   </head>
  9. </html>
  10. <?php
  11.  
  12. function clearmysqli() {
  13. $mysqli = new mysqli("localhost","root","","slevy");
  14. $mysqli->set_charset("utf8");
  15.  
  16. $mysqli->query("TRUNCATE table zbozi");
  17. echo "Databáze úšpěšně vyčištěna.<br><br>";
  18.  
  19. $mysqli->close();
  20. }
  21.  
  22. //clearmysqli();
  23.  
  24. function feed($url,$id_feed){
  25.  global $pocet;
  26. $tag=array();
  27.  //swtich , podobné jako if ($id_feed==1)
  28. switch ($id_feed) {    
  29. //tady inicializujeme tagy v xml feedu
  30.    //hyperslevy
  31. case(1):      
  32. $tag['ID_ITEM']="ID";
  33. $tag['TITLE']="TITLE";
  34. $tag['IMAGE']="IMAGE";
  35. $tag['FINAL_PRICE']="FINAL_PRICE";
  36. $tag['ORIGINAL_PRICE']="ORIGINAL_PRICE";
  37. $tag['CURRENCY']="CURRENCY";
  38. $tag['DISCOUNT']="DISCOUNT";
  39. $tag['CUSTOMERS']="CUSTOMERS";
  40. $tag['MIN_CUSTOMERS']="MIN_CUSTOMERS";
  41. $tag['CATEGORY']="CATEGORY";
  42. $tag['MAX_CUSTOMERS']="MAX_CUSTOMERS";
  43. $tag['DEAL_START']="DEAL_START";
  44. $tag['DEAL_END']="DEAL_END";
  45. $item="DEAL";
  46.     break;
  47. //justjoy
  48. case(2):
  49. $tag['ID_ITEM']="id";
  50. $tag['TITLE']="title";
  51. $tag['IMAGE']="imageUrl";
  52. $tag['FINAL_PRICE']="ourPrice";
  53. $tag['ORIGINAL_PRICE']="originalPrice";
  54. $tag['CURRENCY']="currency";
  55. $tag['DISCOUNT']="discount";
  56. $tag['CUSTOMERS']="customers";
  57. $tag['MIN_CUSTOMERS']="minCustomers";
  58. $tag['CATEGORY']="CATEGORY";
  59. $tag['MAX_CUSTOMERS']="maxCustomers";
  60. $tag['DEAL_START']="dealStart";
  61. $tag['DEAL_END']="dealEnd";
  62. $item="deal";
  63.     break;
  64. }
  65. //tohle nám přehodí klíče na value a value na klíče... jinak by se to muselo definovat naopak a to by působilo zmateně
  66. $tag=array_flip($tag);
  67. //item je tag který odděluje jednotlivé položky
  68.  
  69. //spustíme knihovnu xmlreadru
  70. $xml = new XMLReader();
  71. $xml->open($url);
  72.  
  73. $pole=array();
  74. $pocet=0;
  75. //projedeme celý xml soubor, tag pro tagu
  76. while ($xml->read()) {
  77.    
  78.     //pokud současny element je konečný element položky ($item), odešleme proměnou pole do funkce uložit
  79.  if ($xml->nodeType == XMLReader::END_ELEMENT && $xml->name==$item) {  
  80.        ulozit($pole,$tag,$id_feed);
  81.        $pole=array();
  82.        $pocet++;
  83.  
  84. }
  85. //pokud současny element je tag ($tag) který sme se definovali hned na začátku funkce
  86.   if ($xml->nodeType == XMLReader::ELEMENT && isset($tag[$xml->name])) {
  87.       //tak uložíš obsah do pole, a jako klíč použiješ definovaný tag ($tag) na začátku funkce
  88.      $pole[$xml->name]=trim($xml->readString());
  89.   }
  90. }
  91. }
  92.  
  93.  function ulozit($polozky,$tag,$id_feed){  
  94. $mysqli = new mysqli("localhost","root","","cms");
  95. $mysqli->set_charset("utf8");
  96.  
  97. //pole musí byt v dotazu v uvozovkách+ ošetřime proti sql injection
  98. foreach ($polozky as $key=>$value) {
  99.     //nastavíme hodnotu z tagu
  100. $pole[$tag[$key]]="'".$mysqli->real_escape_string($value)."'";  
  101. }
  102. //pokud není vyplňený nejduležitejší tag, ukončíme funkci
  103. if (!isset($pole['ID_ITEM'])) {
  104. echo "Nebyl vyplňen povinný tag";
  105.  //konec  
  106. return;    
  107. }
  108. //ověříme zda li již existuje v databázi
  109. if ($row=$mysqli->query("SELECT ID FROM zbozi WHERE ID_ITEM=".$pole['ID_ITEM']." AND id_feed=".$id_feed)->fetch_assoc()) {
  110.    //projedeme znova cyklem protože jsem líný psát dlouhý sql dotaz na update
  111.     $query='';
  112.     foreach ($pole as $key=>$value) {
  113.     $query.=$key."=".$value.", ";    
  114.     }
  115.     //pokud ano proveď update
  116.    $sql=$mysqli->query("UPDATE zbozi SET ".$query."id_feed=$id_feed WHERE id=".$row['ID']);
  117.    
  118.  if (!$sql) {
  119.  //když se neuloží vypiš chybu  
  120. echo $mysqli->error;    
  121. }
  122. $idecko=$row['ID'];    
  123. } else {
  124.     //a tady už jen vypišeme všechny proměnné, v tvojem případě uložíš do databáze, ale to už zvladneš
  125. $pole['id_feed']=$id_feed;    
  126. $query=$mysqli->query("INSERT INTO zbozi (" . implode(", ", array_keys($pole)) . ") VALUES (" . implode(", ", $pole) . ")");
  127. $idecko=$mysqli->insert_id;
  128.  
  129. }
  130. echo "Položka ".$idecko." byla úspěšně uložena do databáze.<br>";
  131.  
  132. if (!$query) {
  133.  //když se neuloží vypiš chybu  
  134. echo $mysqli->error;    
  135. }
  136.  
  137. //echo $key." ".$value." ".strlen($value)."<br>";    
  138. $mysqli->close();
  139. }
  140. //echo "<br><br>";
  141.  
  142. //žádne časové limity na skript(nefunguje na wedosu)
  143. set_time_limit(0);
  144.  
  145. $feed=array(1=>"http://www.hyperslevy.cz/export/export.php",
  146.             2=>"http://www.justjoy.cz/feed/cj.xml"
  147.           );
  148.  
  149. foreach ($feed as $key=>$value){
  150. feed($value,$key);
  151. echo "<br>Do databáze bylo přidáno celkem ".$pocet." položek.";
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement