Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: StephanieKruuse on Jul 6th, 2012  |  syntax: None  |  size: 8.72 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. uppgift5_1.php :
  2. <?php
  3.  
  4. $ordsprak[0] = "Alla sätt är bra utom de dåliga.";
  5. $ordsprak[1] = "Bakom varje framgångsrik man står en kvinna.";
  6. $ordsprak[2] = "Den som gapar efter mycket mister ofta hela stycket.";
  7. $ordsprak[3] = "Efter regn kommer solsken.";
  8. $ordsprak[4] = "Finns det hjärterum så finns det stjärterum.";
  9. $ordsprak[5] = "Gammal kärlek rostar aldrig.";
  10. $ordsprak[6] = "Har man sagt A får man säga B.";
  11. $ordsprak[7] = "I nöden prövas vännen.";
  12. $ordsprak[8] = "Ju senare på kvällen, desto vackrare folk.";
  13. $ordsprak[9] = "Kasta inte sten i glashus.";
  14. $ordsprak[10] = "Lika barn leka bäst.";
  15. $ordsprak[11] = "Man får ta seden dit man kommer.";
  16. $ordsprak[12] = "När den rike magrar, dör den fattige.";
  17. $ordsprak[13] = "Om en blind leder en blind, så faller de båda i gropen.";
  18. $ordsprak[14] = "Pengar växer inte på träd.";
  19. $ordsprak[15] = "Rom byggdes inte på en dag.";
  20. $ordsprak[16] = "Skam den som ger sig.";
  21. $ordsprak[17] = "Tala är silver, tiga är guld.";
  22. $ordsprak[18] = "Upprepning är kunskaps moder.";
  23. $ordsprak[19] = "Varför gå på berg när det finns småsten?";
  24. $ordsprak[20] = "Åsnan känns igen på öronen, den dumme på sina ord.";
  25. $ordsprak[21] = "Äras den som äras bör.";
  26. $ordsprak[22] = "Övning ger färdighet.";
  27. $ordsprak[23] = "Anfall är bästa försvar.";
  28. $ordsprak[24] = "Bättre fly än illa fäkta.";
  29. $ordsprak[25] = "Den som viskar han ljuger.";
  30. $ordsprak[26] = "Ensam är stark.";
  31. $ordsprak[27] = "Först till kvarn får först mala.";
  32. $ordsprak[28] = "Gör om, gör rätt.";
  33. $ordsprak[29] = "Hämnden är ljuv.";
  34. $ordsprak[30] = "Inget varar för evigt.";
  35.  
  36. $datum = date("d")-1;
  37.  
  38. $dagens_ordsprak = $ordsprak[$datum];
  39.  
  40.  
  41.  
  42.  
  43.             header("Content-Type: application/rss+xml; charset=UTF-8");  
  44.          
  45.             $rssFeed = '<?xml version="1.0" encoding="UTF-8"?>';
  46.             $rssFeed .= '<rss version="2.0">';
  47.             $rssFeed .= '<channel>';
  48.             $rssFeed .= '<title>Example RSS feed</title>';
  49.             $rssFeed .= '<link>http://localhost/uppgift5_1.php</link>';
  50.             $rssFeed .= '<description>This is an example RSS feed called for at ' . date("d-m-Y") . '</description>';
  51.             $rssFeed .= '<language>sv</language>';
  52.             $rssFeed .= '<copyright>Created 2011 by Stephanie Kruuse</copyright>';
  53.          
  54.             $rssFeed .= '<item>';
  55.             $rssFeed .= '<title>Example feed</title>';
  56.             $rssFeed .= '<description>';
  57.  
  58.             $rssFeed .= 'Dagens ordspråk ' . $dagens_ordsprak;
  59.            
  60.             $rssFeed .= '</description>';
  61.             $rssFeed .= '<link>LINK</link>';
  62.             $rssFeed .= '<pubDate>' . date("d-m-Y") . '</pubDate>';
  63.             $rssFeed .= '</item>';
  64.          
  65.             $rssFeed .= '</channel>';
  66.             $rssFeed .= '</rss>';
  67.          
  68.             echo $rssFeed;
  69. ?>
  70.  
  71. uppgift5_2.txt :
  72. a:2:{s:2:"rate";a:5:{s:9:"widget_id";s:2:"r1";s:12:"number_votes";i:172;s:12:"total_points";i:553;s:7:"dec_avg";d:3.20000000000000017763568394002504646778106689453125;s:9:"whole_avg";d:3;}
  73.  
  74. uppgift5_2.php :
  75. <?php
  76.  
  77. //Skapar ett nytt objekt  
  78. $rating = new ratings($_POST['widget_id']);  
  79.  
  80. //Returnerar antingen alla röster eller en viss röst.
  81. isset($_POST['fetch']) ? $rating->get_ratings() : $rating->vote();  
  82.  
  83.  
  84. //Skapar en ny klass
  85. class ratings {  
  86.  
  87.     //Pekar på textfilen där datan sparas.
  88.         private $data_file = './uppgift5_2.txt';  
  89.     private $widget_id;  
  90.     private $data = array();  
  91.  
  92. //Kallas när objektet överst skapas och sparar ID till widgeten.
  93. function __construct($wid) {  
  94.  
  95.     $this->widget_id = $wid;  
  96.  
  97.    //Laddar textfilen
  98.   $all = file_get_contents($this->data_file);  
  99.  
  100.     if($all) {  
  101.                 //Tar datan från textfilen och konverterar innehållet så det kan läsas och sparas i en array.
  102.         $this->data = unserialize($all);  
  103.     }  
  104. }
  105.  
  106.  
  107. //Letar upp data för ett visst widgetID och returnerar detta.
  108. public function get_ratings() {  
  109.     //kollar om arrayen som skapades förut är samma som widgetID och returnerar resultatet.
  110.         if($this->data[$this->widget_id]) {  
  111.         echo json_encode($this->data[$this->widget_id]);  
  112.     }  
  113.     else {  
  114.         $data['widget_id'] = $this->widget_id;  
  115.         $data['number_votes'] = 0;  
  116.         $data['total_points'] = 0;  
  117.         $data['dec_avg'] = 0;  
  118.         $data['whole_avg'] = 0;  
  119.         echo json_encode($data);  
  120.     }  
  121. }
  122.  
  123. //behandlar nya röster
  124. public function vote() {    
  125.     preg_match('/star_([1-5]{1})/', $_POST['clicked_on'], $match);  
  126.     $vote = $match[1];
  127.        
  128.         $ID = $this->widget_id;  
  129. //kollar om allt stämmer och lägger därefter till en röst.  
  130. if($this->data[$ID]) {  
  131.     $this->data[$ID]['number_votes'] += 1;  
  132.     $this->data[$ID]['total_points'] += $vote;  
  133. }  
  134. //Skapar en ny om det inte redan finns.  
  135. else {  
  136.     $this->data[$ID]['number_votes'] = 1;  
  137.     $this->data[$ID]['total_points'] = $vote;  
  138. }
  139.  
  140. //räknar ut medelvärdet och avrundar det till heltal.
  141. $this->data[$ID]['dec_avg'] = round( $this->data[$ID]['total_points'] / $this->data[$ID]['number_votes'], 1 );  
  142.     $this->data[$ID]['whole_avg'] = round( $this->data[$ID]['dec_avg'] );  
  143.        
  144.         //skriver över den nya information med de nya rösterna.
  145.     file_put_contents($this->data_file, serialize($this->data));  
  146.     $this->get_ratings();  
  147. }
  148.  
  149. }
  150.  
  151.  
  152.  
  153.  
  154.  
  155. ?>
  156.  
  157.  
  158.  
  159.  
  160. uppgift5_2.html :
  161. <!DOCTYPE html>
  162. <html>
  163. <head>
  164. <link rel="stylesheet" type="text/css" href="uppgift5_2.css" />
  165.  
  166. <script src="http://code.jquery.com/jquery-latest.js"></script>
  167.  
  168. <script>
  169.  
  170. $(document).ready(function(){
  171.  
  172. //Följande kod hämtar information om en speciell widget, vilken widget vi vill åt berättar vi med ID.
  173. $('.rate_widget').each(function(i) {  
  174.     var widget = this;  
  175.     var out_data = {  
  176.         widget_id : $(widget).attr('id'),  
  177.         fetch: 1  
  178.     };  
  179.     $.post(  
  180.         'uppgift5_2.php',  
  181.         out_data,  
  182.         function(INFO) {  
  183.             $(widget).data( 'fsr', INFO );  
  184.             set_votes(widget);  
  185.         },  
  186.         'json'  
  187.     );  
  188. });
  189.  
  190.  
  191.  
  192. $('.ratings_stars').hover(
  193.         //Hanterar vad som händer vid mouseover
  194.     function() {  
  195.         $(this).prevAll().andSelf().addClass('ratings_over');  
  196.         $(this).nextAll().removeClass('ratings_vote');  
  197.     },  
  198.     function() {
  199.                 //Hanterar vad som händer vid mouseout
  200.         $(this).prevAll().andSelf().removeClass('ratings_over');  
  201.         set_votes($(this).parent());  
  202.     }  
  203. );
  204.  
  205.  
  206.  
  207.  
  208. //klickhanterare som registrerar när en användare röstar och skickar det vidare för räkning.
  209. $('.ratings_stars').bind('click', function() {  
  210.     var star = this;  
  211.     var widget = $(this).parent();  
  212.  
  213.     var clicked_data = {  
  214.         clicked_on : $(star).attr('class'),  
  215.         widget_id : widget.attr('id')  
  216.     };  
  217.     $.post(  
  218.         'uppgift5_2.php',  
  219.         clicked_data,  
  220.         function(INFO) {  
  221.             widget.data( 'fsr', INFO );  
  222.             set_votes(widget);  
  223.         },  
  224.         'json'  
  225.     );  
  226. });
  227.  
  228. });
  229.  
  230. function set_votes(widget) {  
  231.  
  232.         //representerar medelvärdet.
  233.     var avg = $(widget).data('fsr').whole_avg;  
  234.     //ungefär som raden innan, kollar om medelvärdet ändrats sen föregående röst
  235.         var votes = $(widget).data('fsr').number_votes;  
  236.         //Uppdaterar info om medelvärdet så att användaren ser.
  237.     var exact = $(widget).data('fsr').dec_avg;  
  238.  
  239.     $(widget).find('.star_' + avg).prevAll().andSelf().addClass('ratings_vote');  
  240.     $(widget).find('.star_' + avg).nextAll().removeClass('ratings_vote');  
  241.     $(widget).find('.total_votes').text( votes + ' votes recorded (' + exact + ' rating)' );  
  242. }
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250. </script>
  251.  
  252. <div class='bild'>
  253.         <img src="Liisa.jpg" width="350" height="500" /><br />
  254.         <p>Rate the picture.</p>
  255.                 <div id="rate" class="rate_widget">
  256.                         <div class="star_1 ratings_stars"></div>
  257.                         <div class="star_2 ratings_stars"></div>
  258.                         <div class="star_3 ratings_stars"></div>
  259.                         <div class="star_4 ratings_stars"></div>
  260.                         <div class="star_5 ratings_stars"></div>
  261.                         <div class="total_votes">röster</div>
  262.                 </div>
  263. </div>
  264. </head>
  265. </html>
  266.  
  267.  
  268. uppgift5_2.css :
  269. .rate_widget{
  270.         border: 1px solid #CCC;  
  271.     overflow: visible;  
  272.     padding: 10px;  
  273.     position: relative;  
  274.     width: 180px;  
  275.     height: 32px;
  276.     margin-left: 50px;}
  277.        
  278. .ratings_stars{  
  279.     background: url('star_empty.png') no-repeat;  
  280.     float: left;  
  281.     height: 28px;  
  282.     padding: 2px;  
  283.     width: 32px;}
  284.        
  285. .ratings_vote{  
  286.     background: url('star_full.png') no-repeat;}  
  287.  
  288. .ratings_over{  
  289.     background: url('star_highlight.png') no-repeat;}
  290.  
  291. .total_votes{  
  292.     background: #eaeaea;  
  293.     top: 58px;  
  294.     left: 0;  
  295.     padding: 5px;  
  296.     position: absolute;}  
  297.  
  298. .movie_choice{  
  299.     font: 10px verdana, sans-serif;  
  300.     margin: 0 auto 40px auto;  
  301.     width: 180px;}
  302.        
  303. .bild{
  304. float: center;}
  305.  
  306. p{
  307. margin-left: 50px;}