- uppgift5_1.php :
- <?php
- $ordsprak[0] = "Alla sätt är bra utom de dåliga.";
- $ordsprak[1] = "Bakom varje framgångsrik man står en kvinna.";
- $ordsprak[2] = "Den som gapar efter mycket mister ofta hela stycket.";
- $ordsprak[3] = "Efter regn kommer solsken.";
- $ordsprak[4] = "Finns det hjärterum så finns det stjärterum.";
- $ordsprak[5] = "Gammal kärlek rostar aldrig.";
- $ordsprak[6] = "Har man sagt A får man säga B.";
- $ordsprak[7] = "I nöden prövas vännen.";
- $ordsprak[8] = "Ju senare på kvällen, desto vackrare folk.";
- $ordsprak[9] = "Kasta inte sten i glashus.";
- $ordsprak[10] = "Lika barn leka bäst.";
- $ordsprak[11] = "Man får ta seden dit man kommer.";
- $ordsprak[12] = "När den rike magrar, dör den fattige.";
- $ordsprak[13] = "Om en blind leder en blind, så faller de båda i gropen.";
- $ordsprak[14] = "Pengar växer inte på träd.";
- $ordsprak[15] = "Rom byggdes inte på en dag.";
- $ordsprak[16] = "Skam den som ger sig.";
- $ordsprak[17] = "Tala är silver, tiga är guld.";
- $ordsprak[18] = "Upprepning är kunskaps moder.";
- $ordsprak[19] = "Varför gå på berg när det finns småsten?";
- $ordsprak[20] = "Åsnan känns igen på öronen, den dumme på sina ord.";
- $ordsprak[21] = "Äras den som äras bör.";
- $ordsprak[22] = "Övning ger färdighet.";
- $ordsprak[23] = "Anfall är bästa försvar.";
- $ordsprak[24] = "Bättre fly än illa fäkta.";
- $ordsprak[25] = "Den som viskar han ljuger.";
- $ordsprak[26] = "Ensam är stark.";
- $ordsprak[27] = "Först till kvarn får först mala.";
- $ordsprak[28] = "Gör om, gör rätt.";
- $ordsprak[29] = "Hämnden är ljuv.";
- $ordsprak[30] = "Inget varar för evigt.";
- $datum = date("d")-1;
- $dagens_ordsprak = $ordsprak[$datum];
- header("Content-Type: application/rss+xml; charset=UTF-8");
- $rssFeed = '<?xml version="1.0" encoding="UTF-8"?>';
- $rssFeed .= '<rss version="2.0">';
- $rssFeed .= '<channel>';
- $rssFeed .= '<title>Example RSS feed</title>';
- $rssFeed .= '<link>http://localhost/uppgift5_1.php</link>';
- $rssFeed .= '<description>This is an example RSS feed called for at ' . date("d-m-Y") . '</description>';
- $rssFeed .= '<language>sv</language>';
- $rssFeed .= '<copyright>Created 2011 by Stephanie Kruuse</copyright>';
- $rssFeed .= '<item>';
- $rssFeed .= '<title>Example feed</title>';
- $rssFeed .= '<description>';
- $rssFeed .= 'Dagens ordspråk ' . $dagens_ordsprak;
- $rssFeed .= '</description>';
- $rssFeed .= '<link>LINK</link>';
- $rssFeed .= '<pubDate>' . date("d-m-Y") . '</pubDate>';
- $rssFeed .= '</item>';
- $rssFeed .= '</channel>';
- $rssFeed .= '</rss>';
- echo $rssFeed;
- ?>
- uppgift5_2.txt :
- 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;}
- uppgift5_2.php :
- <?php
- //Skapar ett nytt objekt
- $rating = new ratings($_POST['widget_id']);
- //Returnerar antingen alla röster eller en viss röst.
- isset($_POST['fetch']) ? $rating->get_ratings() : $rating->vote();
- //Skapar en ny klass
- class ratings {
- //Pekar på textfilen där datan sparas.
- private $data_file = './uppgift5_2.txt';
- private $widget_id;
- private $data = array();
- //Kallas när objektet överst skapas och sparar ID till widgeten.
- function __construct($wid) {
- $this->widget_id = $wid;
- //Laddar textfilen
- $all = file_get_contents($this->data_file);
- if($all) {
- //Tar datan från textfilen och konverterar innehållet så det kan läsas och sparas i en array.
- $this->data = unserialize($all);
- }
- }
- //Letar upp data för ett visst widgetID och returnerar detta.
- public function get_ratings() {
- //kollar om arrayen som skapades förut är samma som widgetID och returnerar resultatet.
- if($this->data[$this->widget_id]) {
- echo json_encode($this->data[$this->widget_id]);
- }
- else {
- $data['widget_id'] = $this->widget_id;
- $data['number_votes'] = 0;
- $data['total_points'] = 0;
- $data['dec_avg'] = 0;
- $data['whole_avg'] = 0;
- echo json_encode($data);
- }
- }
- //behandlar nya röster
- public function vote() {
- preg_match('/star_([1-5]{1})/', $_POST['clicked_on'], $match);
- $vote = $match[1];
- $ID = $this->widget_id;
- //kollar om allt stämmer och lägger därefter till en röst.
- if($this->data[$ID]) {
- $this->data[$ID]['number_votes'] += 1;
- $this->data[$ID]['total_points'] += $vote;
- }
- //Skapar en ny om det inte redan finns.
- else {
- $this->data[$ID]['number_votes'] = 1;
- $this->data[$ID]['total_points'] = $vote;
- }
- //räknar ut medelvärdet och avrundar det till heltal.
- $this->data[$ID]['dec_avg'] = round( $this->data[$ID]['total_points'] / $this->data[$ID]['number_votes'], 1 );
- $this->data[$ID]['whole_avg'] = round( $this->data[$ID]['dec_avg'] );
- //skriver över den nya information med de nya rösterna.
- file_put_contents($this->data_file, serialize($this->data));
- $this->get_ratings();
- }
- }
- ?>
- uppgift5_2.html :
- <!DOCTYPE html>
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="uppgift5_2.css" />
- <script src="http://code.jquery.com/jquery-latest.js"></script>
- <script>
- $(document).ready(function(){
- //Följande kod hämtar information om en speciell widget, vilken widget vi vill åt berättar vi med ID.
- $('.rate_widget').each(function(i) {
- var widget = this;
- var out_data = {
- widget_id : $(widget).attr('id'),
- fetch: 1
- };
- $.post(
- 'uppgift5_2.php',
- out_data,
- function(INFO) {
- $(widget).data( 'fsr', INFO );
- set_votes(widget);
- },
- 'json'
- );
- });
- $('.ratings_stars').hover(
- //Hanterar vad som händer vid mouseover
- function() {
- $(this).prevAll().andSelf().addClass('ratings_over');
- $(this).nextAll().removeClass('ratings_vote');
- },
- function() {
- //Hanterar vad som händer vid mouseout
- $(this).prevAll().andSelf().removeClass('ratings_over');
- set_votes($(this).parent());
- }
- );
- //klickhanterare som registrerar när en användare röstar och skickar det vidare för räkning.
- $('.ratings_stars').bind('click', function() {
- var star = this;
- var widget = $(this).parent();
- var clicked_data = {
- clicked_on : $(star).attr('class'),
- widget_id : widget.attr('id')
- };
- $.post(
- 'uppgift5_2.php',
- clicked_data,
- function(INFO) {
- widget.data( 'fsr', INFO );
- set_votes(widget);
- },
- 'json'
- );
- });
- });
- function set_votes(widget) {
- //representerar medelvärdet.
- var avg = $(widget).data('fsr').whole_avg;
- //ungefär som raden innan, kollar om medelvärdet ändrats sen föregående röst
- var votes = $(widget).data('fsr').number_votes;
- //Uppdaterar info om medelvärdet så att användaren ser.
- var exact = $(widget).data('fsr').dec_avg;
- $(widget).find('.star_' + avg).prevAll().andSelf().addClass('ratings_vote');
- $(widget).find('.star_' + avg).nextAll().removeClass('ratings_vote');
- $(widget).find('.total_votes').text( votes + ' votes recorded (' + exact + ' rating)' );
- }
- </script>
- <div class='bild'>
- <img src="Liisa.jpg" width="350" height="500" /><br />
- <p>Rate the picture.</p>
- <div id="rate" class="rate_widget">
- <div class="star_1 ratings_stars"></div>
- <div class="star_2 ratings_stars"></div>
- <div class="star_3 ratings_stars"></div>
- <div class="star_4 ratings_stars"></div>
- <div class="star_5 ratings_stars"></div>
- <div class="total_votes">röster</div>
- </div>
- </div>
- </head>
- </html>
- uppgift5_2.css :
- .rate_widget{
- border: 1px solid #CCC;
- overflow: visible;
- padding: 10px;
- position: relative;
- width: 180px;
- height: 32px;
- margin-left: 50px;}
- .ratings_stars{
- background: url('star_empty.png') no-repeat;
- float: left;
- height: 28px;
- padding: 2px;
- width: 32px;}
- .ratings_vote{
- background: url('star_full.png') no-repeat;}
- .ratings_over{
- background: url('star_highlight.png') no-repeat;}
- .total_votes{
- background: #eaeaea;
- top: 58px;
- left: 0;
- padding: 5px;
- position: absolute;}
- .movie_choice{
- font: 10px verdana, sans-serif;
- margin: 0 auto 40px auto;
- width: 180px;}
- .bild{
- float: center;}
- p{
- margin-left: 50px;}